Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d83e2d19 authored by cketti's avatar cketti
Browse files

Pass settings descriptions and upgraders via constructor

parent 6da770f2
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ import static com.fsck.k9.preferences.upgrader.AccountSettingsUpgraderTo53.FOLDE

class AccountSettingsDescriptions {
    static final Map<String, TreeMap<Integer, SettingsDescription<?>>> SETTINGS;
    private static final Map<Integer, SettingsUpgrader> UPGRADERS;
    static final Map<Integer, SettingsUpgrader> UPGRADERS;

    static {
        Map<String, TreeMap<Integer, SettingsDescription<?>>> s = new LinkedHashMap<>();
@@ -302,10 +302,6 @@ class AccountSettingsDescriptions {
        return Settings.validate(version, SETTINGS, importedSettings, useDefaultValues);
    }

    public static Map<String, Object> upgrade(int version, Map<String, Object> validatedSettings) {
        return SettingsUpgradeHelper.upgrade(version, UPGRADERS, SETTINGS, validatedSettings);
    }

    public static Map<String, String> convert(Map<String, Object> settings) {
        return Settings.convert(settings, SETTINGS);
    }
+12 −2
Original line number Diff line number Diff line
@@ -4,15 +4,18 @@ internal class AccountSettingsUpgrader(
    private val identitySettingsUpgrader: IdentitySettingsUpgrader,
    private val folderSettingsUpgrader: FolderSettingsUpgrader,
    private val serverSettingsUpgrader: ServerSettingsUpgrader,
    private val latestVersion: Int = Settings.VERSION,
    private val settingsDescriptions: SettingsDescriptions = AccountSettingsDescriptions.SETTINGS,
    private val upgraders: Map<Int, SettingsUpgrader> = AccountSettingsDescriptions.UPGRADERS,
) {

    fun upgrade(contentVersion: Int, account: ValidatedSettings.Account): ValidatedSettings.Account {
        if (contentVersion == Settings.VERSION) {
        if (contentVersion == latestVersion) {
            return account
        }

        return account.copy(
            settings = AccountSettingsDescriptions.upgrade(contentVersion, account.settings),
            settings = upgradeAccountSettings(contentVersion, account.settings),
            incoming = serverSettingsUpgrader.upgrade(contentVersion, account.incoming),
            outgoing = serverSettingsUpgrader.upgrade(contentVersion, account.outgoing),
            identities = upgradeIdentities(contentVersion, account.identities),
@@ -20,6 +23,13 @@ internal class AccountSettingsUpgrader(
        )
    }

    private fun upgradeAccountSettings(
        contentVersion: Int,
        settings: InternalSettingsMap,
    ): InternalSettingsMap {
        return SettingsUpgradeHelper.upgrade(contentVersion, upgraders, settingsDescriptions, settings)
    }

    private fun upgradeIdentities(
        contentVersion: Int,
        identities: List<ValidatedSettings.Identity>,
+1 −5
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ import com.fsck.k9.preferences.Settings.V;

class FolderSettingsDescriptions {
    static final Map<String, TreeMap<Integer, SettingsDescription<?>>> SETTINGS;
    private static final Map<Integer, SettingsUpgrader> UPGRADERS;
    static final Map<Integer, SettingsUpgrader> UPGRADERS;

    static {
        Map<String, TreeMap<Integer, SettingsDescription<?>>> s = new LinkedHashMap<>();
@@ -57,10 +57,6 @@ class FolderSettingsDescriptions {
        return Settings.validate(version, SETTINGS, importedSettings, useDefaultValues);
    }

    public static Map<String, Object> upgrade(int version, Map<String, Object> validatedSettings) {
        return SettingsUpgradeHelper.upgrade(version, UPGRADERS, SETTINGS, validatedSettings);
    }

    public static Map<String, String> convert(Map<String, Object> settings) {
        return Settings.convert(settings, SETTINGS);
    }
+12 −3
Original line number Diff line number Diff line
package com.fsck.k9.preferences

internal class FolderSettingsUpgrader {
internal class FolderSettingsUpgrader(
    private val latestVersion: Int = Settings.VERSION,
    private val settingsDescriptions: SettingsDescriptions = FolderSettingsDescriptions.SETTINGS,
    private val upgraders: Map<Int, SettingsUpgrader> = FolderSettingsDescriptions.UPGRADERS,
) {
    fun upgrade(contentVersion: Int, folder: ValidatedSettings.Folder): ValidatedSettings.Folder {
        if (contentVersion == Settings.VERSION) {
        if (contentVersion == latestVersion) {
            return folder
        }

        val upgradedSettings = FolderSettingsDescriptions.upgrade(contentVersion, folder.settings)
        val upgradedSettings = SettingsUpgradeHelper.upgrade(
            contentVersion,
            upgraders,
            settingsDescriptions,
            folder.settings,
        )

        return folder.copy(settings = upgradedSettings)
    }
+1 −5
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ import com.fsck.k9.preferences.Settings.V;

class IdentitySettingsDescriptions {
    static final Map<String, TreeMap<Integer, SettingsDescription<?>>> SETTINGS;
    private static final Map<Integer, SettingsUpgrader> UPGRADERS;
    static final Map<Integer, SettingsUpgrader> UPGRADERS;

    static {
        Map<String, TreeMap<Integer, SettingsDescription<?>>> s = new LinkedHashMap<>();
@@ -50,10 +50,6 @@ class IdentitySettingsDescriptions {
        return Settings.validate(version, SETTINGS, importedSettings, useDefaultValues);
    }

    public static Map<String, Object> upgrade(int version, Map<String, Object> validatedSettings) {
        return SettingsUpgradeHelper.upgrade(version, UPGRADERS, SETTINGS, validatedSettings);
    }

    public static Map<String, String> convert(Map<String, Object> settings) {
        return Settings.convert(settings, SETTINGS);
    }
Loading