Update usage of work:work-runtime

Co-authored-by: cuong-tran <cuongtran.tm@gmail.com>

Update dependency androidx.work:work-runtime to v2.10.0

(cherry picked from commit 57e6e198b8101aa4ea60da89aea371f827b5f7e4)
This commit is contained in:
AntsyLich 2024-11-07 19:49:30 +06:00 committed by Cuong-Tran
parent c38178b789
commit a3ef057e15
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
3 changed files with 72 additions and 34 deletions

View file

@ -2,6 +2,8 @@ package eu.kanade.tachiyomi.data.library
import android.content.Context import android.content.Context
import android.content.pm.ServiceInfo import android.content.pm.ServiceInfo
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.os.Build import android.os.Build
import androidx.work.BackoffPolicy import androidx.work.BackoffPolicy
import androidx.work.Constraints import androidx.work.Constraints
@ -145,10 +147,12 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
override suspend fun doWork(): Result { override suspend fun doWork(): Result {
if (tags.contains(WORK_NAME_AUTO)) { if (tags.contains(WORK_NAME_AUTO)) {
val preferences = Injekt.get<LibraryPreferences>() if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
val restrictions = preferences.autoUpdateDeviceRestrictions().get() val preferences = Injekt.get<LibraryPreferences>()
if ((DEVICE_ONLY_ON_WIFI in restrictions) && !context.isConnectedToWifi()) { val restrictions = preferences.autoUpdateDeviceRestrictions().get()
return Result.retry() if ((DEVICE_ONLY_ON_WIFI in restrictions) && !context.isConnectedToWifi()) {
return Result.retry()
}
} }
// Find a running manual worker. If exists, try again later // Find a running manual worker. If exists, try again later
@ -794,15 +798,24 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
val interval = prefInterval ?: preferences.autoUpdateInterval().get() val interval = prefInterval ?: preferences.autoUpdateInterval().get()
if (interval > 0) { if (interval > 0) {
val restrictions = preferences.autoUpdateDeviceRestrictions().get() val restrictions = preferences.autoUpdateDeviceRestrictions().get()
val constraints = Constraints( val networkType = if (DEVICE_NETWORK_NOT_METERED in restrictions) {
requiredNetworkType = if (DEVICE_NETWORK_NOT_METERED in restrictions) { NetworkType.UNMETERED
NetworkType.UNMETERED } else {
} else { NetworkType.CONNECTED
NetworkType.CONNECTED }
}, val networkRequestBuilder = NetworkRequest.Builder()
requiresCharging = DEVICE_CHARGING in restrictions, if (DEVICE_ONLY_ON_WIFI in restrictions) {
requiresBatteryNotLow = true, networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
) }
if (DEVICE_NETWORK_NOT_METERED in restrictions) {
networkRequestBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
}
val constraints = Constraints.Builder()
// 'networkRequest' only applies to Android 9+, otherwise 'networkType' is used
.setRequiredNetworkRequest(networkRequestBuilder.build(), networkType)
.setRequiresCharging(DEVICE_CHARGING in restrictions)
.setRequiresBatteryNotLow(true)
.build()
val request = PeriodicWorkRequestBuilder<LibraryUpdateJob>( val request = PeriodicWorkRequestBuilder<LibraryUpdateJob>(
interval.toLong(), interval.toLong(),

View file

@ -5,6 +5,8 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller
import android.content.pm.ServiceInfo import android.content.pm.ServiceInfo
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.os.Build import android.os.Build
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.work.BackoffPolicy import androidx.work.BackoffPolicy
@ -67,13 +69,15 @@ class AppUpdateDownloadJob(private val context: Context, workerParams: WorkerPar
if (!context.packageManager.canRequestPackageInstalls()) { if (!context.packageManager.canRequestPackageInstalls()) {
return Result.failure() return Result.failure()
} }
val restrictions = preferences.appShouldAutoUpdate().get() if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
if ((AppUpdatePolicy.DEVICE_ONLY_ON_WIFI in restrictions) && val restrictions = preferences.appShouldAutoUpdate().get()
!context.isConnectedToWifi() || if ((AppUpdatePolicy.DEVICE_ONLY_ON_WIFI in restrictions) &&
(AppUpdatePolicy.DEVICE_NETWORK_NOT_METERED in restrictions) && !context.isConnectedToWifi() ||
context.connectivityManager.isActiveNetworkMetered (AppUpdatePolicy.DEVICE_NETWORK_NOT_METERED in restrictions) &&
) { context.connectivityManager.isActiveNetworkMetered
return Result.retry() ) {
return Result.retry()
}
} }
} }
// KMK <-- // KMK <--
@ -284,15 +288,25 @@ class AppUpdateDownloadJob(private val context: Context, workerParams: WorkerPar
if (scheduled) { if (scheduled) {
data.putBoolean(SCHEDULED_RUN, true) data.putBoolean(SCHEDULED_RUN, true)
val restrictions = Injekt.get<UnsortedPreferences>().appShouldAutoUpdate().get() val restrictions = Injekt.get<UnsortedPreferences>().appShouldAutoUpdate().get()
val constraints = Constraints( val networkType = if (AppUpdatePolicy.DEVICE_NETWORK_NOT_METERED in restrictions) {
requiredNetworkType = if (AppUpdatePolicy.DEVICE_NETWORK_NOT_METERED in restrictions) { NetworkType.UNMETERED
NetworkType.UNMETERED } else {
} else { NetworkType.CONNECTED
NetworkType.CONNECTED }
}, val networkRequestBuilder = NetworkRequest.Builder()
requiresCharging = AppUpdatePolicy.DEVICE_CHARGING in restrictions, if (AppUpdatePolicy.DEVICE_ONLY_ON_WIFI in restrictions) {
requiresBatteryNotLow = true, networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
) }
if (AppUpdatePolicy.DEVICE_NETWORK_NOT_METERED in restrictions) {
networkRequestBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
}
val constraints = Constraints.Builder()
// 'networkRequest' only applies to Android 9+, otherwise 'networkType' is used
.setRequiredNetworkRequest(networkRequestBuilder.build(), networkType)
.setRequiresCharging(AppUpdatePolicy.DEVICE_CHARGING in restrictions)
.setRequiresBatteryNotLow(true)
.build()
setConstraints(constraints) setConstraints(constraints)
setInitialDelay(10, TimeUnit.MINUTES) setInitialDelay(10, TimeUnit.MINUTES)
setBackoffCriteria(BackoffPolicy.LINEAR, 10, TimeUnit.MINUTES) setBackoffCriteria(BackoffPolicy.LINEAR, 10, TimeUnit.MINUTES)

View file

@ -2,6 +2,8 @@ package exh.eh
import android.content.Context import android.content.Context
import android.content.pm.ServiceInfo import android.content.pm.ServiceInfo
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.os.Build import android.os.Build
import androidx.work.Constraints import androidx.work.Constraints
import androidx.work.CoroutineWorker import androidx.work.CoroutineWorker
@ -70,8 +72,11 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
override suspend fun doWork(): Result { override suspend fun doWork(): Result {
return try { return try {
if (requiresWifiConnection(preferences) && !context.isConnectedToWifi()) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P &&
Result.success() // retry again later requiresWifiConnection(preferences) &&
!context.isConnectedToWifi()
) {
Result.retry() // retry again later
} else { } else {
setForegroundSafely() setForegroundSafely()
startUpdating() startUpdating()
@ -79,7 +84,7 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
Result.success() Result.success()
} }
} catch (e: Exception) { } catch (e: Exception) {
Result.success() // retry again later Result.retry() // retry again later
} finally { } finally {
updateNotifier.cancelProgressNotification() updateNotifier.cancelProgressNotification()
} }
@ -285,8 +290,14 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
val restrictions = prefRestrictions ?: preferences.exhAutoUpdateRequirements().get() val restrictions = prefRestrictions ?: preferences.exhAutoUpdateRequirements().get()
val acRestriction = DEVICE_CHARGING in restrictions val acRestriction = DEVICE_CHARGING in restrictions
val networkRequestBuilder = NetworkRequest.Builder()
if (DEVICE_ONLY_ON_WIFI in restrictions) {
networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
}
val constraints = Constraints.Builder() val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED) // 'networkRequest' only applies to Android 9+, otherwise 'networkType' is used
.setRequiredNetworkRequest(networkRequestBuilder.build(), NetworkType.CONNECTED)
.setRequiresCharging(acRestriction) .setRequiresCharging(acRestriction)
.build() .build()
@ -312,7 +323,7 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
} }
} }
fun requiresWifiConnection(preferences: UnsortedPreferences): Boolean { private fun requiresWifiConnection(preferences: UnsortedPreferences): Boolean {
val restrictions = preferences.exhAutoUpdateRequirements().get() val restrictions = preferences.exhAutoUpdateRequirements().get()
return DEVICE_ONLY_ON_WIFI in restrictions return DEVICE_ONLY_ON_WIFI in restrictions
} }