Move LibraryManga to domain layer (#8126)
(cherry picked from commit ea8383978b)
# Conflicts:
# app/src/main/java/eu/kanade/data/manga/MangaMapper.kt
# app/src/main/java/eu/kanade/presentation/library/LibraryState.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/models/LibraryManga.kt
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
This commit is contained in:
@@ -4,35 +4,40 @@ import com.squareup.sqldelight.Query
|
||||
import com.squareup.sqldelight.db.SqlCursor
|
||||
import com.squareup.sqldelight.db.SqlDriver
|
||||
import com.squareup.sqldelight.internal.copyOnWriteList
|
||||
import eu.kanade.data.listOfStringsAdapter
|
||||
import eu.kanade.data.listOfStringsAndAdapter
|
||||
import eu.kanade.data.updateStrategyAdapter
|
||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
||||
import eu.kanade.domain.library.model.LibraryManga
|
||||
import exh.source.MERGED_SOURCE_ID
|
||||
|
||||
private val mapper = { cursor: SqlCursor ->
|
||||
LibraryManga().apply {
|
||||
id = cursor.getLong(0)!!
|
||||
source = cursor.getLong(1)!!
|
||||
url = cursor.getString(2)!!
|
||||
artist = cursor.getString(3)
|
||||
author = cursor.getString(4)
|
||||
description = cursor.getString(5)
|
||||
genre = cursor.getString(6)
|
||||
title = cursor.getString(7)!!
|
||||
status = cursor.getLong(8)!!.toInt()
|
||||
thumbnail_url = cursor.getString(9)
|
||||
favorite = cursor.getLong(10)!! == 1L
|
||||
last_update = cursor.getLong(11) ?: 0
|
||||
initialized = cursor.getLong(13)!! == 1L
|
||||
viewer_flags = cursor.getLong(14)!!.toInt()
|
||||
chapter_flags = cursor.getLong(15)!!.toInt()
|
||||
cover_last_modified = cursor.getLong(16)!!
|
||||
date_added = cursor.getLong(17)!!
|
||||
filtered_scanlators = cursor.getString(18)
|
||||
update_strategy = updateStrategyAdapter.decode(cursor.getLong(19)!!)
|
||||
unreadCount = cursor.getLong(20)!!.toInt()
|
||||
readCount = cursor.getLong(21)!!.toInt()
|
||||
category = cursor.getLong(22)!!.toInt()
|
||||
}
|
||||
LibraryManga(
|
||||
manga = mangaMapper(
|
||||
cursor.getLong(0)!!,
|
||||
cursor.getLong(1)!!,
|
||||
cursor.getString(2)!!,
|
||||
cursor.getString(3),
|
||||
cursor.getString(4),
|
||||
cursor.getString(5),
|
||||
cursor.getString(6)?.let(listOfStringsAdapter::decode),
|
||||
cursor.getString(7)!!,
|
||||
cursor.getLong(8)!!,
|
||||
cursor.getString(9),
|
||||
cursor.getLong(10)!! == 1L,
|
||||
cursor.getLong(11) ?: 0,
|
||||
null,
|
||||
cursor.getLong(13)!! == 1L,
|
||||
cursor.getLong(14)!!,
|
||||
cursor.getLong(15)!!,
|
||||
cursor.getLong(16)!!,
|
||||
cursor.getLong(17)!!,
|
||||
cursor.getString(18)?.let(listOfStringsAndAdapter::decode),
|
||||
updateStrategyAdapter.decode(cursor.getLong(19)!!),
|
||||
),
|
||||
unreadCount = cursor.getLong(20)!!,
|
||||
readCount = cursor.getLong(21)!!,
|
||||
category = cursor.getLong(22)!!,
|
||||
)
|
||||
}
|
||||
|
||||
class LibraryQuery(val driver: SqlDriver) : Query<LibraryManga>(copyOnWriteList(), mapper) {
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
package eu.kanade.data.manga
|
||||
|
||||
import eu.kanade.data.listOfStringsAndAdapter
|
||||
import eu.kanade.domain.library.model.LibraryManga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
||||
import eu.kanade.tachiyomi.source.model.UpdateStrategy
|
||||
|
||||
val mangaMapper: (Long, Long, String, String?, String?, String?, List<String>?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, List<String>?, UpdateStrategy) -> Manga =
|
||||
@@ -35,29 +34,32 @@ val mangaMapper: (Long, Long, String, String?, String?, String?, List<String>?,
|
||||
}
|
||||
|
||||
val libraryManga: (Long, Long, String, String?, String?, String?, List<String>?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, List<String>?, UpdateStrategy, Long, Long, Long) -> LibraryManga =
|
||||
{ _id, source, url, artist, author, description, genre, title, status, thumbnail_url, favorite, last_update, next_update, initialized, viewer, chapter_flags, cover_last_modified, date_added, filtered_scanlators, update_strategy, unread_count, read_count, category ->
|
||||
LibraryManga().apply {
|
||||
this.id = _id
|
||||
this.source = source
|
||||
this.url = url
|
||||
this.artist = artist
|
||||
this.author = author
|
||||
this.description = description
|
||||
this.genre = genre?.joinToString()
|
||||
this.title = title
|
||||
this.status = status.toInt()
|
||||
this.thumbnail_url = thumbnail_url
|
||||
this.favorite = favorite
|
||||
this.last_update = last_update ?: 0
|
||||
this.update_strategy = update_strategy
|
||||
this.initialized = initialized
|
||||
this.viewer_flags = viewer.toInt()
|
||||
this.chapter_flags = chapter_flags.toInt()
|
||||
this.cover_last_modified = cover_last_modified
|
||||
this.date_added = date_added
|
||||
this.filtered_scanlators = filtered_scanlators?.let(listOfStringsAndAdapter::encode)
|
||||
this.unreadCount = unread_count.toInt()
|
||||
this.readCount = read_count.toInt()
|
||||
this.category = category.toInt()
|
||||
}
|
||||
{ _id, source, url, artist, author, description, genre, title, status, thumbnailUrl, favorite, lastUpdate, nextUpdate, initialized, viewerFlags, chapterFlags, coverLastModified, dateAdded, filteredScanlators, updateStrategy, unreadCount, readCount, category ->
|
||||
LibraryManga(
|
||||
manga = mangaMapper(
|
||||
_id,
|
||||
source,
|
||||
url,
|
||||
artist,
|
||||
author,
|
||||
description,
|
||||
genre,
|
||||
title,
|
||||
status,
|
||||
thumbnailUrl,
|
||||
favorite,
|
||||
lastUpdate,
|
||||
nextUpdate,
|
||||
initialized,
|
||||
viewerFlags,
|
||||
chapterFlags,
|
||||
coverLastModified,
|
||||
dateAdded,
|
||||
filteredScanlators,
|
||||
updateStrategy,
|
||||
),
|
||||
category = category,
|
||||
unreadCount = unreadCount,
|
||||
readCount = readCount,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ import eu.kanade.data.DatabaseHandler
|
||||
import eu.kanade.data.listOfStringsAdapter
|
||||
import eu.kanade.data.listOfStringsAndAdapter
|
||||
import eu.kanade.data.updateStrategyAdapter
|
||||
import eu.kanade.domain.library.model.LibraryManga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.manga.model.MangaUpdate
|
||||
import eu.kanade.domain.manga.repository.MangaRepository
|
||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
||||
import eu.kanade.tachiyomi.util.system.logcat
|
||||
import eu.kanade.tachiyomi.util.system.toLong
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
Reference in New Issue
Block a user