mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	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
This commit is contained in:
		| @@ -284,6 +284,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 | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -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 | ||||
| @@ -34,6 +35,7 @@ import eu.kanade.tachiyomi.data.database.models.Track | ||||
| import eu.kanade.tachiyomi.data.preference.PreferencesHelper | ||||
| import eu.kanade.tachiyomi.source.SourceManager | ||||
| import eu.kanade.tachiyomi.source.model.copyFrom | ||||
| import eu.kanade.tachiyomi.util.system.hasPermission | ||||
| import eu.kanade.tachiyomi.util.system.logcat | ||||
| import eu.kanade.tachiyomi.util.system.toLong | ||||
| import kotlinx.serialization.protobuf.ProtoBuf | ||||
| @@ -68,6 +70,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() | ||||
|         val backup = Backup( | ||||
|             backupMangas(databaseManga, flags), | ||||
|   | ||||
| @@ -214,7 +214,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) | ||||
|  | ||||
|   | ||||
| @@ -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 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user