diff options
Diffstat (limited to 'Jel/Controllers')
-rw-r--r-- | Jel/Controllers/AuthStateController.swift | 38 | ||||
-rw-r--r-- | Jel/Controllers/DatamodelController.swift | 25 | ||||
-rw-r--r-- | Jel/Controllers/JellyfinClientController.swift | 30 |
3 files changed, 93 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") + } +} diff --git a/Jel/Controllers/DatamodelController.swift b/Jel/Controllers/DatamodelController.swift new file mode 100644 index 0000000..4beb173 --- /dev/null +++ b/Jel/Controllers/DatamodelController.swift @@ -0,0 +1,25 @@ +// +// DatamodelController.swift +// Jel +// +// Created by zerocool on 12/11/23. +// + +import CoreData + +struct DatamodelController { + static let shared = DatamodelController() + + let container: NSPersistentContainer + + init() { + container = NSPersistentContainer(name: "Model") + + container.loadPersistentStores(completionHandler: {(storeDescription, error) in + if let error = error as NSError? { + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + container.viewContext.automaticallyMergesChangesFromParent = true + } +} diff --git a/Jel/Controllers/JellyfinClientController.swift b/Jel/Controllers/JellyfinClientController.swift new file mode 100644 index 0000000..343efe1 --- /dev/null +++ b/Jel/Controllers/JellyfinClientController.swift @@ -0,0 +1,30 @@ +// +// JellyfinClientController.swift +// Jel +// +// Created by zerocool on 12/12/23. +// + +import Foundation +import Get +import JellyfinKit + +class JellyfinClientController { + let api: APIClient + + init(serverUrl: URL) { + self.api = APIClient( + baseURL: serverUrl + ) + } + + func isJellyfinServer() async -> Bool { + let request = Paths.getPublicUsers + do { + try await api.send(request) + } catch { + return false + } + return true + } +} |