Migrate more track DB calls to SQLDelight
This commit is contained in:
@@ -12,13 +12,13 @@ import eu.kanade.tachiyomi.data.track.shikimori.Shikimori
|
||||
class TrackManager(context: Context) {
|
||||
|
||||
companion object {
|
||||
const val MYANIMELIST = 1
|
||||
const val ANILIST = 2
|
||||
const val KITSU = 3
|
||||
const val SHIKIMORI = 4
|
||||
const val BANGUMI = 5
|
||||
const val KOMGA = 6
|
||||
const val MANGA_UPDATES = 7
|
||||
const val MYANIMELIST = 1L
|
||||
const val ANILIST = 2L
|
||||
const val KITSU = 3L
|
||||
const val SHIKIMORI = 4L
|
||||
const val BANGUMI = 5L
|
||||
const val KOMGA = 6L
|
||||
const val MANGA_UPDATES = 7L
|
||||
}
|
||||
|
||||
val myAnimeList = MyAnimeList(context, MYANIMELIST)
|
||||
@@ -37,7 +37,7 @@ class TrackManager(context: Context) {
|
||||
|
||||
val services = listOf(myAnimeList, aniList, kitsu, shikimori, bangumi, komga, mangaUpdates)
|
||||
|
||||
fun getService(id: Int) = services.find { it.id == id }
|
||||
fun getService(id: Long) = services.find { it.id == id }
|
||||
|
||||
fun hasLoggedServices() = services.any { it.isLogged }
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import okhttp3.OkHttpClient
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
abstract class TrackService(val id: Int) {
|
||||
abstract class TrackService(val id: Long) {
|
||||
|
||||
val preferences: PreferencesHelper by injectLazy()
|
||||
val networkService: NetworkHelper by injectLazy()
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class Anilist(private val context: Context, id: Int) : TrackService(id) {
|
||||
class Anilist(private val context: Context, id: Long) : TrackService(id) {
|
||||
|
||||
companion object {
|
||||
const val READING = 1
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class Bangumi(private val context: Context, id: Int) : TrackService(id) {
|
||||
class Bangumi(private val context: Context, id: Long) : TrackService(id) {
|
||||
|
||||
private val json: Json by injectLazy()
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.data.track.job
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.content.edit
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.domain.track.model.Track
|
||||
import eu.kanade.tachiyomi.util.system.logcat
|
||||
import logcat.LogPriority
|
||||
|
||||
@@ -16,8 +16,8 @@ class DelayedTrackingStore(context: Context) {
|
||||
fun addItem(track: Track) {
|
||||
val trackId = track.id.toString()
|
||||
val (_, lastChapterRead) = preferences.getString(trackId, "0:0.0")!!.split(":")
|
||||
if (track.last_chapter_read > lastChapterRead.toFloat()) {
|
||||
val value = "${track.manga_id}:${track.last_chapter_read}"
|
||||
if (track.lastChapterRead > lastChapterRead.toFloat()) {
|
||||
val value = "${track.mangaId}:${track.lastChapterRead}"
|
||||
logcat(LogPriority.DEBUG) { "Queuing track item: $trackId, $value" }
|
||||
preferences.edit {
|
||||
putString(trackId, value)
|
||||
|
||||
@@ -9,7 +9,10 @@ import androidx.work.NetworkType
|
||||
import androidx.work.OneTimeWorkRequestBuilder
|
||||
import androidx.work.WorkManager
|
||||
import androidx.work.WorkerParameters
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.domain.manga.interactor.GetMangaById
|
||||
import eu.kanade.domain.track.interactor.GetTracks
|
||||
import eu.kanade.domain.track.interactor.InsertTrack
|
||||
import eu.kanade.domain.track.model.toDbTrack
|
||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||
import eu.kanade.tachiyomi.util.system.logcat
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -23,26 +26,27 @@ class DelayedTrackingUpdateJob(context: Context, workerParams: WorkerParameters)
|
||||
CoroutineWorker(context, workerParams) {
|
||||
|
||||
override suspend fun doWork(): Result {
|
||||
val db = Injekt.get<DatabaseHelper>()
|
||||
val getMangaById = Injekt.get<GetMangaById>()
|
||||
val getTracks = Injekt.get<GetTracks>()
|
||||
val insertTrack = Injekt.get<InsertTrack>()
|
||||
|
||||
val trackManager = Injekt.get<TrackManager>()
|
||||
val delayedTrackingStore = Injekt.get<DelayedTrackingStore>()
|
||||
|
||||
withContext(Dispatchers.IO) {
|
||||
val tracks = delayedTrackingStore.getItems().mapNotNull {
|
||||
val manga = db.getManga(it.mangaId).executeAsBlocking() ?: return@withContext
|
||||
db.getTracks(manga.id).executeAsBlocking()
|
||||
val manga = getMangaById.await(it.mangaId) ?: return@withContext
|
||||
getTracks.await(manga.id)
|
||||
.find { track -> track.id == it.trackId }
|
||||
?.also { track ->
|
||||
track.last_chapter_read = it.lastChapterRead
|
||||
}
|
||||
?.copy(lastChapterRead = it.lastChapterRead.toDouble())
|
||||
}
|
||||
|
||||
tracks.forEach { track ->
|
||||
try {
|
||||
val service = trackManager.getService(track.sync_id)
|
||||
val service = trackManager.getService(track.syncId)
|
||||
if (service != null && service.isLogged) {
|
||||
service.update(track, true)
|
||||
db.insertTrack(track).executeAsBlocking()
|
||||
service.update(track.toDbTrack(), true)
|
||||
insertTrack.await(track)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
logcat(LogPriority.ERROR, e)
|
||||
|
||||
@@ -13,7 +13,7 @@ import kotlinx.serialization.json.Json
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.text.DecimalFormat
|
||||
|
||||
class Kitsu(private val context: Context, id: Int) : TrackService(id) {
|
||||
class Kitsu(private val context: Context, id: Long) : TrackService(id) {
|
||||
|
||||
companion object {
|
||||
const val READING = 1
|
||||
|
||||
@@ -16,7 +16,7 @@ import okhttp3.OkHttpClient
|
||||
import eu.kanade.domain.manga.model.Manga as DomainManga
|
||||
import eu.kanade.domain.track.model.Track as DomainTrack
|
||||
|
||||
class Komga(private val context: Context, id: Int) : TrackService(id), EnhancedTrackService, NoLoginTrackService {
|
||||
class Komga(private val context: Context, id: Long) : TrackService(id), EnhancedTrackService, NoLoginTrackService {
|
||||
|
||||
companion object {
|
||||
const val UNREAD = 1
|
||||
|
||||
@@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.data.track.mangaupdates.dto.copyTo
|
||||
import eu.kanade.tachiyomi.data.track.mangaupdates.dto.toTrackSearch
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
|
||||
class MangaUpdates(private val context: Context, id: Int) : TrackService(id) {
|
||||
class MangaUpdates(private val context: Context, id: Long) : TrackService(id) {
|
||||
|
||||
companion object {
|
||||
const val READING_LIST = 0
|
||||
|
||||
@@ -23,7 +23,7 @@ data class Record(
|
||||
val latestChapter: Int? = null,
|
||||
)
|
||||
|
||||
fun Record.toTrackSearch(id: Int): TrackSearch {
|
||||
fun Record.toTrackSearch(id: Long): TrackSearch {
|
||||
return TrackSearch.create(id).apply {
|
||||
media_id = this@toTrackSearch.seriesId ?: 0L
|
||||
title = this@toTrackSearch.title?.htmlDecode() ?: ""
|
||||
|
||||
@@ -61,8 +61,8 @@ class TrackSearch : Track {
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun create(serviceId: Int): TrackSearch = TrackSearch().apply {
|
||||
sync_id = serviceId
|
||||
fun create(serviceId: Long): TrackSearch = TrackSearch().apply {
|
||||
sync_id = serviceId.toInt()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class MyAnimeList(private val context: Context, id: Int) : TrackService(id) {
|
||||
class MyAnimeList(private val context: Context, id: Long) : TrackService(id) {
|
||||
|
||||
companion object {
|
||||
const val READING = 1
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class Shikimori(private val context: Context, id: Int) : TrackService(id) {
|
||||
class Shikimori(private val context: Context, id: Long) : TrackService(id) {
|
||||
|
||||
companion object {
|
||||
const val READING = 1
|
||||
|
||||
Reference in New Issue
Block a user