refactor(backup): Map chapter directly into BackupChapter

This commit is contained in:
Ahmad Ansori Palembani 2024-10-13 19:20:34 +07:00
parent 5160fabfde
commit 71e7545b29
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
2 changed files with 38 additions and 18 deletions

View file

@ -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<Manga>, options: BackupOptions): List<BackupManga> {
@ -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
}
}

View file

@ -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,
)
}
}