Adapt model implementation for TachiyomiX 1.6 (#3412)

This commit is contained in:
AntsyLich
2026-06-15 23:32:39 +06:00
committed by GitHub
parent f00cac265f
commit 94cab02c1e
26 changed files with 177 additions and 28 deletions
@@ -2,6 +2,10 @@ package tachiyomi.data
import app.cash.sqldelight.ColumnAdapter
import eu.kanade.tachiyomi.source.model.UpdateStrategy
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.encodeToJsonElement
import kotlinx.serialization.json.jsonObject
import java.util.Date
object DateColumnAdapter : ColumnAdapter<Date, Long> {
@@ -27,3 +31,13 @@ object UpdateStrategyColumnAdapter : ColumnAdapter<UpdateStrategy, Long> {
override fun encode(value: UpdateStrategy): Long = value.ordinal.toLong()
}
object MemoColumnAdapter : ColumnAdapter<JsonObject, ByteArray> {
override fun decode(databaseValue: ByteArray): JsonObject {
return Json.decodeFromString<JsonObject>(databaseValue.decodeToString())
}
override fun encode(value: JsonObject): ByteArray {
return value.toString().encodeToByteArray()
}
}
@@ -4,10 +4,13 @@ import app.cash.sqldelight.async.coroutines.awaitAsList
import app.cash.sqldelight.async.coroutines.awaitAsOne
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
import kotlinx.coroutines.flow.Flow
import kotlinx.serialization.json.JsonObject
import logcat.LogPriority
import tachiyomi.core.common.util.lang.toLong
import tachiyomi.core.common.util.system.logcat
import tachiyomi.data.Database
import tachiyomi.data.MemoColumnAdapter
import tachiyomi.data.MemoColumnAdapter.encode
import tachiyomi.data.subscribeToList
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.model.ChapterUpdate
@@ -34,6 +37,7 @@ class ChapterRepositoryImpl(
chapter.dateFetch,
chapter.dateUpload,
chapter.version,
chapter.memo,
)
.awaitAsOne()
chapter.copy(id = chapterId)
@@ -71,6 +75,7 @@ class ChapterRepositoryImpl(
chapterId = chapterUpdate.id,
version = chapterUpdate.version,
isSyncing = 0,
memo = chapterUpdate.memo?.let(MemoColumnAdapter::encode),
)
}
}
@@ -143,6 +148,7 @@ class ChapterRepositoryImpl(
lastModifiedAt: Long,
version: Long,
isSyncing: Long,
memo: JsonObject,
): Chapter = Chapter(
id = id,
mangaId = mangaId,
@@ -158,5 +164,6 @@ class ChapterRepositoryImpl(
scanlator = scanlator,
lastModifiedAt = lastModifiedAt,
version = version,
memo = memo,
)
}
@@ -1,6 +1,7 @@
package tachiyomi.data.manga
import eu.kanade.tachiyomi.source.model.UpdateStrategy
import kotlinx.serialization.json.JsonObject
import tachiyomi.domain.library.model.LibraryManga
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.model.MangaWithChapterCount
@@ -33,6 +34,7 @@ object MangaMapper {
version: Long,
isSyncing: Long,
notes: String,
memo: JsonObject,
): Manga = Manga(
id = id,
source = source,
@@ -58,6 +60,7 @@ object MangaMapper {
favoriteModifiedAt = favoriteModifiedAt,
version = version,
notes = notes,
memo = memo,
)
fun mapLibraryManga(
@@ -86,6 +89,7 @@ object MangaMapper {
version: Long,
isSyncing: Long,
notes: String,
memo: JsonObject,
totalCount: Long,
readCount: Double,
latestUpload: Long,
@@ -120,6 +124,7 @@ object MangaMapper {
version,
isSyncing,
notes,
memo,
),
categories = categories.split(",").map { it.toLong() },
totalChapters = totalCount,
@@ -156,6 +161,7 @@ object MangaMapper {
version: Long,
isSyncing: Long,
notes: String,
memo: JsonObject,
totalCount: Long,
): MangaWithChapterCount = MangaWithChapterCount(
manga = mapManga(
@@ -184,6 +190,7 @@ object MangaMapper {
version,
isSyncing,
notes,
memo,
),
chapterCount = totalCount,
)
@@ -7,6 +7,7 @@ import kotlinx.coroutines.flow.Flow
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.data.Database
import tachiyomi.data.MemoColumnAdapter
import tachiyomi.data.StringListColumnAdapter
import tachiyomi.data.UpdateStrategyColumnAdapter
import tachiyomi.data.subscribeToList
@@ -154,6 +155,7 @@ class MangaRepositoryImpl(
dateAdded = it.dateAdded,
updateStrategy = it.updateStrategy,
version = it.version,
memo = it.memo,
updateTitle = it.title.isNotBlank(),
updateCover = !it.thumbnailUrl.isNullOrBlank(),
updateDetails = it.initialized,
@@ -191,6 +193,7 @@ class MangaRepositoryImpl(
version = value.version,
isSyncing = 0,
notes = value.notes,
memo = value.memo?.let(MemoColumnAdapter::encode),
)
}
}