Always attempt automatic backup creation

- Defaults to every 12 hours
- Minimum number of backups is now 2, just to offer some level of redundancy in case something happens
- If it's missing storage permissions, it'll fail but that's the user's loss if they somehow haven't granted that permission yet

# Conflicts:
#	app/build.gradle.kts
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
This commit is contained in:
arkon 2022-09-15 22:53:46 -04:00 committed by Jobobby04
parent 22b6231a68
commit a27b25f7c6
7 changed files with 30 additions and 10 deletions

View File

@ -28,7 +28,7 @@ android {
applicationId = "eu.kanade.tachiyomi.sy"
minSdk = AndroidConfig.minSdk
targetSdk = AndroidConfig.targetSdk
versionCode = 39
versionCode = 40
versionName = "1.8.5"
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")

View File

@ -287,6 +287,15 @@ object Migrations {
remove("library_sorting_ascending")
}
}
if (oldVersion < 84) {
if (preferences.numberOfBackups().get() == 1) {
preferences.numberOfBackups().set(2)
}
if (preferences.backupInterval().get() == 0) {
preferences.backupInterval().set(12)
BackupCreatorJob.setupTask(context)
}
}
return true
}

View File

@ -1,5 +1,6 @@
package eu.kanade.tachiyomi.data.backup
import android.Manifest
import android.content.Context
import android.net.Uri
import com.hippo.unifile.UniFile
@ -50,6 +51,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.copyFrom
import eu.kanade.tachiyomi.source.online.MetadataSource
import eu.kanade.tachiyomi.util.system.hasPermission
import eu.kanade.tachiyomi.util.system.logcat
import eu.kanade.tachiyomi.util.system.toLong
import exh.source.MERGED_SOURCE_ID
@ -94,6 +96,10 @@ class BackupManager(
*/
@Suppress("BlockingMethodInNonBlockingContext")
suspend fun createBackup(uri: Uri, flags: Int, isAutoBackup: Boolean): String {
if (!context.hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
throw IllegalStateException(context.getString(R.string.missing_storage_permission))
}
val databaseManga = getFavorites.await() /* SY --> */ + if (flags and BACKUP_READ_MANGA_MASK == BACKUP_READ_MANGA) {
handler.awaitList { mangasQueries.getReadMangaNotInLibrary(mangaMapper) }
} else {

View File

@ -223,7 +223,7 @@ class PreferencesHelper(val context: Context) {
fun numberOfBackups() = flowPrefs.getInt("backup_slots", 2)
fun backupInterval() = flowPrefs.getInt("backup_interval", 0)
fun backupInterval() = flowPrefs.getInt("backup_interval", 12)
fun removeAfterReadSlots() = prefs.getInt(Keys.removeAfterReadSlots, -1)

View File

@ -108,14 +108,13 @@ class SettingsBackupController : SettingsController() {
bindTo(preferences.backupInterval())
titleRes = R.string.pref_backup_interval
entriesRes = arrayOf(
R.string.update_never,
R.string.update_6hour,
R.string.update_12hour,
R.string.update_24hour,
R.string.update_48hour,
R.string.update_weekly,
)
entryValues = arrayOf("0", "6", "12", "24", "48", "168")
entryValues = arrayOf("6", "12", "24", "48", "168")
summary = "%s"
onChange { newValue ->
@ -137,8 +136,6 @@ class SettingsBackupController : SettingsController() {
}
}
visibleIf(preferences.backupInterval()) { it > 0 }
preferences.backupsDirectory().asFlow()
.onEach { path ->
val dir = UniFile.fromUri(context, path.toUri())
@ -149,11 +146,9 @@ class SettingsBackupController : SettingsController() {
intListPreference {
bindTo(preferences.numberOfBackups())
titleRes = R.string.pref_backup_slots
entries = arrayOf("1", "2", "3", "4", "5")
entries = arrayOf("2", "3", "4", "5")
entryValues = entries
summary = "%s"
visibleIf(preferences.backupInterval()) { it > 0 }
}
}

View File

@ -448,6 +448,15 @@ object EXHMigrations {
remove("library_sorting_ascending")
}
}
if (oldVersion under 40) {
if (preferences.numberOfBackups().get() == 1) {
preferences.numberOfBackups().set(2)
}
if (preferences.backupInterval().get() == 0) {
preferences.backupInterval().set(12)
BackupCreatorJob.setupTask(context)
}
}
// if (oldVersion under 1) { } (1 is current release version)
// do stuff here when releasing changed crap

View File

@ -471,13 +471,14 @@
<string name="backup_choice">What do you want to backup?</string>
<string name="creating_backup">Creating backup</string>
<string name="creating_backup_error">Backup failed</string>
<string name="missing_storage_permission">Storage permissions not granted</string>
<string name="empty_backup_error">No library entries to back up</string>
<string name="restore_miui_warning">Backup/restore may not function properly if MIUI Optimization is disabled.</string>
<string name="restore_in_progress">Restore is already in progress</string>
<string name="restoring_backup">Restoring backup</string>
<string name="restoring_backup_error">Restoring backup failed</string>
<string name="restoring_backup_canceled">Canceled restore</string>
<string name="backup_info">Automatic backups are highly recommended. You should keep copies in other places as well.</string>
<string name="backup_info">You should keep copies of backups in other places as well.</string>
<!-- Advanced section -->
<string name="label_network">Network</string>