mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Change ProtoNumber of Backup Models for History and Source to a non-zero digit (#5849)
* Change ProtoNumber of Backup Models for History and Source to non-zero Changed BackupHistory url and BackupSource name properties * Provide backwards compatibility to current proto backups - Added data class for zero-based protoNumber - Restore both 'new' proto and old ones by mapping old to 'new' proto format - Thanks to @jobobby04 for providing the initial solution. * Fix on createBackup missing parameter for brokenSource * Fix issues on build * Fix missing import on FullBackupRestore
This commit is contained in:
		| @@ -53,6 +53,7 @@ class FullBackupManager(context: Context) : AbstractBackupManager(context) { | ||||
|             backup = Backup( | ||||
|                 backupManga(databaseManga, flags), | ||||
|                 backupCategories(), | ||||
|                 emptyList(), | ||||
|                 backupExtensionInfo(databaseManga) | ||||
|             ) | ||||
|         } | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.data.backup.full.models.BackupCategory | ||||
| import eu.kanade.tachiyomi.data.backup.full.models.BackupHistory | ||||
| import eu.kanade.tachiyomi.data.backup.full.models.BackupManga | ||||
| import eu.kanade.tachiyomi.data.backup.full.models.BackupSerializer | ||||
| import eu.kanade.tachiyomi.data.backup.full.models.BackupSource | ||||
| import eu.kanade.tachiyomi.data.database.models.Chapter | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| import eu.kanade.tachiyomi.data.database.models.Track | ||||
| @@ -33,7 +34,8 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier) : AbstractBa | ||||
|         } | ||||
|  | ||||
|         // Store source mapping for error messages | ||||
|         sourceMapping = backup.backupSources.map { it.sourceId to it.name }.toMap() | ||||
|         var backupMaps = backup.backupBrokenSources.map { BackupSource(it.name, it.sourceId) } + backup.backupSources | ||||
|         sourceMapping = backupMaps.map { it.sourceId to it.name }.toMap() | ||||
|  | ||||
|         // Restore individual manga | ||||
|         backup.backupManga.forEach { | ||||
| @@ -62,7 +64,7 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier) : AbstractBa | ||||
|         val manga = backupManga.getMangaImpl() | ||||
|         val chapters = backupManga.getChaptersImpl() | ||||
|         val categories = backupManga.categories | ||||
|         val history = backupManga.history | ||||
|         val history = backupManga.brokenHistory.map { BackupHistory(it.url, it.lastRead) } + backupManga.history | ||||
|         val tracks = backupManga.getTrackingImpl() | ||||
|  | ||||
|         try { | ||||
|   | ||||
| @@ -8,5 +8,6 @@ data class Backup( | ||||
|     @ProtoNumber(1) val backupManga: List<BackupManga>, | ||||
|     @ProtoNumber(2) var backupCategories: List<BackupCategory> = emptyList(), | ||||
|     // Bump by 100 to specify this is a 0.x value | ||||
|     @ProtoNumber(100) var backupSources: List<BackupSource> = emptyList(), | ||||
|     @ProtoNumber(100) var backupBrokenSources: List<BrokenBackupSource> = emptyList(), | ||||
|     @ProtoNumber(101) var backupSources: List<BackupSource> = emptyList() | ||||
| ) | ||||
|   | ||||
| @@ -4,7 +4,13 @@ import kotlinx.serialization.Serializable | ||||
| import kotlinx.serialization.protobuf.ProtoNumber | ||||
|  | ||||
| @Serializable | ||||
| data class BackupHistory( | ||||
| data class BrokenBackupHistory( | ||||
|     @ProtoNumber(0) var url: String, | ||||
|     @ProtoNumber(1) var lastRead: Long | ||||
| ) | ||||
|  | ||||
| @Serializable | ||||
| data class BackupHistory( | ||||
|     @ProtoNumber(1) var url: String, | ||||
|     @ProtoNumber(2) var lastRead: Long | ||||
| ) | ||||
|   | ||||
| @@ -33,8 +33,9 @@ data class BackupManga( | ||||
|     // Bump by 100 for values that are not saved/implemented in 1.x but are used in 0.x | ||||
|     @ProtoNumber(100) var favorite: Boolean = true, | ||||
|     @ProtoNumber(101) var chapterFlags: Int = 0, | ||||
|     @ProtoNumber(102) var history: List<BackupHistory> = emptyList(), | ||||
|     @ProtoNumber(103) var viewer_flags: Int? = null | ||||
|     @ProtoNumber(102) var brokenHistory: List<BrokenBackupHistory> = emptyList(), | ||||
|     @ProtoNumber(103) var viewer_flags: Int? = null, | ||||
|     @ProtoNumber(104) var history: List<BackupHistory> = emptyList() | ||||
| ) { | ||||
|     fun getMangaImpl(): MangaImpl { | ||||
|         return MangaImpl().apply { | ||||
|   | ||||
| @@ -5,9 +5,15 @@ import kotlinx.serialization.Serializable | ||||
| import kotlinx.serialization.protobuf.ProtoNumber | ||||
|  | ||||
| @Serializable | ||||
| data class BackupSource( | ||||
| data class BrokenBackupSource( | ||||
|     @ProtoNumber(0) var name: String = "", | ||||
|     @ProtoNumber(1) var sourceId: Long | ||||
| ) | ||||
|  | ||||
| @Serializable | ||||
| data class BackupSource( | ||||
|     @ProtoNumber(1) var name: String = "", | ||||
|     @ProtoNumber(2) var sourceId: Long | ||||
| ) { | ||||
|     companion object { | ||||
|         fun copyFrom(source: Source): BackupSource { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user