From a7424cc428666d6db28086ecea3d44dd3aba277d Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Tue, 2 Aug 2022 17:10:45 -0400 Subject: [PATCH] Fix persisting active config --- ios/App/App/plugins/AbsDatabase.swift | 2 +- .../Shared/models/ServerConnectionConfig.swift | 6 +++++- ios/App/Shared/util/Database.swift | 17 ++++++----------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/ios/App/App/plugins/AbsDatabase.swift b/ios/App/App/plugins/AbsDatabase.swift index 518f79ff..fdc3bab6 100644 --- a/ios/App/App/plugins/AbsDatabase.swift +++ b/ios/App/App/plugins/AbsDatabase.swift @@ -40,7 +40,7 @@ public class AbsDatabase: CAPPlugin { id = "\(address)@\(username)".toBase64() } - let config = ServerConnectionConfig(id: id!, index: 0, name: name, address: address, userId: userId, username: username, token: token) + let config = ServerConnectionConfig(id: id!, index: 1, name: name, address: address, userId: userId, username: username, token: token) Store.serverConfig = config call.resolve(convertServerConnectionConfigToJSON(config: config)) diff --git a/ios/App/Shared/models/ServerConnectionConfig.swift b/ios/App/Shared/models/ServerConnectionConfig.swift index 95ed644f..117500fc 100644 --- a/ios/App/Shared/models/ServerConnectionConfig.swift +++ b/ios/App/Shared/models/ServerConnectionConfig.swift @@ -11,7 +11,7 @@ import Unrealm struct ServerConnectionConfig: Realmable { var id: String = UUID().uuidString - var index: Int = 0 + var index: Int = 1 var name: String = "" var address: String = "" var userId: String = "" @@ -30,6 +30,10 @@ struct ServerConnectionConfig: Realmable { struct ServerConnectionConfigActiveIndex: Realmable { // This could overflow, but you really would have to try var index: Int? + + static func primaryKey() -> String? { + return "index" + } } func convertServerConnectionConfigToJSON(config: ServerConnectionConfig) -> Dictionary { diff --git a/ios/App/Shared/util/Database.swift b/ios/App/Shared/util/Database.swift index 7bc6afc1..fac3f342 100644 --- a/ios/App/Shared/util/Database.swift +++ b/ios/App/Shared/util/Database.swift @@ -76,21 +76,16 @@ class Database { } } - public func setLastActiveConfigIndexToNil() { - Database.realmQueue.sync { - setLastActiveConfigIndex(index: nil) - } + private func setLastActiveConfigIndexToNil() { + setLastActiveConfigIndex(index: nil) } - public func setLastActiveConfigIndex(index: Int?) { - let existing = instance.objects(ServerConnectionConfigActiveIndex.self) - var obj = ServerConnectionConfigActiveIndex() - obj.index = index - + private func setLastActiveConfigIndex(index: Int?) { do { try instance.write { - instance.delete(existing) - instance.add(obj) + var existing = instance.objects(ServerConnectionConfigActiveIndex.self).last ?? ServerConnectionConfigActiveIndex(index: index) + existing.index = index + instance.add(existing, update: .modified) } } catch(let exception) { NSLog("failed to save server config active index")