|
@@ -12,12 +12,15 @@ import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_CATEGORY
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_CATEGORY_MASK
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_CHAPTER
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_CHAPTER_MASK
|
|
|
+import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_SOURCE_PREFS
|
|
|
+import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_SOURCE_PREFS_MASK
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_HISTORY
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_HISTORY_MASK
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_TRACK
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_TRACK_MASK
|
|
|
import eu.kanade.tachiyomi.data.backup.models.Backup
|
|
|
import eu.kanade.tachiyomi.data.backup.models.BackupCategory
|
|
|
+import eu.kanade.tachiyomi.data.backup.models.BackupSourcePreferences
|
|
|
import eu.kanade.tachiyomi.data.backup.models.BackupHistory
|
|
|
import eu.kanade.tachiyomi.data.backup.models.BackupManga
|
|
|
import eu.kanade.tachiyomi.data.backup.models.BackupPreference
|
|
@@ -32,7 +35,10 @@ import eu.kanade.tachiyomi.data.backup.models.StringSetPreferenceValue
|
|
|
import eu.kanade.tachiyomi.data.backup.models.backupCategoryMapper
|
|
|
import eu.kanade.tachiyomi.data.backup.models.backupChapterMapper
|
|
|
import eu.kanade.tachiyomi.data.backup.models.backupTrackMapper
|
|
|
+import eu.kanade.tachiyomi.source.ConfigurableSource
|
|
|
import eu.kanade.tachiyomi.source.model.copyFrom
|
|
|
+import eu.kanade.tachiyomi.source.preferenceKey
|
|
|
+import eu.kanade.tachiyomi.source.sourcePreferences
|
|
|
import eu.kanade.tachiyomi.util.system.hasPermission
|
|
|
import kotlinx.serialization.protobuf.ProtoBuf
|
|
|
import logcat.LogPriority
|
|
@@ -94,6 +100,7 @@ class BackupManager(
|
|
|
emptyList(),
|
|
|
prepExtensionInfoForSync(databaseManga),
|
|
|
backupAppPreferences(flags),
|
|
|
+ backupSourcePreferences(flags),
|
|
|
)
|
|
|
|
|
|
var file: UniFile? = null
|
|
@@ -232,12 +239,28 @@ class BackupManager(
|
|
|
return mangaObject
|
|
|
}
|
|
|
|
|
|
- @Suppress("UNCHECKED_CAST")
|
|
|
private fun backupAppPreferences(flags: Int): List<BackupPreference> {
|
|
|
if (flags and BACKUP_APP_PREFS_MASK != BACKUP_APP_PREFS) return emptyList()
|
|
|
|
|
|
- return preferenceStore.getAll()
|
|
|
- .filterKeys { !Preference.isPrivate(it) }
|
|
|
+ return preferenceStore.getAll().toBackupPreferences()
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun backupSourcePreferences(flags: Int): List<BackupSourcePreferences> {
|
|
|
+ if (flags and BACKUP_SOURCE_PREFS_MASK != BACKUP_SOURCE_PREFS) return emptyList()
|
|
|
+
|
|
|
+ return sourceManager.getOnlineSources()
|
|
|
+ .filterIsInstance<ConfigurableSource>()
|
|
|
+ .map {
|
|
|
+ BackupSourcePreferences(
|
|
|
+ it.preferenceKey(),
|
|
|
+ it.sourcePreferences().all.toBackupPreferences()
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Suppress("UNCHECKED_CAST")
|
|
|
+ private fun Map<String, *>.toBackupPreferences(): List<BackupPreference> {
|
|
|
+ return this.filterKeys { !Preference.isPrivate(it) }
|
|
|
.mapNotNull { (key, value) ->
|
|
|
when (value) {
|
|
|
is Int -> BackupPreference(key, IntPreferenceValue(value))
|