Update WI-FI restriction for EXH update worker

This commit is contained in:
Jobobby04 2021-10-19 00:55:26 -04:00
parent 0b3a4e651e
commit f2c881cb42
2 changed files with 20 additions and 14 deletions

View File

@ -18,8 +18,8 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.preference.CHARGING
import eu.kanade.tachiyomi.data.preference.ONLY_ON_WIFI
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.data.preference.UNMETERED_NETWORK
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.databinding.DialogStubTextinputBinding
import eu.kanade.tachiyomi.ui.setting.eh.FrontPageCategoriesDialog
@ -443,15 +443,15 @@ class SettingsEhController : SettingsController() {
multiSelectListPreference {
key = PreferenceKeys.eh_autoUpdateRestrictions
titleRes = R.string.auto_update_restrictions
entriesRes = arrayOf(R.string.network_unmetered, R.string.charging)
entryValues = arrayOf(UNMETERED_NETWORK, CHARGING)
entriesRes = arrayOf(R.string.connected_to_wifi, R.string.charging)
entryValues = arrayOf(ONLY_ON_WIFI, CHARGING)
fun updateSummary() {
val restrictions = preferences.exhAutoUpdateRequirements().get()
.sorted()
.map {
when (it) {
UNMETERED_NETWORK -> context.getString(R.string.network_unmetered)
ONLY_ON_WIFI -> context.getString(R.string.connected_to_wifi)
CHARGING -> context.getString(R.string.charging)
else -> it
}

View File

@ -17,13 +17,14 @@ import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.toMangaInfo
import eu.kanade.tachiyomi.data.library.LibraryUpdateNotifier
import eu.kanade.tachiyomi.data.preference.CHARGING
import eu.kanade.tachiyomi.data.preference.ONLY_ON_WIFI
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.UNMETERED_NETWORK
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.toSChapter
import eu.kanade.tachiyomi.source.model.toSManga
import eu.kanade.tachiyomi.source.online.all.EHentai
import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource
import eu.kanade.tachiyomi.util.system.isConnectedToWifi
import exh.debug.DebugToggles
import exh.eh.EHentaiUpdateWorkerConstants.UPDATES_PER_ITERATION
import exh.log.xLog
@ -57,9 +58,14 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
override suspend fun doWork(): Result {
return try {
startUpdating()
logger.d("Update job completed!")
Result.success()
val preferences = Injekt.get<PreferencesHelper>()
if (requiresWifiConnection(preferences) && !context.isConnectedToWifi()) {
Result.failure()
} else {
startUpdating()
logger.d("Update job completed!")
Result.success()
}
} catch (e: Exception) {
Result.failure()
}
@ -240,14 +246,9 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
if (interval > 0) {
val restrictions = preferences.exhAutoUpdateRequirements().get()
val acRestriction = CHARGING in restrictions
val wifiRestriction = if (UNMETERED_NETWORK in restrictions) {
NetworkType.UNMETERED
} else {
NetworkType.CONNECTED
}
val constraints = Constraints.Builder()
.setRequiredNetworkType(wifiRestriction)
.setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresCharging(acRestriction)
.build()
@ -272,6 +273,11 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
WorkManager.getInstance(context).cancelAllWorkByTag(TAG)
}
}
fun requiresWifiConnection(preferences: PreferencesHelper): Boolean {
val restrictions = preferences.exhAutoUpdateRequirements().get()
return ONLY_ON_WIFI in restrictions
}
}
data class UpdateEntry(val manga: Manga, val meta: EHentaiSearchMetadata, val rootChapter: Chapter?)