From 6a4888f1b92f4fc27c11bf87e206182403ef961f Mon Sep 17 00:00:00 2001 From: Niels van Velzen Date: Tue, 11 Aug 2026 14:50:13 +0200 Subject: [PATCH] Await WorkManager operations --- .../jellyfin/mobile/downloads/DownloadWorker.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/jellyfin/mobile/downloads/DownloadWorker.kt b/app/src/main/java/org/jellyfin/mobile/downloads/DownloadWorker.kt index d0f05054..1992c384 100644 --- a/app/src/main/java/org/jellyfin/mobile/downloads/DownloadWorker.kt +++ b/app/src/main/java/org/jellyfin/mobile/downloads/DownloadWorker.kt @@ -11,7 +11,9 @@ import androidx.work.OutOfQuotaPolicy import androidx.work.WorkInfo import androidx.work.WorkManager import androidx.work.WorkerParameters +import androidx.work.await import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.guava.await import org.jellyfin.mobile.app.AppPreferences import org.koin.core.component.KoinComponent import org.koin.core.component.inject @@ -24,7 +26,7 @@ class DownloadWorker( companion object { private val tag = DownloadWorker::class.qualifiedName!! - fun start(context: Context, appPreferences: AppPreferences) { + suspend fun start(context: Context, appPreferences: AppPreferences) { val request = OneTimeWorkRequestBuilder().apply { addTag(tag) setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) @@ -39,16 +41,16 @@ class DownloadWorker( ) }.build() - WorkManager.getInstance(context).enqueueUniqueWork(tag, ExistingWorkPolicy.REPLACE, request) + WorkManager.getInstance(context).enqueueUniqueWork(tag, ExistingWorkPolicy.REPLACE, request).await() } - fun stop(context: Context) { - WorkManager.getInstance(context).cancelUniqueWork(tag) + suspend fun stop(context: Context) { + WorkManager.getInstance(context).cancelUniqueWork(tag).await() } - fun isActive(context: Context): Boolean = WorkManager.getInstance(context) + suspend fun isActive(context: Context): Boolean = WorkManager.getInstance(context) .getWorkInfosForUniqueWork(tag) - .get() + .await() .any { workInfo -> workInfo.state == WorkInfo.State.RUNNING } }