Skip to content

Commit 27b1acb

Browse files
committed
fix: importing settings causes loss of the expected imported values
1 parent 6b507e0 commit 27b1acb

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import kotlinx.coroutines.launch
1515
import kotlinx.coroutines.sync.Mutex
1616
import kotlinx.coroutines.sync.withLock
1717
import net.thunderbird.core.logging.Logger
18+
import net.thunderbird.core.preference.PreferenceChangeBroker
19+
import net.thunderbird.core.preference.PreferenceChangeSubscriber
1820
import net.thunderbird.core.preference.display.visualSettings.message.list.MessageListPreferencesManager
1921
import net.thunderbird.core.preference.storage.Storage
2022
import net.thunderbird.core.preference.storage.StorageEditor
@@ -28,10 +30,15 @@ class DefaultDisplayVisualSettingsPreferenceManager(
2830
private val logger: Logger,
2931
private val storagePersister: StoragePersister,
3032
private val storageEditor: StorageEditor,
33+
preferenceChangeBroker: PreferenceChangeBroker,
3134
private val messageListPreferences: MessageListPreferencesManager,
3235
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
3336
private val scope: CoroutineScope = CoroutineScope(SupervisorJob()),
34-
) : DisplayVisualSettingsPreferenceManager {
37+
) : DisplayVisualSettingsPreferenceManager, PreferenceChangeSubscriber {
38+
39+
init {
40+
preferenceChangeBroker.subscribe(this)
41+
}
3542
private val internalConfigState = MutableStateFlow(value = loadConfig())
3643
private val configState: StateFlow<DisplayVisualSettings> = combine(
3744
internalConfigState,
@@ -95,4 +102,8 @@ class DefaultDisplayVisualSettingsPreferenceManager(
95102
override fun getConfig() = configState.value
96103

97104
override fun getConfigFlow(): Flow<DisplayVisualSettings> = configState
105+
106+
override fun receive() {
107+
internalConfigState.update { loadConfig() }
108+
}
98109
}

0 commit comments

Comments
 (0)