diff --git a/app/src/debug/res/drawable/ic_launcher_background.xml b/app/src/debug/res/drawable/ic_launcher_background.xml index 39fec8d43..b1df6030e 100644 --- a/app/src/debug/res/drawable/ic_launcher_background.xml +++ b/app/src/debug/res/drawable/ic_launcher_background.xml @@ -12,5 +12,12 @@ + + diff --git a/app/src/debug/res/drawable/ic_launcher_foreground.xml b/app/src/debug/res/drawable/ic_launcher_foreground.xml index 1d32fd7e0..e26e3cc61 100644 --- a/app/src/debug/res/drawable/ic_launcher_foreground.xml +++ b/app/src/debug/res/drawable/ic_launcher_foreground.xml @@ -4,13 +4,6 @@ android:viewportWidth="432" android:viewportHeight="432"> - - diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt index 1c03f7fce..9f51a0d55 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt @@ -30,6 +30,10 @@ class MangaBackupCreator( // Entry for this manga val mangaObject = manga.toBackupManga() + mangaObject.excludedScanlators = handler.awaitList { + excluded_scanlatorsQueries.getExcludedScanlatorsByMangaId(manga.id) + } + if (options.chapters) { // Backup all the chapters handler.awaitList { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt index 43a8a906c..da202ae55 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt @@ -38,6 +38,7 @@ data class BackupManga( @ProtoNumber(105) var updateStrategy: UpdateStrategy = UpdateStrategy.ALWAYS_UPDATE, @ProtoNumber(106) var lastModifiedAt: Long = 0, @ProtoNumber(107) var favoriteModifiedAt: Long? = null, + @ProtoNumber(108) var excludedScanlators: List = emptyList(), ) { fun getMangaImpl(): Manga { return Manga.create().copy( diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt index f6b9455a3..30dc44368 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt @@ -73,6 +73,7 @@ class MangaRestorer( backupCategories = backupCategories, history = backupManga.history + backupManga.brokenHistory.map { it.toBackupHistory() }, tracks = backupManga.tracking, + excludedScanlators = backupManga.excludedScanlators, ) } } @@ -264,11 +265,13 @@ class MangaRestorer( backupCategories: List, history: List, tracks: List, + excludedScanlators: List, ): Manga { restoreCategories(manga, categories, backupCategories) restoreChapters(manga, chapters) restoreTracking(manga, tracks) restoreHistory(history) + restoreExcludedScanlators(manga, excludedScanlators) updateManga.awaitUpdateFetchInterval(manga, now, currentFetchWindow) return manga } @@ -401,4 +404,25 @@ class MangaRestorer( } private fun Track.forComparison() = this.copy(id = 0L, mangaId = 0L) + + /** + * Restores the excluded scanlators for the manga. + * + * @param manga the manga whose excluded scanlators have to be restored. + * @param excludedScanlators the excluded scanlators to restore. + */ + private suspend fun restoreExcludedScanlators(manga: Manga, excludedScanlators: List) { + if (excludedScanlators.isEmpty()) return + val existingExcludedScanlators = handler.awaitList { + excluded_scanlatorsQueries.getExcludedScanlatorsByMangaId(manga.id) + } + val toInsert = excludedScanlators.filter { it !in existingExcludedScanlators } + if (toInsert.isNotEmpty()) { + handler.await { + toInsert.forEach { + excluded_scanlatorsQueries.insert(manga.id, it) + } + } + } + } } diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index d9630c95f..e701a8dd6 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -9,5 +9,12 @@ + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index c3dca7a15..e26e3cc61 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -4,13 +4,6 @@ android:viewportWidth="432" android:viewportHeight="432"> - - diff --git a/data/src/main/sqldelight/tachiyomi/migrations/1.sqm b/data/src/main/sqldelight/tachiyomi/migrations/1.sqm new file mode 100644 index 000000000..1851b9254 --- /dev/null +++ b/data/src/main/sqldelight/tachiyomi/migrations/1.sqm @@ -0,0 +1,4 @@ +-- MangaUpdates score fixing -- +UPDATE manga_sync +SET score = max(score, 0) +WHERE sync_id = 7;