Await WorkManager operations

This commit is contained in:
Niels van Velzen
2026-08-11 15:55:07 +02:00
committed by Niels van Velzen
parent 9cd4b17f7e
commit 6a4888f1b9
@@ -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<DownloadWorker>().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 }
}