From f6407805d3019e288f516ee8e5a7a4c23d990346 Mon Sep 17 00:00:00 2001 From: KaiserBh <41852205+KaiserBh@users.noreply.github.com> Date: Fri, 12 Jan 2024 10:22:46 +1100 Subject: [PATCH] Use transaction on restore to go brr. (#10375) refactor: use transaction to go brr. This improve the restore speed on fresh db and non fresh db. Signed-off-by: KaiserBh (cherry picked from commit b1067b942ef5c8d53e5ab838ef078789b9c0627a) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt --- .../backup/restore/restorers/MangaRestorer.kt | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) 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 35dddf4f6..04be23abf 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 @@ -71,30 +71,32 @@ class MangaRestorer( backupManga: BackupManga, backupCategories: List, ) { - val dbManga = findExistingManga(backupManga) - var manga = backupManga.getMangaImpl() - // SY --> - manga = EXHMigrations.migrateBackupEntry(manga) - // SY <-- - val restoredManga = if (dbManga == null) { - restoreNewManga(manga) - } else { - restoreExistingManga(manga, dbManga) - } - - restoreMangaDetails( - manga = restoredManga, - chapters = backupManga.chapters, - categories = backupManga.categories, - backupCategories = backupCategories, - history = backupManga.history + backupManga.brokenHistory.map { it.toBackupHistory() }, - tracks = backupManga.tracking, + handler.await(inTransaction = true) { + val dbManga = findExistingManga(backupManga) + var manga = backupManga.getMangaImpl() // SY --> - mergedMangaReferences = backupManga.mergedMangaReferences, - flatMetadata = backupManga.flatMetadata, - customManga = backupManga.getCustomMangaInfo(), + manga = EXHMigrations.migrateBackupEntry(manga) // SY <-- - ) + val restoredManga = if (dbManga == null) { + restoreNewManga(manga) + } else { + restoreExistingManga(manga, dbManga) + } + + restoreMangaDetails( + manga = restoredManga, + chapters = backupManga.chapters, + categories = backupManga.categories, + backupCategories = backupCategories, + history = backupManga.history + backupManga.brokenHistory.map { it.toBackupHistory() }, + tracks = backupManga.tracking, + // SY --> + mergedMangaReferences = backupManga.mergedMangaReferences, + flatMetadata = backupManga.flatMetadata, + customManga = backupManga.getCustomMangaInfo(), + // SY <-- + ) + } } private suspend fun findExistingManga(backupManga: BackupManga): Manga? {