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.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.preference.CHARGING 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.PreferenceKeys
import eu.kanade.tachiyomi.data.preference.UNMETERED_NETWORK
import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.databinding.DialogStubTextinputBinding import eu.kanade.tachiyomi.databinding.DialogStubTextinputBinding
import eu.kanade.tachiyomi.ui.setting.eh.FrontPageCategoriesDialog import eu.kanade.tachiyomi.ui.setting.eh.FrontPageCategoriesDialog
@ -443,15 +443,15 @@ class SettingsEhController : SettingsController() {
multiSelectListPreference { multiSelectListPreference {
key = PreferenceKeys.eh_autoUpdateRestrictions key = PreferenceKeys.eh_autoUpdateRestrictions
titleRes = R.string.auto_update_restrictions titleRes = R.string.auto_update_restrictions
entriesRes = arrayOf(R.string.network_unmetered, R.string.charging) entriesRes = arrayOf(R.string.connected_to_wifi, R.string.charging)
entryValues = arrayOf(UNMETERED_NETWORK, CHARGING) entryValues = arrayOf(ONLY_ON_WIFI, CHARGING)
fun updateSummary() { fun updateSummary() {
val restrictions = preferences.exhAutoUpdateRequirements().get() val restrictions = preferences.exhAutoUpdateRequirements().get()
.sorted() .sorted()
.map { .map {
when (it) { 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) CHARGING -> context.getString(R.string.charging)
else -> it 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.database.models.toMangaInfo
import eu.kanade.tachiyomi.data.library.LibraryUpdateNotifier import eu.kanade.tachiyomi.data.library.LibraryUpdateNotifier
import eu.kanade.tachiyomi.data.preference.CHARGING 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.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.UNMETERED_NETWORK
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.toSChapter import eu.kanade.tachiyomi.source.model.toSChapter
import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.source.model.toSManga
import eu.kanade.tachiyomi.source.online.all.EHentai import eu.kanade.tachiyomi.source.online.all.EHentai
import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource
import eu.kanade.tachiyomi.util.system.isConnectedToWifi
import exh.debug.DebugToggles import exh.debug.DebugToggles
import exh.eh.EHentaiUpdateWorkerConstants.UPDATES_PER_ITERATION import exh.eh.EHentaiUpdateWorkerConstants.UPDATES_PER_ITERATION
import exh.log.xLog import exh.log.xLog
@ -57,9 +58,14 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
override suspend fun doWork(): Result { override suspend fun doWork(): Result {
return try { return try {
startUpdating() val preferences = Injekt.get<PreferencesHelper>()
logger.d("Update job completed!") if (requiresWifiConnection(preferences) && !context.isConnectedToWifi()) {
Result.success() Result.failure()
} else {
startUpdating()
logger.d("Update job completed!")
Result.success()
}
} catch (e: Exception) { } catch (e: Exception) {
Result.failure() Result.failure()
} }
@ -240,14 +246,9 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
if (interval > 0) { if (interval > 0) {
val restrictions = preferences.exhAutoUpdateRequirements().get() val restrictions = preferences.exhAutoUpdateRequirements().get()
val acRestriction = CHARGING in restrictions val acRestriction = CHARGING in restrictions
val wifiRestriction = if (UNMETERED_NETWORK in restrictions) {
NetworkType.UNMETERED
} else {
NetworkType.CONNECTED
}
val constraints = Constraints.Builder() val constraints = Constraints.Builder()
.setRequiredNetworkType(wifiRestriction) .setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresCharging(acRestriction) .setRequiresCharging(acRestriction)
.build() .build()
@ -272,6 +273,11 @@ class EHentaiUpdateWorker(private val context: Context, workerParams: WorkerPara
WorkManager.getInstance(context).cancelAllWorkByTag(TAG) 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?) data class UpdateEntry(val manga: Manga, val meta: EHentaiSearchMetadata, val rootChapter: Chapter?)