summaryrefslogtreecommitdiff
path: root/Jel/Controllers
diff options
context:
space:
mode:
authorShav Kinderlehrer <[email protected]>2023-12-15 10:41:00 -0500
committerShav Kinderlehrer <[email protected]>2023-12-15 10:41:00 -0500
commit2e3c12fed339c8bf3dc966217cbdf4c385fb98a1 (patch)
tree356a0bbfd24f98bf04545eb876cf20cd6179850e /Jel/Controllers
parent3994a6f408905049a5c280a303e30fe636b07968 (diff)
downloadjel-2e3c12fed339c8bf3dc966217cbdf4c385fb98a1.tar.gz
jel-2e3c12fed339c8bf3dc966217cbdf4c385fb98a1.zip
Add settings view + fix signin flow
Diffstat (limited to 'Jel/Controllers')
-rw-r--r--Jel/Controllers/JellyfinClientController.swift15
-rw-r--r--Jel/Controllers/SettingsController.swift44
2 files changed, 53 insertions, 6 deletions
diff --git a/Jel/Controllers/JellyfinClientController.swift b/Jel/Controllers/JellyfinClientController.swift
index 24d4615..424c044 100644
--- a/Jel/Controllers/JellyfinClientController.swift
+++ b/Jel/Controllers/JellyfinClientController.swift
@@ -62,24 +62,27 @@ class JellyfinClientController: ObservableObject {
})
}
- func isJellyfinServer() async -> Bool {
+ func getPublicServerInfo() async -> PublicSystemInfo? {
let request = Paths.getPublicSystemInfo
do {
let res = try await api.send(request)
if res.statusCode != 200 {
throw JellyfinClientError.badResponseCode
}
+
+ return res.value
} catch {
- return false
+ return nil
}
- return true
}
func signIn(username: String, pw: String) async throws {
let request = Paths.authenticateUserByName(AuthenticateUserByName(pw: pw, username: username))
let res = try await self.api.send(request)
- self.authState.loggedIn = true
- self.authState.authToken = res.value.accessToken
- self.authState.save()
+ DispatchQueue.main.async {
+ self.authState.loggedIn = true
+ self.authState.authToken = res.value.accessToken
+ self.authState.save()
+ }
}
}
diff --git a/Jel/Controllers/SettingsController.swift b/Jel/Controllers/SettingsController.swift
new file mode 100644
index 0000000..2b912c4
--- /dev/null
+++ b/Jel/Controllers/SettingsController.swift
@@ -0,0 +1,44 @@
+//
+// SettingsController.swift
+// Jel
+//
+// Created by zerocool on 12/13/23.
+//
+
+import Foundation
+
+enum AppearanceState: Int, CaseIterable, Identifiable, CustomStringConvertible {
+ case automatic
+ case light
+ case dark
+
+ var id: Self { self }
+
+ var description: String {
+ switch self {
+ case .light:
+ return "Light"
+ case .dark:
+ return "Dark"
+ case .automatic:
+ return "Automatic"
+ }
+ }
+}
+
+class SettingsController: ObservableObject {
+ static let shared: SettingsController = SettingsController()
+
+ @Published var appearance: AppearanceState = .automatic
+
+ private let defaults = UserDefaults.standard
+
+ func save() {
+ defaults.set(self.appearance.rawValue, forKey: "Settings_appearance")
+ }
+
+ func load() {
+ let oldAppearance = defaults.integer(forKey: "Settings_appearance")
+ self.appearance = AppearanceState(rawValue: oldAppearance) ?? .automatic
+ }
+}