Skip to content

Commit 6b507e0

Browse files
committed
refactor: injected StoragePersister in PreferenceManager<T> implementation
1 parent 4384927 commit 6b507e0

File tree

10 files changed

+46
-18
lines changed

10 files changed

+46
-18
lines changed

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/debugging/DefaultDebuggingSettingsPreferenceManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ import net.thunderbird.core.logging.LogLevelManager
1616
import net.thunderbird.core.logging.Logger
1717
import net.thunderbird.core.preference.storage.Storage
1818
import net.thunderbird.core.preference.storage.StorageEditor
19+
import net.thunderbird.core.preference.storage.StoragePersister
1920

2021
private const val TAG = "DefaultDebuggingSettingsPreferenceManager"
2122

2223
class DefaultDebuggingSettingsPreferenceManager(
2324
private val logger: Logger,
24-
private val storage: Storage,
25+
private val storagePersister: StoragePersister,
2526
private val storageEditor: StorageEditor,
2627
private val logLevelManager: LogLevelManager,
2728
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
@@ -30,6 +31,8 @@ class DefaultDebuggingSettingsPreferenceManager(
3031
) : DebuggingSettingsPreferenceManager {
3132
private val configState: MutableStateFlow<DebuggingSettings> = MutableStateFlow(value = loadConfig())
3233
private val mutex = Mutex()
34+
private val storage: Storage
35+
get() = storagePersister.loadValues()
3336

3437
override fun getConfig(): DebuggingSettings = configState.value
3538
override fun getConfigFlow(): Flow<DebuggingSettings> = configState

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/display/coreSettings/DefaultDisplayCoreSettingsPreferenceManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,24 @@ import kotlinx.coroutines.sync.withLock
1313
import net.thunderbird.core.logging.Logger
1414
import net.thunderbird.core.preference.storage.Storage
1515
import net.thunderbird.core.preference.storage.StorageEditor
16+
import net.thunderbird.core.preference.storage.StoragePersister
1617
import net.thunderbird.core.preference.storage.getEnumOrDefault
1718
import net.thunderbird.core.preference.storage.putEnum
1819

1920
private const val TAG = "DefaultDisplayCoreSettingsPreferenceManager"
2021

2122
class DefaultDisplayCoreSettingsPreferenceManager(
2223
private val logger: Logger,
23-
private val storage: Storage,
24+
private val storagePersister: StoragePersister,
2425
private val storageEditor: StorageEditor,
2526
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
2627
private var scope: CoroutineScope = CoroutineScope(SupervisorJob()),
2728
) : DisplayCoreSettingsPreferenceManager {
2829

2930
private val configState: MutableStateFlow<DisplayCoreSettings> = MutableStateFlow(value = loadConfig())
3031
private val mutex = Mutex()
32+
private val storage: Storage
33+
get() = storagePersister.loadValues()
3134

3235
override fun getConfig(): DisplayCoreSettings = configState.value
3336

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/display/inboxSettings/DefaultDisplayInboxSettingsPreferenceManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,22 @@ import kotlinx.coroutines.sync.withLock
1313
import net.thunderbird.core.logging.Logger
1414
import net.thunderbird.core.preference.storage.Storage
1515
import net.thunderbird.core.preference.storage.StorageEditor
16+
import net.thunderbird.core.preference.storage.StoragePersister
1617

1718
private const val TAG = "DefaultDisplayInboxSettingsPreferenceManager"
1819

1920
class DefaultDisplayInboxSettingsPreferenceManager(
2021
private val logger: Logger,
21-
private val storage: Storage,
22+
private val storagePersister: StoragePersister,
2223
private val storageEditor: StorageEditor,
2324
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
2425
private var scope: CoroutineScope = CoroutineScope(SupervisorJob()),
2526
) : DisplayInboxSettingsPreferenceManager {
2627

2728
private val configState: MutableStateFlow<DisplayInboxSettings> = MutableStateFlow(value = loadConfig())
2829
private val mutex = Mutex()
30+
private val storage: Storage
31+
get() = storagePersister.loadValues()
2932

3033
override fun getConfig(): DisplayInboxSettings = configState.value
3134

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/display/miscSettings/DefaultDisplayMiscSettingsPreferenceManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,21 @@ import kotlinx.coroutines.sync.withLock
1313
import net.thunderbird.core.logging.Logger
1414
import net.thunderbird.core.preference.storage.Storage
1515
import net.thunderbird.core.preference.storage.StorageEditor
16+
import net.thunderbird.core.preference.storage.StoragePersister
1617

1718
private const val TAG = "DefaultDisplayMiscSettingsPreferenceManager"
1819

1920
class DefaultDisplayMiscSettingsPreferenceManager(
2021
private val logger: Logger,
21-
private val storage: Storage,
22+
private val storagePersister: StoragePersister,
2223
private val storageEditor: StorageEditor,
2324
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
2425
private var scope: CoroutineScope = CoroutineScope(SupervisorJob()),
2526
) : DisplayMiscSettingsPreferenceManager {
2627
private val configState: MutableStateFlow<DisplayMiscSettings> = MutableStateFlow(value = loadConfig())
2728
private val mutex = Mutex()
29+
private val storage: Storage
30+
get() = storagePersister.loadValues()
2831
override fun save(config: DisplayMiscSettings) {
2932
logger.debug(TAG) { "save() called with: config = $config" }
3033
writeConfig(config)

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/display/visualSettings/DefaultDisplayVisualSettingsPreferenceManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ import net.thunderbird.core.logging.Logger
1818
import net.thunderbird.core.preference.display.visualSettings.message.list.MessageListPreferencesManager
1919
import net.thunderbird.core.preference.storage.Storage
2020
import net.thunderbird.core.preference.storage.StorageEditor
21+
import net.thunderbird.core.preference.storage.StoragePersister
2122
import net.thunderbird.core.preference.storage.getEnumOrDefault
2223
import net.thunderbird.core.preference.storage.putEnum
2324

2425
private const val TAG = "DefaultDisplayVisualSettingsPreferenceManager"
2526

2627
class DefaultDisplayVisualSettingsPreferenceManager(
2728
private val logger: Logger,
28-
private val storage: Storage,
29+
private val storagePersister: StoragePersister,
2930
private val storageEditor: StorageEditor,
3031
private val messageListPreferences: MessageListPreferencesManager,
3132
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
@@ -39,6 +40,8 @@ class DefaultDisplayVisualSettingsPreferenceManager(
3940
config.copy(messageListSettings = messageListConfig)
4041
}.stateIn(scope = scope, started = SharingStarted.Eagerly, initialValue = internalConfigState.value)
4142
private val mutex = Mutex()
43+
private val storage: Storage
44+
get() = storagePersister.loadValues()
4245

4346
override fun save(config: DisplayVisualSettings) {
4447
logger.debug(TAG) { "save() called with: config = $config" }

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/interaction/DefaultInteractionSettingsPreferenceManager.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,25 @@ import net.thunderbird.core.common.action.SwipeActions
1414
import net.thunderbird.core.logging.Logger
1515
import net.thunderbird.core.preference.storage.Storage
1616
import net.thunderbird.core.preference.storage.StorageEditor
17+
import net.thunderbird.core.preference.storage.StoragePersister
1718
import net.thunderbird.core.preference.storage.getEnumOrDefault
1819
import net.thunderbird.core.preference.storage.putEnum
1920

2021
private const val TAG = "DefaultInteractionSettingsPreferenceManager"
2122

2223
class DefaultInteractionSettingsPreferenceManager(
2324
private val logger: Logger,
24-
private val storage: Storage,
25+
private val storagePersister: StoragePersister,
2526
private val storageEditor: StorageEditor,
2627
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
2728
private var scope: CoroutineScope = CoroutineScope(SupervisorJob()),
2829
) : InteractionSettingsPreferenceManager {
2930
private val configState: MutableStateFlow<InteractionSettings> = MutableStateFlow(value = loadConfig())
3031
private val mutex = Mutex()
3132

33+
private val storage: Storage
34+
get() = storagePersister.loadValues()
35+
3236
override fun getConfig(): InteractionSettings = configState.value
3337
override fun getConfigFlow(): Flow<InteractionSettings> = configState
3438

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/network/DefaultNetworkSettingsPreferenceManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,23 @@ import kotlinx.coroutines.sync.withLock
1313
import net.thunderbird.core.logging.Logger
1414
import net.thunderbird.core.preference.storage.Storage
1515
import net.thunderbird.core.preference.storage.StorageEditor
16+
import net.thunderbird.core.preference.storage.StoragePersister
1617
import net.thunderbird.core.preference.storage.getEnumOrDefault
1718
import net.thunderbird.core.preference.storage.putEnum
1819

1920
private const val TAG = "DefaultNetworkSettingsPreferenceManager"
2021

2122
class DefaultNetworkSettingsPreferenceManager(
2223
private val logger: Logger,
23-
private val storage: Storage,
24+
private val storagePersister: StoragePersister,
2425
private val storageEditor: StorageEditor,
2526
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
2627
private var scope: CoroutineScope = CoroutineScope(SupervisorJob()),
2728
) : NetworkSettingsPreferenceManager {
2829
private val configState: MutableStateFlow<NetworkSettings> = MutableStateFlow(value = loadConfig())
2930
private val mutex = Mutex()
31+
private val storage: Storage
32+
get() = storagePersister.loadValues()
3033

3134
override fun getConfig(): NetworkSettings = configState.value
3235
override fun getConfigFlow(): Flow<NetworkSettings> = configState

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/notification/DefaultNotificationPreferenceManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,20 @@ import kotlinx.coroutines.sync.withLock
1313
import net.thunderbird.core.logging.Logger
1414
import net.thunderbird.core.preference.storage.Storage
1515
import net.thunderbird.core.preference.storage.StorageEditor
16+
import net.thunderbird.core.preference.storage.StoragePersister
1617

1718
private const val TAG = "DefaultNotificationPreferenceManager"
1819

1920
class DefaultNotificationPreferenceManager(
2021
private val logger: Logger,
21-
storage: Storage,
22+
private val storagePersister: StoragePersister,
2223
private val storageEditor: StorageEditor,
2324
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
2425
private var scope: CoroutineScope = CoroutineScope(SupervisorJob()),
2526
) : NotificationPreferenceManager {
2627
private val mutex = Mutex()
28+
private val storage: Storage
29+
get() = storagePersister.loadValues()
2730
private val configState = MutableStateFlow(
2831
value = NotificationPreference(
2932
isQuietTimeEnabled = storage.getBoolean(

core/preference/impl/src/commonMain/kotlin/net/thunderbird/core/preference/privacy/DefaultPrivacySettingsPreferenceManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,21 @@ import kotlinx.coroutines.sync.withLock
1313
import net.thunderbird.core.logging.Logger
1414
import net.thunderbird.core.preference.storage.Storage
1515
import net.thunderbird.core.preference.storage.StorageEditor
16+
import net.thunderbird.core.preference.storage.StoragePersister
1617

1718
private const val TAG = "DefaultPrivacySettingsPreferenceManager"
1819

1920
class DefaultPrivacySettingsPreferenceManager(
2021
private val logger: Logger,
21-
private val storage: Storage,
22+
private val storagePersister: StoragePersister,
2223
private val storageEditor: StorageEditor,
2324
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
2425
private var scope: CoroutineScope = CoroutineScope(SupervisorJob()),
2526
) : PrivacySettingsPreferenceManager {
2627
private val configState: MutableStateFlow<PrivacySettings> = MutableStateFlow(value = loadConfig())
2728
private val mutex = Mutex()
29+
private val storage: Storage
30+
get() = storagePersister.loadValues()
2831

2932
override fun getConfig(): PrivacySettings = configState.value
3033
override fun getConfigFlow(): Flow<PrivacySettings> = configState

legacy/core/src/main/java/com/fsck/k9/preferences/KoinModule.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,50 +52,50 @@ val preferencesModule = module {
5252
single<PrivacySettingsPreferenceManager> {
5353
DefaultPrivacySettingsPreferenceManager(
5454
logger = get(),
55-
storage = get<Preferences>().storage,
55+
storagePersister = get(),
5656
storageEditor = get<Preferences>().createStorageEditor(),
5757
)
5858
}
5959
single<NotificationPreferenceManager> {
6060
DefaultNotificationPreferenceManager(
6161
logger = get(),
62-
storage = get<Preferences>().storage,
62+
storagePersister = get(),
6363
storageEditor = get<Preferences>().createStorageEditor(),
6464
)
6565
}
6666
single<DisplayCoreSettingsPreferenceManager> {
6767
DefaultDisplayCoreSettingsPreferenceManager(
6868
logger = get(),
69-
storage = get<Preferences>().storage,
69+
storagePersister = get(),
7070
storageEditor = get<Preferences>().createStorageEditor(),
7171
)
7272
}
7373
single<DisplayInboxSettingsPreferenceManager> {
7474
DefaultDisplayInboxSettingsPreferenceManager(
7575
logger = get(),
76-
storage = get<Preferences>().storage,
76+
storagePersister = get(),
7777
storageEditor = get<Preferences>().createStorageEditor(),
7878
)
7979
}
8080
single<DisplayVisualSettingsPreferenceManager> {
8181
DefaultDisplayVisualSettingsPreferenceManager(
8282
logger = get(),
83-
storage = get<Preferences>().storage,
83+
storagePersister = get(),
8484
storageEditor = get<Preferences>().createStorageEditor(),
8585
messageListPreferences = get(),
8686
)
8787
}
8888
single<DisplayMiscSettingsPreferenceManager> {
8989
DefaultDisplayMiscSettingsPreferenceManager(
9090
logger = get(),
91-
storage = get<Preferences>().storage,
91+
storagePersister = get(),
9292
storageEditor = get<Preferences>().createStorageEditor(),
9393
)
9494
}
9595
single<InteractionSettingsPreferenceManager> {
9696
DefaultInteractionSettingsPreferenceManager(
9797
logger = get(),
98-
storage = get<Preferences>().storage,
98+
storagePersister = get(),
9999
storageEditor = get<Preferences>().createStorageEditor(),
100100
)
101101
}
@@ -118,14 +118,14 @@ val preferencesModule = module {
118118
single<NetworkSettingsPreferenceManager> {
119119
DefaultNetworkSettingsPreferenceManager(
120120
logger = get(),
121-
storage = get<Preferences>().storage,
121+
storagePersister = get(),
122122
storageEditor = get<Preferences>().createStorageEditor(),
123123
)
124124
}
125125
single<DebuggingSettingsPreferenceManager> {
126126
DefaultDebuggingSettingsPreferenceManager(
127127
logger = get(),
128-
storage = get<Preferences>().storage,
128+
storagePersister = get(),
129129
storageEditor = get<Preferences>().createStorageEditor(),
130130
logLevelManager = get(),
131131
platformConfigProvider = get(),

0 commit comments

Comments
 (0)