diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d143f3b3b..5d56fe324 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -27,7 +27,7 @@ android { defaultConfig { applicationId = "eu.kanade.tachiyomi.sy" - versionCode = 55 + versionCode = 56 versionName = "1.9.3" buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"") diff --git a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt index c07a71bdb..6b935d5d7 100644 --- a/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt @@ -168,7 +168,7 @@ private fun ColumnScope.SortPage( screenModel: LibrarySettingsScreenModel, ) { // SY --> - val globalSortMode by screenModel.libraryPreferences.librarySortingMode().collectAsState() + val globalSortMode by screenModel.libraryPreferences.sortingMode().collectAsState() val sortingMode = if (screenModel.grouping == LibraryGroup.BY_DEFAULT) { category.sort.type } else { @@ -226,7 +226,7 @@ private val displayModes = listOf( private fun ColumnScope.DisplayPage( screenModel: LibrarySettingsScreenModel, ) { - val displayMode by screenModel.libraryPreferences.libraryDisplayMode().collectAsState() + val displayMode by screenModel.libraryPreferences.displayMode().collectAsState() SettingsChipRow(R.string.action_display_mode) { displayModes.map { (titleRes, mode) -> FilterChip( diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt index 2a11f1851..9ca06d621 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt @@ -34,7 +34,6 @@ import tachiyomi.domain.category.interactor.ResetCategoryFlags import tachiyomi.domain.category.model.Category import tachiyomi.domain.library.model.GroupLibraryMode import tachiyomi.domain.library.service.LibraryPreferences -import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_BATTERY_NOT_LOW import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_CHARGING import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_NETWORK_NOT_METERED import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_ONLY_ON_WIFI @@ -133,14 +132,14 @@ object SettingsLibraryScreen : SearchableSettings { ): Preference.PreferenceGroup { val context = LocalContext.current - val libraryUpdateIntervalPref = libraryPreferences.libraryUpdateInterval() - val libraryUpdateCategoriesPref = libraryPreferences.libraryUpdateCategories() - val libraryUpdateCategoriesExcludePref = libraryPreferences.libraryUpdateCategoriesExclude() + val autoUpdateIntervalPref = libraryPreferences.autoUpdateInterval() + val autoUpdateCategoriesPref = libraryPreferences.updateCategories() + val autoUpdateCategoriesExcludePref = libraryPreferences.updateCategoriesExclude() - val libraryUpdateInterval by libraryUpdateIntervalPref.collectAsState() + val autoUpdateInterval by autoUpdateIntervalPref.collectAsState() - val included by libraryUpdateCategoriesPref.collectAsState() - val excluded by libraryUpdateCategoriesExcludePref.collectAsState() + val included by autoUpdateCategoriesPref.collectAsState() + val excluded by autoUpdateCategoriesExcludePref.collectAsState() var showCategoriesDialog by rememberSaveable { mutableStateOf(false) } if (showCategoriesDialog) { TriStateListDialog( @@ -152,8 +151,8 @@ object SettingsLibraryScreen : SearchableSettings { itemLabel = { it.visualName }, onDismissRequest = { showCategoriesDialog = false }, onValueChanged = { newIncluded, newExcluded -> - libraryUpdateCategoriesPref.set(newIncluded.map { it.id.toString() }.toSet()) - libraryUpdateCategoriesExcludePref.set(newExcluded.map { it.id.toString() }.toSet()) + autoUpdateCategoriesPref.set(newIncluded.map { it.id.toString() }.toSet()) + autoUpdateCategoriesExcludePref.set(newExcluded.map { it.id.toString() }.toSet()) showCategoriesDialog = false }, ) @@ -163,7 +162,7 @@ object SettingsLibraryScreen : SearchableSettings { title = stringResource(R.string.pref_category_library_update), preferenceItems = listOf( Preference.PreferenceItem.ListPreference( - pref = libraryUpdateIntervalPref, + pref = autoUpdateIntervalPref, title = stringResource(R.string.pref_library_update_interval), entries = mapOf( 0 to stringResource(R.string.update_never), @@ -179,15 +178,14 @@ object SettingsLibraryScreen : SearchableSettings { }, ), Preference.PreferenceItem.MultiSelectListPreference( - pref = libraryPreferences.libraryUpdateDeviceRestriction(), - enabled = libraryUpdateInterval > 0, + pref = libraryPreferences.autoUpdateDeviceRestrictions(), + enabled = autoUpdateInterval > 0, title = stringResource(R.string.pref_library_update_restriction), subtitle = stringResource(R.string.restrictions), entries = mapOf( DEVICE_ONLY_ON_WIFI to stringResource(R.string.connected_to_wifi), DEVICE_NETWORK_NOT_METERED to stringResource(R.string.network_not_metered), DEVICE_CHARGING to stringResource(R.string.charging), - DEVICE_BATTERY_NOT_LOW to stringResource(R.string.battery_not_low), ), onValueChanged = { // Post to event looper to allow the preference to be updated. @@ -227,7 +225,7 @@ object SettingsLibraryScreen : SearchableSettings { subtitle = stringResource(R.string.pref_library_update_refresh_trackers_summary), ), Preference.PreferenceItem.MultiSelectListPreference( - pref = libraryPreferences.libraryUpdateMangaRestriction(), + pref = libraryPreferences.autoUpdateMangaRestrictions(), title = stringResource(R.string.pref_library_update_manga_restriction), entries = mapOf( MANGA_HAS_UNREAD to stringResource(R.string.pref_update_only_completely_read), diff --git a/app/src/main/java/eu/kanade/presentation/webview/EhLoginWebViewScreen.kt b/app/src/main/java/eu/kanade/presentation/webview/EhLoginWebViewScreen.kt index c51ff3293..82cc9ae94 100644 --- a/app/src/main/java/eu/kanade/presentation/webview/EhLoginWebViewScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/webview/EhLoginWebViewScreen.kt @@ -103,7 +103,7 @@ fun EhLoginWebViewScreen( object : AccompanistWebViewClient() { override fun onPageFinished(view: WebView, url: String?) { super.onPageFinished(view, url) - onPageFinished(view ?: return, url ?: return) + onPageFinished(view, url ?: return) } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt index 4660b29d4..3ef67c815 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt @@ -20,6 +20,7 @@ import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.workManager import tachiyomi.core.preference.PreferenceStore import tachiyomi.core.preference.TriState +import tachiyomi.core.preference.getAndSet import tachiyomi.core.preference.getEnum import tachiyomi.core.preference.minusAssign import tachiyomi.core.preference.plusAssign @@ -103,11 +104,11 @@ object Migrations { } if (oldVersion < 44) { // Reset sorting preference if using removed sort by source - val oldSortingMode = prefs.getInt(libraryPreferences.librarySortingMode().key(), 0) + val oldSortingMode = prefs.getInt(libraryPreferences.sortingMode().key(), 0) if (oldSortingMode == 5) { // SOURCE = 5 prefs.edit { - putInt(libraryPreferences.librarySortingMode().key(), 0) // ALPHABETICAL = 0 + putInt(libraryPreferences.sortingMode().key(), 0) // ALPHABETICAL = 0 } } } @@ -182,14 +183,14 @@ object Migrations { } if (oldVersion < 61) { // Handle removed every 1 or 2 hour library updates - val updateInterval = libraryPreferences.libraryUpdateInterval().get() + val updateInterval = libraryPreferences.autoUpdateInterval().get() if (updateInterval == 1 || updateInterval == 2) { - libraryPreferences.libraryUpdateInterval().set(3) + libraryPreferences.autoUpdateInterval().set(3) LibraryUpdateJob.setupTask(context, 3) } } if (oldVersion < 64) { - val oldSortingMode = prefs.getInt(libraryPreferences.librarySortingMode().key(), 0) + val oldSortingMode = prefs.getInt(libraryPreferences.sortingMode().key(), 0) val oldSortingDirection = prefs.getBoolean("library_sorting_ascending", true) @Suppress("DEPRECATION") @@ -211,12 +212,12 @@ object Migrations { } prefs.edit(commit = true) { - remove(libraryPreferences.librarySortingMode().key()) + remove(libraryPreferences.sortingMode().key()) remove("library_sorting_ascending") } prefs.edit { - putString(libraryPreferences.librarySortingMode().key(), newSortingMode) + putString(libraryPreferences.sortingMode().key(), newSortingMode) putString("library_sorting_ascending", newSortingDirection) } } @@ -227,16 +228,16 @@ object Migrations { } if (oldVersion < 71) { // Handle removed every 3, 4, 6, and 8 hour library updates - val updateInterval = libraryPreferences.libraryUpdateInterval().get() + val updateInterval = libraryPreferences.autoUpdateInterval().get() if (updateInterval in listOf(3, 4, 6, 8)) { - libraryPreferences.libraryUpdateInterval().set(12) + libraryPreferences.autoUpdateInterval().set(12) LibraryUpdateJob.setupTask(context, 12) } } if (oldVersion < 72) { val oldUpdateOngoingOnly = prefs.getBoolean("pref_update_only_non_completed_key", true) if (!oldUpdateOngoingOnly) { - libraryPreferences.libraryUpdateMangaRestriction() -= MANGA_NON_COMPLETED + libraryPreferences.autoUpdateMangaRestrictions() -= MANGA_NON_COMPLETED } } if (oldVersion < 75) { @@ -261,20 +262,20 @@ object Migrations { if (oldVersion < 81) { // Handle renamed enum values prefs.edit { - val newSortingMode = when (val oldSortingMode = prefs.getString(libraryPreferences.librarySortingMode().key(), "ALPHABETICAL")) { + val newSortingMode = when (val oldSortingMode = prefs.getString(libraryPreferences.sortingMode().key(), "ALPHABETICAL")) { "LAST_CHECKED" -> "LAST_MANGA_UPDATE" "UNREAD" -> "UNREAD_COUNT" "DATE_FETCHED" -> "CHAPTER_FETCH_DATE" else -> oldSortingMode } - putString(libraryPreferences.librarySortingMode().key(), newSortingMode) + putString(libraryPreferences.sortingMode().key(), newSortingMode) } } if (oldVersion < 82) { prefs.edit { - val sort = prefs.getString(libraryPreferences.librarySortingMode().key(), null) ?: return@edit + val sort = prefs.getString(libraryPreferences.sortingMode().key(), null) ?: return@edit val direction = prefs.getString("library_sorting_ascending", "ASCENDING")!! - putString(libraryPreferences.librarySortingMode().key(), "$sort,$direction") + putString(libraryPreferences.sortingMode().key(), "$sort,$direction") remove("library_sorting_ascending") } } @@ -371,6 +372,12 @@ object Migrations { readerPreferences.longStripSplitWebtoon().set(false) } } + if (oldVersion < 105) { + val pref = libraryPreferences.autoUpdateDeviceRestrictions() + if (pref.isSet() && "battery_not_low" in pref.get()) { + pref.getAndSet { it - "battery_not_low" } + } + } return true } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateJob.kt index a5c4bbf58..6f960edec 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreateJob.kt @@ -4,6 +4,7 @@ import android.content.Context import android.net.Uri import androidx.core.net.toUri import androidx.work.BackoffPolicy +import androidx.work.Constraints import androidx.work.CoroutineWorker import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.ExistingWorkPolicy @@ -76,6 +77,10 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete val backupPreferences = Injekt.get() val interval = prefInterval ?: backupPreferences.backupInterval().get() if (interval > 0) { + val constraints = Constraints( + requiresBatteryNotLow = true, + ) + val request = PeriodicWorkRequestBuilder( interval.toLong(), TimeUnit.HOURS, @@ -84,6 +89,7 @@ class BackupCreateJob(private val context: Context, workerParams: WorkerParamete ) .setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 10.minutes.toJavaDuration()) .addTag(TAG_AUTO) + .setConstraints(constraints) .setInputData(workDataOf(IS_AUTO_BACKUP_KEY to true)) .build() 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 4151d20d5..d39a9cc48 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt @@ -72,7 +72,6 @@ import tachiyomi.domain.library.model.GroupLibraryMode import tachiyomi.domain.library.model.LibraryGroup import tachiyomi.domain.library.model.LibraryManga import tachiyomi.domain.library.service.LibraryPreferences -import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_BATTERY_NOT_LOW import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_CHARGING import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_NETWORK_NOT_METERED import tachiyomi.domain.library.service.LibraryPreferences.Companion.DEVICE_ONLY_ON_WIFI @@ -137,7 +136,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet override suspend fun doWork(): Result { if (tags.contains(WORK_NAME_AUTO)) { val preferences = Injekt.get() - val restrictions = preferences.libraryUpdateDeviceRestriction().get() + val restrictions = preferences.autoUpdateDeviceRestrictions().get() if ((DEVICE_ONLY_ON_WIFI in restrictions) && !context.isConnectedToWifi()) { return Result.retry() } @@ -158,7 +157,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet // If this is a chapter update, set the last update time to now if (target == Target.CHAPTERS) { - libraryPreferences.libraryUpdateLastTimestamp().set(Date().time) + libraryPreferences.lastUpdatedTimestamp().set(Date().time) } val categoryId = inputData.getLong(KEY_CATEGORY, -1L) @@ -220,14 +219,14 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet groupLibraryUpdateType == GroupLibraryMode.GLOBAL || (groupLibraryUpdateType == GroupLibraryMode.ALL_BUT_UNGROUPED && group == LibraryGroup.UNGROUPED) ) { - val categoriesToUpdate = libraryPreferences.libraryUpdateCategories().get().map(String::toLong) + val categoriesToUpdate = libraryPreferences.updateCategories().get().map(String::toLong) val includedManga = if (categoriesToUpdate.isNotEmpty()) { libraryManga.filter { it.category in categoriesToUpdate } } else { libraryManga } - val categoriesToExclude = libraryPreferences.libraryUpdateCategoriesExclude().get().map { it.toLong() } + val categoriesToExclude = libraryPreferences.updateCategoriesExclude().get().map { it.toLong() } val excludedMangaIds = if (categoriesToExclude.isNotEmpty()) { libraryManga.filter { it.category in categoriesToExclude }.map { it.manga.id } } else { @@ -302,7 +301,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet val skippedUpdates = CopyOnWriteArrayList>() val failedUpdates = CopyOnWriteArrayList>() val hasDownloads = AtomicBoolean(false) - val restrictions = libraryPreferences.libraryUpdateMangaRestriction().get() + val restrictions = libraryPreferences.autoUpdateMangaRestrictions().get() // SY --> val mdlistLogged = trackManager.services.any { it.isLogged && it.id == TrackManager.MDLIST } // SY <-- @@ -771,13 +770,13 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet prefInterval: Int? = null, ) { val preferences = Injekt.get() - val interval = prefInterval ?: preferences.libraryUpdateInterval().get() + val interval = prefInterval ?: preferences.autoUpdateInterval().get() if (interval > 0) { - val restrictions = preferences.libraryUpdateDeviceRestriction().get() + val restrictions = preferences.autoUpdateDeviceRestrictions().get() val constraints = Constraints( requiredNetworkType = if (DEVICE_NETWORK_NOT_METERED in restrictions) { NetworkType.UNMETERED } else { NetworkType.CONNECTED }, requiresCharging = DEVICE_CHARGING in restrictions, - requiresBatteryNotLow = DEVICE_BATTERY_NOT_LOW in restrictions, + requiresBatteryNotLow = true, ) val request = PeriodicWorkRequestBuilder( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index 90c320ea3..3077fab99 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -172,7 +172,7 @@ class LibraryScreenModel( // SY --> combine( state.map { it.groupType }.distinctUntilChanged(), - libraryPreferences.librarySortingMode().changes(), + libraryPreferences.sortingMode().changes(), ::Pair, ), // SY <-- @@ -795,7 +795,7 @@ class LibraryScreenModel( } fun getDisplayMode(): PreferenceMutableState { - return libraryPreferences.libraryDisplayMode().asState(coroutineScope) + return libraryPreferences.displayMode().asState(coroutineScope) } fun getColumnsPreferenceForCurrentOrientation(isLandscape: Boolean): PreferenceMutableState { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt index f99117128..75d8ffafd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt @@ -192,7 +192,7 @@ class MangaScreenModel( val dateFormat by mutableStateOf(UiPreferences.dateFormat(uiPreferences.dateFormat().get())) private val skipFiltered by readerPreferences.skipFiltered().asState(coroutineScope) - val isUpdateIntervalEnabled = LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in libraryPreferences.libraryUpdateMangaRestriction().get() + val isUpdateIntervalEnabled = LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in libraryPreferences.autoUpdateMangaRestrictions().get() private val selectedPositions: Array = arrayOf(-1, -1) // first and last selected index in list private val selectedChapterIds: HashSet = HashSet() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt index 8c17134d3..a7e4b0b2a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/stats/StatsScreenModel.kt @@ -108,14 +108,14 @@ class StatsScreenModel( } private fun getGlobalUpdateItemCount(libraryManga: List): Int { - val includedCategories = preferences.libraryUpdateCategories().get().map { it.toLong() } + val includedCategories = preferences.updateCategories().get().map { it.toLong() } val includedManga = if (includedCategories.isNotEmpty()) { libraryManga.filter { it.category in includedCategories } } else { libraryManga } - val excludedCategories = preferences.libraryUpdateCategoriesExclude().get().map { it.toLong() } + val excludedCategories = preferences.updateCategoriesExclude().get().map { it.toLong() } val excludedMangaIds = if (excludedCategories.isNotEmpty()) { libraryManga.fastMapNotNull { manga -> manga.id.takeIf { manga.category in excludedCategories } @@ -124,7 +124,7 @@ class StatsScreenModel( emptyList() } - val updateRestrictions = preferences.libraryUpdateMangaRestriction().get() + val updateRestrictions = preferences.autoUpdateMangaRestrictions().get() return includedManga .fastFilterNot { it.manga.id in excludedMangaIds } .fastDistinctBy { it.manga.id } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt index 40f9ae3d6..0ce8cbd33 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt @@ -70,7 +70,7 @@ class UpdatesScreenModel( private val _events: Channel = Channel(Int.MAX_VALUE) val events: Flow = _events.receiveAsFlow() - val lastUpdated by libraryPreferences.libraryUpdateLastTimestamp().asState(coroutineScope) + val lastUpdated by libraryPreferences.lastUpdatedTimestamp().asState(coroutineScope) // SY --> val preserveReadingPosition by readerPreferences.preserveReadingPosition().asState(coroutineScope) diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index 25d356569..6ffb25b63 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -41,6 +41,7 @@ import kotlinx.serialization.json.jsonArray import kotlinx.serialization.json.jsonPrimitive import tachiyomi.core.preference.PreferenceStore import tachiyomi.core.preference.TriState +import tachiyomi.core.preference.getAndSet import tachiyomi.core.preference.getEnum import tachiyomi.core.preference.minusAssign import tachiyomi.core.util.system.logcat @@ -259,15 +260,15 @@ object EXHMigrations { if (readerTheme == 4) { readerPreferences.readerTheme().set(3) } - val updateInterval = libraryPreferences.libraryUpdateInterval().get() + val updateInterval = libraryPreferences.autoUpdateInterval().get() if (updateInterval == 1 || updateInterval == 2) { - libraryPreferences.libraryUpdateInterval().set(3) + libraryPreferences.autoUpdateInterval().set(3) LibraryUpdateJob.setupTask(context, 3) } } if (oldVersion under 20) { try { - val oldSortingMode = prefs.getInt(libraryPreferences.librarySortingMode().key(), 0 /* ALPHABETICAL */) + val oldSortingMode = prefs.getInt(libraryPreferences.sortingMode().key(), 0 /* ALPHABETICAL */) val oldSortingDirection = prefs.getBoolean("library_sorting_ascending", true) val newSortingMode = when (oldSortingMode) { @@ -290,12 +291,12 @@ object EXHMigrations { } prefs.edit(commit = true) { - remove(libraryPreferences.librarySortingMode().key()) + remove(libraryPreferences.sortingMode().key()) remove("library_sorting_ascending") } prefs.edit { - putString(libraryPreferences.librarySortingMode().key(), newSortingMode) + putString(libraryPreferences.sortingMode().key(), newSortingMode) putString("library_sorting_ascending", newSortingDirection) } } catch (e: Exception) { @@ -312,16 +313,16 @@ object EXHMigrations { } if (oldVersion under 22) { // Handle removed every 3, 4, 6, and 8 hour library updates - val updateInterval = libraryPreferences.libraryUpdateInterval().get() + val updateInterval = libraryPreferences.autoUpdateInterval().get() if (updateInterval in listOf(3, 4, 6, 8)) { - libraryPreferences.libraryUpdateInterval().set(12) + libraryPreferences.autoUpdateInterval().set(12) LibraryUpdateJob.setupTask(context, 12) } } if (oldVersion under 23) { val oldUpdateOngoingOnly = prefs.getBoolean("pref_update_only_non_completed_key", true) if (!oldUpdateOngoingOnly) { - libraryPreferences.libraryUpdateMangaRestriction() -= MANGA_NON_COMPLETED + libraryPreferences.autoUpdateMangaRestrictions() -= MANGA_NON_COMPLETED } } if (oldVersion under 24) { @@ -414,8 +415,7 @@ object EXHMigrations { } if (oldVersion under 38) { // Handle renamed enum values - @Suppress("DEPRECATION") - val newSortingMode = when (val oldSortingMode = prefs.getString(libraryPreferences.librarySortingMode().key(), "ALPHABETICAL")) { + val newSortingMode = when (val oldSortingMode = prefs.getString(libraryPreferences.sortingMode().key(), "ALPHABETICAL")) { "LAST_CHECKED" -> "LAST_MANGA_UPDATE" "UNREAD" -> "UNREAD_COUNT" "DATE_FETCHED" -> "CHAPTER_FETCH_DATE" @@ -423,7 +423,7 @@ object EXHMigrations { else -> oldSortingMode } prefs.edit { - putString(libraryPreferences.librarySortingMode().key(), newSortingMode) + putString(libraryPreferences.sortingMode().key(), newSortingMode) } runBlocking { handler.await(true) { @@ -442,9 +442,9 @@ object EXHMigrations { } if (oldVersion under 39) { prefs.edit { - val sort = prefs.getString(libraryPreferences.librarySortingMode().key(), null) ?: return@edit + val sort = prefs.getString(libraryPreferences.sortingMode().key(), null) ?: return@edit val direction = prefs.getString("library_sorting_ascending", "ASCENDING")!! - putString(libraryPreferences.librarySortingMode().key(), "$sort,$direction") + putString(libraryPreferences.sortingMode().key(), "$sort,$direction") remove("library_sorting_ascending") } } @@ -458,7 +458,6 @@ object EXHMigrations { } } if (oldVersion under 41) { - @Suppress("NAME_SHADOWING") val preferences = listOf( libraryPreferences.filterChapterByRead(), libraryPreferences.filterChapterByDownloaded(), @@ -548,6 +547,12 @@ object EXHMigrations { readerPreferences.longStripSplitWebtoon().set(false) } } + if (oldVersion under 56) { + val pref = libraryPreferences.autoUpdateDeviceRestrictions() + if (pref.isSet() && "battery_not_low" in pref.get()) { + pref.getAndSet { it - "battery_not_low" } + } + } // if (oldVersion under 1) { } (1 is current release version) // do stuff here when releasing changed crap diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt index e1b5cfc27..63c62d9f2 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/CreateCategoryWithName.kt @@ -14,7 +14,7 @@ class CreateCategoryWithName( private val initialFlags: Long get() { - val sort = preferences.librarySortingMode().get() + val sort = preferences.sortingMode().get() return sort.type.flag or sort.direction.flag } diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/ResetCategoryFlags.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/ResetCategoryFlags.kt index a8014186c..4032206c3 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/ResetCategoryFlags.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/ResetCategoryFlags.kt @@ -10,7 +10,7 @@ class ResetCategoryFlags( ) { suspend fun await() { - val sort = preferences.librarySortingMode().get() + val sort = preferences.sortingMode().get() categoryRepository.updateAllFlags(sort.type + sort.direction) } } diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayMode.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayMode.kt index 9ef5ca942..32e23148f 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayMode.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayMode.kt @@ -8,6 +8,6 @@ class SetDisplayMode( ) { fun await(display: LibraryDisplayMode) { - preferences.libraryDisplayMode().set(display) + preferences.displayMode().set(display) } } diff --git a/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt b/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt index 9d4d4cc34..fe7bc9f8b 100644 --- a/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt +++ b/domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt @@ -16,7 +16,7 @@ class SetSortModeForCategory( suspend fun await(categoryId: Long?, type: LibrarySort.Type, direction: LibrarySort.Direction) { // SY --> if (preferences.groupLibraryBy().get() != LibraryGroup.BY_DEFAULT) { - preferences.librarySortingMode().set(LibrarySort(type, direction)) + preferences.sortingMode().set(LibrarySort(type, direction)) return } // SY <-- @@ -30,7 +30,7 @@ class SetSortModeForCategory( ), ) } else { - preferences.librarySortingMode().set(LibrarySort(type, direction)) + preferences.sortingMode().set(LibrarySort(type, direction)) categoryRepository.updateAllFlags(flags) } } diff --git a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt index a528c2c3f..2cd8cb2c7 100644 --- a/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt +++ b/domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt @@ -13,24 +13,24 @@ class LibraryPreferences( private val preferenceStore: PreferenceStore, ) { - fun libraryDisplayMode() = preferenceStore.getObject("pref_display_mode_library", LibraryDisplayMode.default, LibraryDisplayMode.Serializer::serialize, LibraryDisplayMode.Serializer::deserialize) + fun displayMode() = preferenceStore.getObject("pref_display_mode_library", LibraryDisplayMode.default, LibraryDisplayMode.Serializer::serialize, LibraryDisplayMode.Serializer::deserialize) - fun librarySortingMode() = preferenceStore.getObject("library_sorting_mode", LibrarySort.default, LibrarySort.Serializer::serialize, LibrarySort.Serializer::deserialize) + fun sortingMode() = preferenceStore.getObject("library_sorting_mode", LibrarySort.default, LibrarySort.Serializer::serialize, LibrarySort.Serializer::deserialize) fun portraitColumns() = preferenceStore.getInt("pref_library_columns_portrait_key", 0) fun landscapeColumns() = preferenceStore.getInt("pref_library_columns_landscape_key", 0) - fun libraryUpdateInterval() = preferenceStore.getInt("pref_library_update_interval_key", 0) - fun libraryUpdateLastTimestamp() = preferenceStore.getLong("library_update_last_timestamp", 0L) + fun lastUpdatedTimestamp() = preferenceStore.getLong("library_update_last_timestamp", 0L) + fun autoUpdateInterval() = preferenceStore.getInt("pref_library_update_interval_key", 0) - fun libraryUpdateDeviceRestriction() = preferenceStore.getStringSet( + fun autoUpdateDeviceRestrictions() = preferenceStore.getStringSet( "library_update_restriction", setOf( DEVICE_ONLY_ON_WIFI, ), ) - fun libraryUpdateMangaRestriction() = preferenceStore.getStringSet( + fun autoUpdateMangaRestrictions() = preferenceStore.getStringSet( "library_update_manga_restriction", setOf( MANGA_HAS_UNREAD, @@ -101,9 +101,9 @@ class LibraryPreferences( fun categorizedDisplaySettings() = preferenceStore.getBoolean("categorized_display", false) - fun libraryUpdateCategories() = preferenceStore.getStringSet("library_update_categories", emptySet()) + fun updateCategories() = preferenceStore.getStringSet("library_update_categories", emptySet()) - fun libraryUpdateCategoriesExclude() = preferenceStore.getStringSet("library_update_categories_exclude", emptySet()) + fun updateCategoriesExclude() = preferenceStore.getStringSet("library_update_categories_exclude", emptySet()) // endregion @@ -164,7 +164,6 @@ class LibraryPreferences( 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" const val MANGA_NON_COMPLETED = "manga_ongoing" const val MANGA_HAS_UNREAD = "manga_fully_read" diff --git a/i18n/src/main/res/values/strings.xml b/i18n/src/main/res/values/strings.xml index 653209229..e81ce096b 100755 --- a/i18n/src/main/res/values/strings.xml +++ b/i18n/src/main/res/values/strings.xml @@ -249,7 +249,6 @@ Only on Wi-Fi Only on unmetered network When charging - When battery not low Restrictions: %s Skip updating entries