From a2079a37a14b6f53b76d340a66d2e2b275523254 Mon Sep 17 00:00:00 2001 From: OneWay Date: Mon, 5 Oct 2026 05:16:21 +0800 Subject: [PATCH] fix(settings): write the no-dictionaries seed only after a completed scan A racing SettingsViewModel whose scan short-circuits with an in-progress error persisted hadNoDictionaries from a still-empty list, forcing the Settings screen on the next cold start despite existing dictionaries. --- .../example/research/ui/settings/SettingsViewModel.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/example/research/ui/settings/SettingsViewModel.kt b/app/src/main/java/com/example/research/ui/settings/SettingsViewModel.kt index 57228dc..7aedf3e 100644 --- a/app/src/main/java/com/example/research/ui/settings/SettingsViewModel.kt +++ b/app/src/main/java/com/example/research/ui/settings/SettingsViewModel.kt @@ -274,9 +274,10 @@ class SettingsViewModel( } private fun initialize() { + var scanCompleted = false viewModelScope.launch { try { - scanDirectoryInternal(preferencesManager.dictionaryPath) + scanCompleted = scanDirectoryInternal(preferencesManager.dictionaryPath) is OperationResult.Success } catch (e: Exception) { android.util.Log.e("SettingsViewModel", "Initial scan failed", e) dictionaryStatus.value = if (localDictionaryRepository.dictionaries.value.isEmpty()) { @@ -299,9 +300,11 @@ class SettingsViewModel( } hasLoadedPreferences.value = true hasCompletedStartupScan.value = true - preferencesManager.setHadNoDictionaries( - localDictionaryRepository.dictionaries.value.isEmpty() - ) + if (scanCompleted) { + preferencesManager.setHadNoDictionaries( + localDictionaryRepository.dictionaries.value.isEmpty() + ) + } } } }