From c1f803bdd06fb00818549a318c104bdcca9b4044 Mon Sep 17 00:00:00 2001 From: ronaldheft Date: Fri, 26 Aug 2022 20:04:06 -0400 Subject: [PATCH] Fix configs sharing an index --- ios/App/App/plugins/AbsDatabase.swift | 2 +- ios/App/Shared/util/Database.swift | 48 +++++++++++++++++---------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/ios/App/App/plugins/AbsDatabase.swift b/ios/App/App/plugins/AbsDatabase.swift index 3a281277..43e1969b 100644 --- a/ios/App/App/plugins/AbsDatabase.swift +++ b/ios/App/App/plugins/AbsDatabase.swift @@ -43,7 +43,7 @@ public class AbsDatabase: CAPPlugin { let config = ServerConnectionConfig() config.id = id ?? "" - config.index = 1 + config.index = 0 config.name = name config.address = address config.userId = userId diff --git a/ios/App/Shared/util/Database.swift b/ios/App/Shared/util/Database.swift index 721f7121..6aaa919d 100644 --- a/ios/App/Shared/util/Database.swift +++ b/ios/App/Shared/util/Database.swift @@ -20,26 +20,38 @@ class Database { let realm = try! Realm() let existing: ServerConnectionConfig? = realm.object(ofType: ServerConnectionConfig.self, forPrimaryKey: config.id) - if config.index == 0 { - let lastConfig: ServerConnectionConfig? = realm.objects(ServerConnectionConfig.self).last - - if lastConfig != nil { - config.index = lastConfig!.index + 1 - } else { - config.index = 1 - } - } - - do { - try realm.write { - if existing != nil { - realm.delete(existing!) + if let existing = existing { + do { + try existing.update { + existing.name = config.name + existing.address = config.address + existing.userId = config.userId + existing.username = config.username + existing.token = config.token } - realm.add(config) + } catch { + NSLog("failed to update server config") + debugPrint(error) + } + } else { + if config.index == 0 { + let lastConfig: ServerConnectionConfig? = realm.objects(ServerConnectionConfig.self).last + + if lastConfig != nil { + config.index = lastConfig!.index + 1 + } else { + config.index = 1 + } + } + + do { + try realm.write { + realm.add(config) + } + } catch(let exception) { + NSLog("failed to save server config") + debugPrint(exception) } - } catch(let exception) { - NSLog("failed to save server config") - debugPrint(exception) } setLastActiveConfigIndex(index: config.index)