diff --git a/app/src/main/java/com/example/research/feature/download/DownloadManager.kt b/app/src/main/java/com/example/research/feature/download/DownloadManager.kt index fcde452..83729b5 100644 --- a/app/src/main/java/com/example/research/feature/download/DownloadManager.kt +++ b/app/src/main/java/com/example/research/feature/download/DownloadManager.kt @@ -52,6 +52,13 @@ class DownloadManager( var onDownloadSuccess: (() -> Unit)? = null var onTerminal: ((DownloadState) -> Unit)? = null + private suspend fun expireErrorStateToIdle() { + delay(TERMINAL_STATE_DURATION) + if (downloadState.value is DownloadState.Error) { + updateDownloadProgressState(DownloadState.Idle, 0f) + } + } + fun startDownload() { if (downloadState.value is DownloadState.Loading) return if (!downloadScope.isActive) return @@ -79,6 +86,7 @@ class DownloadManager( updateDownloadProgressState( DownloadState.Error(sourceUnavailableMessage), 0f ) + expireErrorStateToIdle() return@withLock } @@ -135,6 +143,7 @@ class DownloadManager( } } + expireErrorStateToIdle() } } finally { downloadJob = null @@ -174,6 +183,7 @@ class DownloadManager( updateDownloadProgressState( DownloadState.Error(sourceUnavailableMessage), 0f ) + expireErrorStateToIdle() return@withLock } @@ -230,6 +240,7 @@ class DownloadManager( } } + expireErrorStateToIdle() } } finally { downloadJob = null diff --git a/app/src/main/java/com/example/research/ui/main/MainScreen.kt b/app/src/main/java/com/example/research/ui/main/MainScreen.kt index 75441bc..c95714b 100644 --- a/app/src/main/java/com/example/research/ui/main/MainScreen.kt +++ b/app/src/main/java/com/example/research/ui/main/MainScreen.kt @@ -64,7 +64,11 @@ fun MainRoute( dictionary.isActive && dictionary.articleCount > 0 } - settingsState.downloadState is DownloadState.Idle && + val downloadSettled = settingsState.downloadState.let { state -> + state is DownloadState.Idle || state is DownloadState.Error + } + + downloadSettled && !settingsState.indexingProgress.isIndexing && settingsState.importState !is ImportState.Importing && settingsState.importState !is ImportState.Extracting &&