fix(iOS): preserve legacy data when Keychain write fails during migration

This commit is contained in:
Rocuts
2026-03-02 12:45:26 -05:00
parent 673d732dc6
commit ea47df92fa
2 changed files with 6 additions and 5 deletions

View File

@@ -223,11 +223,12 @@ enum GatewaySettingsStore {
defaults.removeObject(forKey: self.lastGatewayStableIDDefaultsKey)
}
private static func saveLastGatewayConnectionData(_ payload: LastGatewayConnectionData) {
@discardableResult
private static func saveLastGatewayConnectionData(_ payload: LastGatewayConnectionData) -> Bool {
guard let data = try? JSONEncoder().encode(payload),
let json = String(data: data, encoding: .utf8)
else { return }
_ = KeychainStore.saveString(
else { return false }
return KeychainStore.saveString(
json, service: self.gatewayService, account: self.lastGatewayConnectionAccount)
}
@@ -259,7 +260,7 @@ enum GatewaySettingsStore {
kind: kind, stableID: stableID, useTLS: useTLS,
host: kind == .manual ? host : nil,
port: kind == .manual ? port : nil)
self.saveLastGatewayConnectionData(payload)
guard self.saveLastGatewayConnectionData(payload) else { return }
self.removeLastGatewayDefaults(defaults)
}

View File

@@ -46,7 +46,7 @@ public enum GatewayTLSStore {
!existing.isEmpty
else { return }
if self.keychainLoad(account: stableID) == nil {
self.keychainSave(existing, account: stableID)
guard self.keychainSave(existing, account: stableID) else { return }
}
defaults.removeObject(forKey: legacyKey)
}