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() }