fix: Use shared UserDefaults instead of standard set to fix self-host URL persistence bug.

This commit is contained in:
maa-x
2024-06-25 16:51:13 +01:00
parent 3c634d1c35
commit e04ae10fa4
2 changed files with 21 additions and 12 deletions

View File

@ -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

View File

@ -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")