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:
parent
c38178b789
commit
a3ef057e15
3 changed files with 72 additions and 34 deletions
|
|
@ -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(),
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue