From 301f48816ecb01421dfc53a8787203e1fe16b073 Mon Sep 17 00:00:00 2001 From: Philippe Weidmann Date: Thu, 11 Jul 2024 11:23:30 +0200 Subject: [PATCH] fix: Account json migration Signed-off-by: Philippe Weidmann --- kDriveCore/Data/Cache/AccountManager.swift | 34 +++++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/kDriveCore/Data/Cache/AccountManager.swift b/kDriveCore/Data/Cache/AccountManager.swift index 5491a1516..5e780e683 100644 --- a/kDriveCore/Data/Cache/AccountManager.swift +++ b/kDriveCore/Data/Cache/AccountManager.swift @@ -352,20 +352,38 @@ public class AccountManager: RefreshTokenDelegate, AccountManageable { } public func loadAccounts() -> [Account] { - var accounts = [Account]() - if let groupDirectoryURL = FileManager.default + guard let groupDirectoryURL = FileManager.default .containerURL(forSecurityApplicationGroupIdentifier: AccountManager.appGroup)? - .appendingPathComponent("preferences", isDirectory: true) { + .appendingPathComponent("preferences", isDirectory: true) else { return [] } + let data: Data + do { + data = try Data(contentsOf: groupDirectoryURL.appendingPathComponent("accounts.json")) + } catch { + DDLogError("Error loading accounts \(error)") + return [] + } + + do { let decoder = JSONDecoder() + let savedAccounts = try decoder.decode([Account].self, from: data) + + return savedAccounts + } catch is DecodingError { do { - let data = try Data(contentsOf: groupDirectoryURL.appendingPathComponent("accounts.json")) - let savedAccounts = try decoder.decode([Account].self, from: data) - accounts = savedAccounts + let migrationDecoder = JSONDecoder() + migrationDecoder.keyDecodingStrategy = .convertFromSnakeCase + + let savedAccounts = try migrationDecoder.decode([Account].self, from: data) + + return savedAccounts } catch { - DDLogError("Error loading accounts \(error)") + DDLogError("Error migrating accounts \(error)") + return [] } + } catch { + DDLogError("Error loading accounts \(error)") + return [] } - return accounts } public func saveAccounts() {