From e04ae10fa47f2442f288a64b2b4d3c3cb6b167d1 Mon Sep 17 00:00:00 2001 From: maa-x <3678587+maa-x@users.noreply.github.com> Date: Tue, 25 Jun 2024 16:51:13 +0100 Subject: [PATCH] fix: Use shared UserDefaults instead of standard set to fix self-host URL persistence bug. --- .../App/Views/SelfHostSettingsView.swift | 6 ++--- .../Sources/Models/AppEnvironment.swift | 27 ++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/apple/OmnivoreKit/Sources/App/Views/SelfHostSettingsView.swift b/apple/OmnivoreKit/Sources/App/Views/SelfHostSettingsView.swift index 23dab3ccd..4d7a57dae 100644 --- a/apple/OmnivoreKit/Sources/App/Views/SelfHostSettingsView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/SelfHostSettingsView.swift @@ -10,9 +10,9 @@ class SelfHostSettingsViewModel: ObservableObject { } struct SelfHostSettingsView: View { - @State var apiServerAddress = UserDefaults.standard.string(forKey: AppEnvironmentUserDefaultKey.serverBaseURL.rawValue) ?? "" - @State var webServerAddress = UserDefaults.standard.string(forKey: AppEnvironmentUserDefaultKey.webAppBaseURL.rawValue) ?? "" - @State var ttsServerAddress = UserDefaults.standard.string(forKey: AppEnvironmentUserDefaultKey.ttsBaseURL.rawValue) ?? "" + @State var apiServerAddress = UserDefaults(suiteName: "group.app.omnivoreapp").string(forKey: AppEnvironmentUserDefaultKey.serverBaseURL.rawValue) ?? "" + @State var webServerAddress = UserDefaults(suiteName: "group.app.omnivoreapp").string(forKey: AppEnvironmentUserDefaultKey.webAppBaseURL.rawValue) ?? "" + @State var ttsServerAddress = UserDefaults(suiteName: "group.app.omnivoreapp").string(forKey: AppEnvironmentUserDefaultKey.ttsBaseURL.rawValue) ?? "" @State var showConfirmAlert = false diff --git a/apple/OmnivoreKit/Sources/Models/AppEnvironment.swift b/apple/OmnivoreKit/Sources/Models/AppEnvironment.swift index b33056036..18491c855 100644 --- a/apple/OmnivoreKit/Sources/Models/AppEnvironment.swift +++ b/apple/OmnivoreKit/Sources/Models/AppEnvironment.swift @@ -40,15 +40,18 @@ public enum AppEnvironmentUserDefaultKey: String { public extension AppEnvironment { static func setCustom(serverBaseURL: String, webAppBaseURL: String, ttsBaseURL: String) { - UserDefaults.standard.set( + guard let sharedDefaults = UserDefaults(suiteName: "group.app.omnivoreapp") else { + fatalError("Could not create shared user defaults") + } + sharedDefaults.set( serverBaseURL.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines), forKey: AppEnvironmentUserDefaultKey.serverBaseURL.rawValue ) - UserDefaults.standard.set( + sharedDefaults.set( webAppBaseURL.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines), forKey: AppEnvironmentUserDefaultKey.webAppBaseURL.rawValue ) - UserDefaults.standard.set( + sharedDefaults.set( ttsBaseURL.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines), forKey: AppEnvironmentUserDefaultKey.ttsBaseURL.rawValue ) @@ -56,11 +59,14 @@ public extension AppEnvironment { var environmentConfigured: Bool { if self == .custom { - if let str = UserDefaults.standard.string(forKey: AppEnvironmentUserDefaultKey.webAppBaseURL.rawValue), let url = URL(string: str) { - return true - } else { + guard + let sharedDefaults = UserDefaults(suiteName: "group.app.omnnivoreapp"), + let str = sharedDefaults.string(forKey: AppEnvironmentUserDefaultKey.serverBaseURL.rawValue), + let url = URL(string: str) + else { return false } + return true } return true } @@ -94,7 +100,8 @@ public extension AppEnvironment { return URL(string: "http://localhost:4000")! case .custom: guard - let str = UserDefaults.standard.string(forKey: AppEnvironmentUserDefaultKey.serverBaseURL.rawValue), + let sharedDefaults = UserDefaults(suiteName: "group.app.omnnivoreapp"), + let str = sharedDefaults.string(forKey: AppEnvironmentUserDefaultKey.serverBaseURL.rawValue), let url = URL(string: str) else { fatalError("custom serverBaseURL not set") @@ -113,7 +120,8 @@ public extension AppEnvironment { return URL(string: "http://localhost:3000")! case .custom: guard - let str = UserDefaults.standard.string(forKey: AppEnvironmentUserDefaultKey.webAppBaseURL.rawValue), + let sharedDefaults = UserDefaults(suiteName: "group.app.omnnivoreapp"), + let str = sharedDefaults.string(forKey: AppEnvironmentUserDefaultKey.webAppBaseURL.rawValue), let url = URL(string: str) else { fatalError("custom webAppBaseURL not set") @@ -132,7 +140,8 @@ public extension AppEnvironment { return URL(string: "http://localhost:8080")! case .custom: guard - let str = UserDefaults.standard.string(forKey: AppEnvironmentUserDefaultKey.ttsBaseURL.rawValue), + let sharedDefaults = UserDefaults(suiteName: "group.app.omnnivoreapp"), + let str = sharedDefaults.string(forKey: AppEnvironmentUserDefaultKey.ttsBaseURL.rawValue), let url = URL(string: str) else { fatalError("custom ttsBaseURL not set")