From dd00c7048824f75882adead4af120dc5653340fc Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sun, 5 Jun 2022 11:43:01 -0600 Subject: [PATCH] music: do not auto-index unless indeterminate Make IndexerService only auto-index music when there is no library AND no loading has occured. This resolves an issue where if IndexerService dies after a failed index, IndexerService would try to index music regardless, as there was no library present. --- app/src/main/java/org/oxycblt/auxio/music/Indexer.kt | 7 +++++++ .../main/java/org/oxycblt/auxio/music/IndexerService.kt | 5 ++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/music/Indexer.kt b/app/src/main/java/org/oxycblt/auxio/music/Indexer.kt index 025cc3ba3..e0f0dc1c0 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/Indexer.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/Indexer.kt @@ -61,6 +61,13 @@ class Indexer { private var currentGeneration = 0L private val callbacks = mutableListOf() + /** + * Whether this instance is in an indeterminate state or not, where nothing has been previously + * loaded, yet no loading is going on. + */ + val isIndeterminate: Boolean + get() = lastResponse == null && loadingState == null + fun addCallback(callback: Callback) { val currentState = loadingState?.let { State.Loading(it) } ?: lastResponse?.let { State.Complete(it) } diff --git a/app/src/main/java/org/oxycblt/auxio/music/IndexerService.kt b/app/src/main/java/org/oxycblt/auxio/music/IndexerService.kt index 02dff6c19..24c9bf9a4 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/IndexerService.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/IndexerService.kt @@ -62,10 +62,9 @@ class IndexerService : Service(), Indexer.Callback { notification = IndexerNotification(this) - // FIXME: Do not re-index if Indexer has already completed indexer.addCallback(this) - if (musicStore.library == null) { - logD("No library present, loading music now") + if (musicStore.library == null && indexer.isIndeterminate) { + logD("No library present and no previous response, loading music now") onRequestReindex() }