This commit is contained in:
Trey t
2023-06-25 22:00:59 -05:00
parent d055ed182d
commit f40c40c9bb
9 changed files with 220 additions and 87 deletions

View File

@@ -8,10 +8,19 @@
import Foundation
class UserStore: ObservableObject {
static let userDefaultsRegisteredUserKey = "registeredUserKey"
static let shared = UserStore()
@Published public private(set) var registeredUser: RegisteredUser?
init(registeredUser: RegisteredUser? = nil) {
self.registeredUser = registeredUser
if let data = UserDefaults.standard.data(forKey: UserStore.userDefaultsRegisteredUserKey),
let model = try? JSONDecoder().decode(RegisteredUser.self, from: data) {
self.registeredUser = model
}
}
public var token: String? {
guard let token = registeredUser?.token else {
return nil
@@ -19,19 +28,28 @@ class UserStore: ObservableObject {
return "Token \(token)"
}
func login(completion: @escaping (Bool)-> Void) {
let postData = ["email": "user1@user1.com", "password":"test12345"]
func login(postData: [String: Any], completion: @escaping (Bool)-> Void) {
LoginFetchable(postData: postData).fetch(completion: { result in
switch result {
case .success(let model):
self.registeredUser = model
completion(true)
DispatchQueue.main.async {
self.registeredUser = model
let data = try! JSONEncoder().encode(model)
UserDefaults.standard.set(data, forKey: UserStore.userDefaultsRegisteredUserKey)
completion(true)
}
case .failure(let failure):
completion(false)
}
})
}
func logout() {
self.registeredUser = nil
UserDefaults.standard.set(nil, forKey: UserStore.userDefaultsRegisteredUserKey)
NotificationCenter.default.post(name: NSNotification.Name("CreatedNewWorkout"), object: nil, userInfo: nil)
}
func setFakeUser() {
self.registeredUser = PreviewWorkout.parseRegisterdUser()
}