From 20431a87eaa4b73bee35afee6f1cf6bea634d77b Mon Sep 17 00:00:00 2001 From: maxmoney21m Date: Sun, 12 Mar 2023 22:26:38 +0800 Subject: [PATCH] Use List instead of Set to keep account order --- .../amethyst/LocalPreferences.kt | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt b/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt index 31548102e..0d60e8885 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/LocalPreferences.kt @@ -54,6 +54,8 @@ private object PrefKeys { private val gson = GsonBuilder().create() object LocalPreferences { + private const val comma = "," + private var currentAccount: String? get() = encryptedPreferences().getString(PrefKeys.CURRENT_ACCOUNT, null) set(npub) { @@ -63,18 +65,21 @@ object LocalPreferences { }.apply() } - private val savedAccounts: Set - get() = encryptedPreferences().getStringSet(PrefKeys.SAVED_ACCOUNTS, null) ?: setOf() + private val savedAccounts: List + get() = encryptedPreferences() + .getString(PrefKeys.SAVED_ACCOUNTS, null)?.split(comma) ?: listOf() private val prefsDirPath: String get() = "${Amethyst.instance.filesDir.parent}/shared_prefs/" private fun addAccount(npub: String) { - val accounts = savedAccounts.toMutableSet() - accounts.add(npub) + val accounts = savedAccounts.toMutableList() + if (npub !in accounts) { + accounts.add(npub) + } val prefs = encryptedPreferences() prefs.edit().apply { - putStringSet(PrefKeys.SAVED_ACCOUNTS, accounts) + putString(PrefKeys.SAVED_ACCOUNTS, accounts.joinToString(comma)) }.apply() } @@ -92,12 +97,13 @@ object LocalPreferences { * Removes the account from the app level shared preferences */ private fun removeAccount(npub: String) { - val accounts = savedAccounts.toMutableSet() - accounts.remove(npub) - val prefs = encryptedPreferences() - prefs.edit().apply { - putStringSet(PrefKeys.SAVED_ACCOUNTS, accounts) - }.apply() + val accounts = savedAccounts.toMutableList() + if (accounts.remove(npub)) { + val prefs = encryptedPreferences() + prefs.edit().apply { + putString(PrefKeys.SAVED_ACCOUNTS, accounts.joinToString(comma)) + }.apply() + } } /**