diff --git a/CHANGELOG.md b/CHANGELOG.md index 4894c87371..236ad893dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ ## Other ?? Technical stuff, what happened behind the scene --> +## Additions +- Add missing "Max automatic backups" option on experimental Data and Storage setting menu + ## Changes - Add more info to WorkerInfo page - Added "next scheduled run" @@ -17,6 +20,7 @@ - `chinese` tag no longer cause reading mode to switch to LTR - `manhua` tag no longer cause reading mode to switch to LTR - Local source manga's cover now being invalidated on refresh +- You can now create a backup without any entries using experimental Data and Storage setting menu ## Fixes - Fixed auto backup, auto extension update, and app update checker stop working @@ -44,7 +48,7 @@ - More StorIO to SQLDelight migrations - Merge lastFetch and lastRead query into library_view VIEW - Migrated a few more chapter related queries - - Migrated most of manga related queries + - Migrated most of the manga related queries - Bump dependency com.github.tachiyomiorg:unifile revision to a9de196cc7 - Update project to Kotlin 2.0 - Update compose bom to v2024.07.00-alpha02 diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/legacy/SettingsDataLegacyController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/legacy/SettingsDataLegacyController.kt index 5e9cf86c29..aec36be82d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/legacy/SettingsDataLegacyController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/legacy/SettingsDataLegacyController.kt @@ -15,9 +15,6 @@ import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceScreen import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.R -import yokai.i18n.MR -import yokai.util.lang.getString -import dev.icerock.moko.resources.compose.stringResource import eu.kanade.tachiyomi.data.backup.BackupFileValidator import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob import eu.kanade.tachiyomi.data.backup.create.BackupOptions @@ -35,8 +32,6 @@ import eu.kanade.tachiyomi.ui.setting.onChange import eu.kanade.tachiyomi.ui.setting.onClick import eu.kanade.tachiyomi.ui.setting.preference import eu.kanade.tachiyomi.ui.setting.preferenceCategory -import eu.kanade.tachiyomi.ui.setting.summaryMRes as summaryRes -import eu.kanade.tachiyomi.ui.setting.titleMRes as titleRes import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.disableItems import eu.kanade.tachiyomi.util.system.launchIO @@ -52,9 +47,13 @@ import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.injectLazy import yokai.domain.storage.StorageManager import yokai.domain.storage.StoragePreferences +import yokai.i18n.MR +import yokai.util.lang.getString import android.R as AR +import eu.kanade.tachiyomi.ui.setting.summaryMRes as summaryRes +import eu.kanade.tachiyomi.ui.setting.titleMRes as titleRes -@Deprecated("Migrating to compose") +@Deprecated("Migrating to compose", replaceWith = ReplaceWith("SettingsDataController")) class SettingsDataLegacyController : SettingsLegacyController() { /** diff --git a/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt b/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt index 2c950685fa..3e75af4911 100644 --- a/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt @@ -23,13 +23,10 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringResource import co.touchlab.kermit.Logger import dev.icerock.moko.resources.StringResource -import eu.kanade.tachiyomi.R -import yokai.i18n.MR -import yokai.util.lang.getString import dev.icerock.moko.resources.compose.stringResource +import eu.kanade.tachiyomi.core.storage.preference.collectAsState import eu.kanade.tachiyomi.data.backup.BackupFileValidator import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob import eu.kanade.tachiyomi.data.backup.restore.BackupRestoreJob @@ -46,12 +43,14 @@ import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.withUIContext import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.toImmutableMap import kotlinx.coroutines.launch import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy import yokai.domain.storage.StorageManager import yokai.domain.storage.StoragePreferences +import yokai.i18n.MR import yokai.presentation.component.preference.Preference import yokai.presentation.component.preference.storageLocationText import yokai.presentation.component.preference.widget.BasePreferenceWidget @@ -61,6 +60,7 @@ import yokai.presentation.settings.screen.data.CreateBackup import yokai.presentation.settings.screen.data.RestoreBackup import yokai.presentation.settings.screen.data.StorageInfo import yokai.presentation.settings.screen.data.storageLocationPicker +import yokai.util.lang.getString object SettingsDataScreen : ComposableSettings { @Composable @@ -133,6 +133,8 @@ object SettingsDataScreen : ComposableSettings { } } + val backupInterval by preferences.backupInterval().collectAsState() + return Preference.PreferenceGroup( title = stringResource(MR.strings.backup_and_restore), preferenceItems = persistentListOf( @@ -218,6 +220,12 @@ object SettingsDataScreen : ComposableSettings { true }, ), + Preference.PreferenceItem.ListPreference( + pref = preferences.numberOfBackups(), + title = stringResource(MR.strings.max_auto_backups), + entries = (1..5).associateWith { it.toString() }.toImmutableMap(), + enabled = backupInterval > 0, + ), Preference.PreferenceItem.InfoPreference( stringResource(MR.strings.backup_info) /*+ "\n\n" + stringResource(MR.strings.last_auto_backup_info, relativeTimeSpanString(lastAutoBackup))*/,