From d9c27e7109fb01db4a103a2d55b5573c2cfe2185 Mon Sep 17 00:00:00 2001 From: Gauthier Date: Wed, 26 May 2021 20:57:13 +0800 Subject: [PATCH] Display the currently active restrictions in the library update preference (#5187) * display the currently active restrictions in the library update preference * removed first line * use constant instead of literal string * remove spanned string builder --- .../data/library/LibraryUpdateJob.kt | 8 +++-- .../data/preference/PreferenceValues.kt | 3 ++ .../data/preference/PreferencesHelper.kt | 2 +- .../ui/setting/SettingsLibraryController.kt | 30 +++++++++++++++++-- app/src/main/res/values/strings.xml | 2 +- 5 files changed, 37 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt index f2055a6541..1d605fe6a6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt @@ -8,7 +8,9 @@ import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager import androidx.work.Worker import androidx.work.WorkerParameters +import eu.kanade.tachiyomi.data.preference.CHARGING import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.data.preference.UNMETERED_NETWORK import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.util.concurrent.TimeUnit @@ -31,9 +33,9 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet val preferences = Injekt.get() val interval = prefInterval ?: preferences.libraryUpdateInterval().get() if (interval > 0) { - val restrictions = preferences.libraryUpdateRestriction()!! - val acRestriction = "ac" in restrictions - val wifiRestriction = if ("wifi" in restrictions) { + val restrictions = preferences.libraryUpdateRestriction().get() + val acRestriction = CHARGING in restrictions + val wifiRestriction = if (UNMETERED_NETWORK in restrictions) { NetworkType.UNMETERED } else { NetworkType.CONNECTED diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt index 77015fc96f..b374453598 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt @@ -1,5 +1,8 @@ package eu.kanade.tachiyomi.data.preference +const val UNMETERED_NETWORK = "wifi" +const val CHARGING = "ac" + /** * This class stores the values for the preferences in the application. */ diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index ded219697d..63a0bd5064 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -227,7 +227,7 @@ class PreferencesHelper(val context: Context) { fun libraryUpdateInterval() = flowPrefs.getInt(Keys.libraryUpdateInterval, 24) - fun libraryUpdateRestriction() = prefs.getStringSet(Keys.libraryUpdateRestriction, setOf("wifi")) + fun libraryUpdateRestriction() = flowPrefs.getStringSet(Keys.libraryUpdateRestriction, setOf(UNMETERED_NETWORK)) fun libraryUpdateCategories() = flowPrefs.getStringSet(Keys.libraryUpdateCategories, emptySet()) fun libraryUpdateCategoriesExclude() = flowPrefs.getStringSet(Keys.libraryUpdateCategoriesExclude, emptySet()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt index 4a05701557..0619788759 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt @@ -12,7 +12,9 @@ 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.CHARGING import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.data.preference.UNMETERED_NETWORK import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction @@ -152,9 +154,8 @@ class SettingsLibraryController : SettingsController() { key = Keys.libraryUpdateRestriction titleRes = R.string.pref_library_update_restriction entriesRes = arrayOf(R.string.network_unmetered, R.string.charging) - entryValues = arrayOf("wifi", "ac") - summaryRes = R.string.pref_library_update_restriction_summary - defaultValue = setOf("wifi") + entryValues = arrayOf(UNMETERED_NETWORK, CHARGING) + defaultValue = setOf(UNMETERED_NETWORK) preferences.libraryUpdateInterval().asImmediateFlow { isVisible = it > 0 } .launchIn(viewScope) @@ -164,6 +165,29 @@ class SettingsLibraryController : SettingsController() { Handler().post { LibraryUpdateJob.setupTask(context) } true } + + fun updateSummary() { + val restrictions = preferences.libraryUpdateRestriction().get() + .sorted() + .map { + when (it) { + UNMETERED_NETWORK -> context.getString(R.string.network_unmetered) + CHARGING -> context.getString(R.string.charging) + else -> it + } + } + val restrictionsText = if (restrictions.isEmpty()) { + context.getString(R.string.none) + } else { + restrictions.joinToString() + } + + summary = context.getString(R.string.restrictions, restrictionsText) + } + + preferences.libraryUpdateRestriction().asFlow() + .onEach { updateSummary() } + .launchIn(viewScope) } switchPreference { key = Keys.updateOnlyNonCompleted diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6614d88e3..b5c94985dc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -213,9 +213,9 @@ Weekly Update order Update restrictions - Update only when the conditions are met Unmetered network Charging + Restrictions: %s Only update ongoing manga Automatically refresh metadata Check for new cover and details when updating library