From 71e7545b29f3bd8913915520b96b2ae938872ba6 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sun, 13 Oct 2024 19:20:34 +0700 Subject: [PATCH] refactor(backup): Map chapter directly into BackupChapter --- .../create/creators/MangaBackupCreator.kt | 13 +++++- .../data/backup/models/BackupChapter.kt | 43 ++++++++++++------- 2 files changed, 38 insertions(+), 18 deletions(-) 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 b3bd7f77a2..7262d3263b 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 @@ -10,11 +10,13 @@ import eu.kanade.tachiyomi.data.library.CustomMangaManager import eu.kanade.tachiyomi.domain.manga.models.Manga import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import yokai.data.DatabaseHandler import yokai.domain.chapter.interactor.GetChapter class MangaBackupCreator( private val db: DatabaseHelper = Injekt.get(), private val customMangaManager: CustomMangaManager = Injekt.get(), + private val handler: DatabaseHandler = Injekt.get(), private val getChapter: GetChapter = Injekt.get(), ) { suspend operator fun invoke(mangas: List, options: BackupOptions): List { @@ -39,9 +41,16 @@ class MangaBackupCreator( // Check if user wants chapter information in backup if (options.chapters) { // Backup all the chapters - val chapters = manga.id?.let { getChapter.awaitAll(it, false) }.orEmpty() + val chapters = manga.id?.let { + handler.awaitList { + chaptersQueries.getChaptersByMangaId( + it, + 0, // We want all chapters, so ignore scanlator filter + BackupChapter::mapper) + } + }.orEmpty() if (chapters.isNotEmpty()) { - mangaObject.chapters = chapters.map { BackupChapter.copyFrom(it) } + mangaObject.chapters = chapters } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt index ce918aa8fc..389bd7ada6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt @@ -1,6 +1,5 @@ package eu.kanade.tachiyomi.data.backup.models -import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.ChapterImpl import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber @@ -42,20 +41,32 @@ data class BackupChapter( } companion object { - fun copyFrom(chapter: Chapter): BackupChapter { - return BackupChapter( - url = chapter.url, - name = chapter.name, - chapterNumber = chapter.chapter_number, - scanlator = chapter.scanlator, - read = chapter.read, - bookmark = chapter.bookmark, - lastPageRead = chapter.last_page_read, - dateFetch = chapter.date_fetch, - dateUpload = chapter.date_upload, - sourceOrder = chapter.source_order, - pagesLeft = chapter.pages_left, - ) - } + fun mapper( + id: Long, + mangaId: Long, + url: String, + name: String, + scanlator: String?, + read: Boolean, + bookmark: Boolean, + lastPageRead: Long, + pagesLeft: Long, + chapterNumber: Double, + sourceOrder: Long, + dateFetch: Long, + dateUpload: Long, + ) = BackupChapter( + url = url, + name = name, + scanlator = scanlator, + read = read, + bookmark = bookmark, + lastPageRead = lastPageRead.toInt(), + pagesLeft = pagesLeft.toInt(), + chapterNumber = chapterNumber.toFloat(), + sourceOrder = sourceOrder.toInt(), + dateFetch = dateFetch, + dateUpload = dateUpload, + ) } }