summaryrefslogtreecommitdiff
path: root/Jel/Controllers
diff options
context:
space:
mode:
Diffstat (limited to 'Jel/Controllers')
-rw-r--r--Jel/Controllers/AuthStateController.swift38
-rw-r--r--Jel/Controllers/DatamodelController.swift25
-rw-r--r--Jel/Controllers/JellyfinClientController.swift30
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
+ }
+}