Make sure we schedule the vacuum task only if there isn't an existing one

This commit is contained in:
Jorge Martín 2025-12-09 13:50:21 +01:00 committed by Jorge Martin Espinosa
parent 95cded80a6
commit 2e88815e1b
2 changed files with 13 additions and 4 deletions

View file

@ -12,7 +12,6 @@ import androidx.work.WorkManager
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesBinding
import dev.zacsweers.metro.SingleIn
import io.element.android.libraries.core.bool.orFalse
import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.sessionstorage.api.observer.SessionListener
import io.element.android.libraries.sessionstorage.api.observer.SessionObserver
@ -53,7 +52,9 @@ class DefaultWorkManagerScheduler(
}
override fun hasPendingWork(sessionId: SessionId, requestType: WorkManagerRequestType): Boolean {
return workManager.getWorkInfosByTag(workManagerTag(sessionId, requestType)).get()?.isNotEmpty().orFalse()
val workInfos = workManager.getWorkInfosByTag(workManagerTag(sessionId, requestType)).get().orEmpty()
// It has pending work if it's periodic or it isn't but it's not finished
return workInfos.any { it.periodicityInfo != null || !it.state.isFinished }
}
override fun cancel(sessionId: SessionId) {