summaryrefslogtreecommitdiff
path: root/Jel/Controllers/AuthStateController.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Jel/Controllers/AuthStateController.swift')
-rw-r--r--Jel/Controllers/AuthStateController.swift38
1 files changed, 38 insertions, 0 deletions
diff --git a/Jel/Controllers/AuthStateController.swift b/Jel/Controllers/AuthStateController.swift
new file mode 100644
index 0000000..1629556
--- /dev/null
+++ b/Jel/Controllers/AuthStateController.swift
@@ -0,0 +1,38 @@
+//
+// AuthStateController.swift
+// Jel
+//
+// Created by zerocool on 12/11/23.
+//
+
+import Foundation
+
+class AuthStateController: ObservableObject {
+ @Published var loggedIn: Bool
+ @Published var serverUrl: URL?
+ @Published var authToken: String?
+
+ private let defaults = UserDefaults.standard
+
+ init(loggedIn: Bool = false, serverUrl: URL? = nil, authToken: String? = nil) {
+ self.loggedIn = loggedIn
+ self.serverUrl = serverUrl
+ self.authToken = authToken
+ }
+
+ func load() {
+ self.loggedIn = defaults.bool(forKey: "AuthState_loggedIn")
+ if let oldServerUrl = defaults.url(forKey: "AuthState_serverUrl") {
+ self.serverUrl = oldServerUrl
+ }
+ if let oldAuthToken = defaults.string(forKey: "AuthState_authToken") {
+ self.authToken = oldAuthToken
+ }
+ }
+
+ func save() {
+ defaults.set(self.loggedIn, forKey: "AuthState_loggedIn")
+ defaults.set(self.serverUrl, forKey: "AuthState_serverUrl")
+ defaults.set(self.authToken, forKey: "AuthState_authToken")
+ }
+}