mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor(backup): Map chapter directly into BackupChapter
This commit is contained in:
parent
5160fabfde
commit
71e7545b29
2 changed files with 38 additions and 18 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue