From 0857d96f7a8de61616c145b63b0c7e965e061643 Mon Sep 17 00:00:00 2001 From: cketti Date: Mon, 17 Jun 2024 17:00:53 +0200 Subject: [PATCH] Extract `ServerSettingsUpgrader` --- .../k9/preferences/AccountSettingsUpgrader.kt | 3 +++ .../k9/preferences/ServerSettingsUpgrader.kt | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 app/core/src/main/java/com/fsck/k9/preferences/ServerSettingsUpgrader.kt diff --git a/app/core/src/main/java/com/fsck/k9/preferences/AccountSettingsUpgrader.kt b/app/core/src/main/java/com/fsck/k9/preferences/AccountSettingsUpgrader.kt index 56515164d0..ba1facdc5a 100644 --- a/app/core/src/main/java/com/fsck/k9/preferences/AccountSettingsUpgrader.kt +++ b/app/core/src/main/java/com/fsck/k9/preferences/AccountSettingsUpgrader.kt @@ -3,6 +3,7 @@ package com.fsck.k9.preferences internal class AccountSettingsUpgrader { private val identitySettingsUpgrader = IdentitySettingsUpgrader() private val folderSettingsUpgrader = FolderSettingsUpgrader() + private val serverSettingsUpgrader = ServerSettingsUpgrader() fun upgrade(contentVersion: Int, account: ValidatedSettings.Account): ValidatedSettings.Account { val validatedSettings = account.settings.toMutableMap() @@ -12,6 +13,8 @@ internal class AccountSettingsUpgrader { return account.copy( settings = validatedSettings.toMap(), + incoming = serverSettingsUpgrader.upgrade(contentVersion, account.incoming), + outgoing = serverSettingsUpgrader.upgrade(contentVersion, account.outgoing), identities = upgradeIdentities(contentVersion, account.identities), folders = upgradeFolders(contentVersion, account.folders), ) diff --git a/app/core/src/main/java/com/fsck/k9/preferences/ServerSettingsUpgrader.kt b/app/core/src/main/java/com/fsck/k9/preferences/ServerSettingsUpgrader.kt new file mode 100644 index 0000000000..85a6b1ec5f --- /dev/null +++ b/app/core/src/main/java/com/fsck/k9/preferences/ServerSettingsUpgrader.kt @@ -0,0 +1,22 @@ +package com.fsck.k9.preferences + +internal class ServerSettingsUpgrader( + private val serverSettingsDescriptions: ServerSettingsDescriptions = ServerSettingsDescriptions(), +) { + fun upgrade(contentVersion: Int, server: ValidatedSettings.Server): ValidatedSettings.Server { + if (contentVersion == Settings.VERSION) { + return server + } + + val settings = server.settings.toMutableMap() + + Settings.upgrade( + contentVersion, + serverSettingsDescriptions.upgraders, + serverSettingsDescriptions.settings, + settings, + ) + + return server.copy(settings = settings.toMap()) + } +}