diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreatorJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreatorJob.kt index 3d50b0b454..9bf211c24d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreatorJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreatorJob.kt @@ -13,7 +13,6 @@ import androidx.work.ForegroundInfo import androidx.work.OneTimeWorkRequestBuilder import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkInfo -import androidx.work.WorkManager import androidx.work.WorkerParameters import androidx.work.workDataOf import co.touchlab.kermit.Logger @@ -23,13 +22,14 @@ import eu.kanade.tachiyomi.data.backup.restore.BackupRestoreJob import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.util.system.e import eu.kanade.tachiyomi.util.system.localeContext -import eu.kanade.tachiyomi.util.system.tryToSetForeground import eu.kanade.tachiyomi.util.system.notificationManager +import eu.kanade.tachiyomi.util.system.tryToSetForeground +import eu.kanade.tachiyomi.util.system.workManager +import java.util.concurrent.TimeUnit import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import yokai.domain.backup.BackupPreferences import yokai.domain.storage.StorageManager -import java.util.concurrent.* class BackupCreatorJob(private val context: Context, workerParams: WorkerParameters) : CoroutineWorker(context, workerParams) { @@ -82,14 +82,13 @@ class BackupCreatorJob(private val context: Context, workerParams: WorkerParamet companion object { fun isManualJobRunning(context: Context): Boolean { - val list = WorkManager.getInstance(context).getWorkInfosByTag(TAG_MANUAL).get() + val list = context.workManager.getWorkInfosByTag(TAG_MANUAL).get() return list.find { it.state == WorkInfo.State.RUNNING } != null } fun setupTask(context: Context, prefInterval: Int? = null) { val preferences = Injekt.get() val interval = prefInterval ?: preferences.backupInterval().get() - val workManager = WorkManager.getInstance(context) if (interval > 0) { val request = PeriodicWorkRequestBuilder( interval.toLong(), @@ -102,9 +101,9 @@ class BackupCreatorJob(private val context: Context, workerParams: WorkerParamet .setInputData(workDataOf(IS_AUTO_BACKUP_KEY to true)) .build() - workManager.enqueueUniquePeriodicWork(TAG_AUTO, ExistingPeriodicWorkPolicy.UPDATE, request) + context.workManager.enqueueUniquePeriodicWork(TAG_AUTO, ExistingPeriodicWorkPolicy.UPDATE, request) } else { - workManager.cancelUniqueWork(TAG_AUTO) + context.workManager.cancelUniqueWork(TAG_AUTO) } } @@ -118,7 +117,7 @@ class BackupCreatorJob(private val context: Context, workerParams: WorkerParamet .addTag(TAG_MANUAL) .setInputData(inputData) .build() - WorkManager.getInstance(context).enqueueUniqueWork(TAG_MANUAL, ExistingWorkPolicy.KEEP, request) + context.workManager.enqueueUniqueWork(TAG_MANUAL, ExistingWorkPolicy.KEEP, request) } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestoreJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestoreJob.kt index b45f33c0ec..482586d6b8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestoreJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestoreJob.kt @@ -9,7 +9,6 @@ import androidx.work.ExistingWorkPolicy import androidx.work.ForegroundInfo import androidx.work.OneTimeWorkRequestBuilder import androidx.work.OutOfQuotaPolicy -import androidx.work.WorkManager import androidx.work.WorkerParameters import androidx.work.workDataOf import co.touchlab.kermit.Logger @@ -20,6 +19,7 @@ import eu.kanade.tachiyomi.util.system.jobIsRunning import eu.kanade.tachiyomi.util.system.localeContext import eu.kanade.tachiyomi.util.system.tryToSetForeground import eu.kanade.tachiyomi.util.system.withIOContext +import eu.kanade.tachiyomi.util.system.workManager import kotlinx.coroutines.CancellationException import yokai.i18n.MR import yokai.util.lang.getString @@ -72,14 +72,13 @@ class BackupRestoreJob(val context: Context, workerParams: WorkerParameters) : C .setInputData(workDataOf(BackupConst.EXTRA_URI to uri.toString())) .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) .build() - WorkManager.getInstance(context) - .enqueueUniqueWork(TAG, ExistingWorkPolicy.REPLACE, request) + context.workManager.enqueueUniqueWork(TAG, ExistingWorkPolicy.REPLACE, request) } fun stop(context: Context) { - WorkManager.getInstance(context).cancelUniqueWork(TAG) + context.workManager.cancelUniqueWork(TAG) } - fun isRunning(context: Context) = WorkManager.getInstance(context).jobIsRunning(TAG) + fun isRunning(context: Context) = context.workManager.jobIsRunning(TAG) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadJob.kt index 4627af8e44..4f761983d7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadJob.kt @@ -10,7 +10,6 @@ import androidx.work.NetworkType import androidx.work.OneTimeWorkRequestBuilder import androidx.work.OutOfQuotaPolicy import androidx.work.WorkInfo -import androidx.work.WorkManager import androidx.work.WorkerParameters import androidx.work.workDataOf import eu.kanade.tachiyomi.data.notification.Notifications @@ -19,6 +18,7 @@ import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.util.system.isConnectedToWifi import eu.kanade.tachiyomi.util.system.isOnline import eu.kanade.tachiyomi.util.system.tryToSetForeground +import eu.kanade.tachiyomi.util.system.workManager import kotlinx.coroutines.CancellationException import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.delay @@ -111,12 +111,11 @@ class DownloadJob(val context: Context, workerParams: WorkerParameters) : Corout } } .build() - WorkManager.getInstance(context) - .enqueueUniqueWork(TAG, ExistingWorkPolicy.REPLACE, request) + context.workManager.enqueueUniqueWork(TAG, ExistingWorkPolicy.REPLACE, request) } fun stop(context: Context) { - WorkManager.getInstance(context).cancelUniqueWork(TAG) + context.workManager.cancelUniqueWork(TAG) } fun callListeners(downloading: Boolean? = null, downloadManager: DownloadManager? = null) { @@ -125,7 +124,7 @@ class DownloadJob(val context: Context, workerParams: WorkerParameters) : Corout } fun isRunning(context: Context): Boolean { - return WorkManager.getInstance(context) + return context.workManager .getWorkInfosForUniqueWork(TAG) .get() .let { list -> list.count { it.state == WorkInfo.State.RUNNING } == 1 } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt index 5e7e0d7dc6..8a0243a710 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt @@ -40,16 +40,16 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.ui.main.MainActivity +import java.io.File +import java.util.Locale +import kotlin.math.max import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.delay import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.delay import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import yokai.i18n.MR -import java.io.File -import java.util.* -import kotlin.math.max private const val TABLET_UI_MIN_SCREEN_WIDTH_DP = 720 @@ -233,6 +233,9 @@ val Context.wifiManager: WifiManager val Context.powerManager: PowerManager get() = getSystemService()!! +val Context.workManager: WorkManager + get() = WorkManager.getInstance(this) + /** * Returns true if device is connected to Wifi. */