mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Fix global update ignoring network constraint (#7188)
* update library update network constraint logic * add explicit 'only on unmetered network' update constraint
This commit is contained in:
		@@ -8,10 +8,7 @@ import androidx.work.PeriodicWorkRequestBuilder
 | 
			
		||||
import androidx.work.WorkManager
 | 
			
		||||
import androidx.work.Worker
 | 
			
		||||
import androidx.work.WorkerParameters
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.DEVICE_BATTERY_NOT_LOW
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.DEVICE_CHARGING
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.DEVICE_ONLY_ON_WIFI
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.*
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.isConnectedToWifi
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
@@ -22,8 +19,9 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
 | 
			
		||||
 | 
			
		||||
    override fun doWork(): Result {
 | 
			
		||||
        val preferences = Injekt.get<PreferencesHelper>()
 | 
			
		||||
        if (requiresWifiConnection(preferences) && !context.isConnectedToWifi()) {
 | 
			
		||||
            Result.failure()
 | 
			
		||||
        val restrictions = preferences.libraryUpdateDeviceRestriction().get()
 | 
			
		||||
        if ((DEVICE_ONLY_ON_WIFI in restrictions) && !context.isConnectedToWifi()) {
 | 
			
		||||
            return Result.failure()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return if (LibraryUpdateService.start(context)) {
 | 
			
		||||
@@ -42,7 +40,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
 | 
			
		||||
            if (interval > 0) {
 | 
			
		||||
                val restrictions = preferences.libraryUpdateDeviceRestriction().get()
 | 
			
		||||
                val constraints = Constraints.Builder()
 | 
			
		||||
                    .setRequiredNetworkType(NetworkType.CONNECTED)
 | 
			
		||||
                    .setRequiredNetworkType(if (DEVICE_NETWORK_NOT_METERED in restrictions) { NetworkType.UNMETERED } else { NetworkType.CONNECTED })
 | 
			
		||||
                    .setRequiresCharging(DEVICE_CHARGING in restrictions)
 | 
			
		||||
                    .setRequiresBatteryNotLow(DEVICE_BATTERY_NOT_LOW in restrictions)
 | 
			
		||||
                    .build()
 | 
			
		||||
@@ -62,10 +60,5 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
 | 
			
		||||
                WorkManager.getInstance(context).cancelAllWorkByTag(TAG)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fun requiresWifiConnection(preferences: PreferencesHelper): Boolean {
 | 
			
		||||
            val restrictions = preferences.libraryUpdateDeviceRestriction().get()
 | 
			
		||||
            return DEVICE_ONLY_ON_WIFI in restrictions
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.data.preference
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
 | 
			
		||||
const val DEVICE_ONLY_ON_WIFI = "wifi"
 | 
			
		||||
const val DEVICE_NETWORK_NOT_METERED = "network_not_metered"
 | 
			
		||||
const val DEVICE_CHARGING = "ac"
 | 
			
		||||
const val DEVICE_BATTERY_NOT_LOW = "battery_not_low"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,13 +11,7 @@ import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Category
 | 
			
		||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.DEVICE_BATTERY_NOT_LOW
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.DEVICE_CHARGING
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.DEVICE_ONLY_ON_WIFI
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.MANGA_HAS_UNREAD
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.MANGA_NON_READ
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.*
 | 
			
		||||
import eu.kanade.tachiyomi.data.track.TrackManager
 | 
			
		||||
import eu.kanade.tachiyomi.databinding.PrefLibraryColumnsBinding
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
 | 
			
		||||
@@ -152,8 +146,8 @@ class SettingsLibraryController : SettingsController() {
 | 
			
		||||
            multiSelectListPreference {
 | 
			
		||||
                bindTo(preferences.libraryUpdateDeviceRestriction())
 | 
			
		||||
                titleRes = R.string.pref_library_update_restriction
 | 
			
		||||
                entriesRes = arrayOf(R.string.connected_to_wifi, R.string.charging, R.string.battery_not_low)
 | 
			
		||||
                entryValues = arrayOf(DEVICE_ONLY_ON_WIFI, DEVICE_CHARGING, DEVICE_BATTERY_NOT_LOW)
 | 
			
		||||
                entriesRes = arrayOf(R.string.connected_to_wifi, R.string.network_not_metered, R.string.charging, R.string.battery_not_low)
 | 
			
		||||
                entryValues = arrayOf(DEVICE_ONLY_ON_WIFI, DEVICE_NETWORK_NOT_METERED, DEVICE_CHARGING, DEVICE_BATTERY_NOT_LOW)
 | 
			
		||||
 | 
			
		||||
                visibleIf(preferences.libraryUpdateInterval()) { it > 0 }
 | 
			
		||||
 | 
			
		||||
@@ -169,6 +163,7 @@ class SettingsLibraryController : SettingsController() {
 | 
			
		||||
                        .map {
 | 
			
		||||
                            when (it) {
 | 
			
		||||
                                DEVICE_ONLY_ON_WIFI -> context.getString(R.string.connected_to_wifi)
 | 
			
		||||
                                DEVICE_NETWORK_NOT_METERED -> context.getString(R.string.network_not_metered)
 | 
			
		||||
                                DEVICE_CHARGING -> context.getString(R.string.charging)
 | 
			
		||||
                                DEVICE_BATTERY_NOT_LOW -> context.getString(R.string.battery_not_low)
 | 
			
		||||
                                else -> it
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user