Fix/tracking progress update in case local chapter is smaller than remote (#917)

* Update lastReadChapter on bind in case it's greater than remote

* Update lastReadChapter on chapter read in case it's greater than remote

* [Logging] Improve logs
This commit is contained in:
schroda
2024-03-31 19:20:27 +02:00
committed by GitHub
parent a9efca8687
commit 7d92dbc5c0
2 changed files with 19 additions and 12 deletions
@@ -158,7 +158,7 @@ object Track {
var lastChapterRead: Double? = null var lastChapterRead: Double? = null
var startDate: Long? = null var startDate: Long? = null
if (chapterNumber != null && chapterNumber > 0) { if (chapterNumber != null && chapterNumber > 0 && chapterNumber > track.last_chapter_read) {
lastChapterRead = chapterNumber.toDouble() lastChapterRead = chapterNumber.toDouble()
} }
if (track.started_reading_date <= 0) { if (track.started_reading_date <= 0) {
@@ -253,10 +253,11 @@ object Track {
private suspend fun trackChapter(mangaId: Int) { private suspend fun trackChapter(mangaId: Int) {
val chapter = queryMaxReadChapter(mangaId) val chapter = queryMaxReadChapter(mangaId)
val chapterNumber = chapter?.get(ChapterTable.chapter_number) val chapterNumber = chapter?.get(ChapterTable.chapter_number)
logger.debug { logger.debug {
"[Tracker]mangaId $mangaId chapter:${chapter?.get(ChapterTable.name)} " + "trackChapter(mangaId= $mangaId): maxReadChapter= #$chapterNumber ${chapter?.get(ChapterTable.name)}"
"chapterNumber:$chapterNumber"
} }
if (chapterNumber != null && chapterNumber > 0) { if (chapterNumber != null && chapterNumber > 0) {
trackChapter(mangaId, chapterNumber.toDouble()) trackChapter(mangaId, chapterNumber.toDouble())
} }
@@ -282,17 +283,21 @@ object Track {
} }
records.forEach { records.forEach {
val tracker = TrackerManager.getTracker(it[TrackRecordTable.trackerId]) val tracker = TrackerManager.getTracker(it[TrackRecordTable.trackerId]) ?: return@forEach
val lastChapterRead = it[TrackRecordTable.lastChapterRead]
val isLogin = tracker?.isLoggedIn == true val track = it.toTrack()
tracker.refresh(track)
upsertTrackRecord(track)
val lastChapterRead = track.last_chapter_read
logger.debug { logger.debug {
"[Tracker]trackChapter id:${tracker?.id} login:$isLogin " + "trackChapter(mangaId= $mangaId, chapterNumber= $chapterNumber): tracker= $tracker, remoteLastReadChapter= $lastChapterRead"
"mangaId:$mangaId dbChapter:$lastChapterRead toChapter:$chapterNumber"
} }
if (isLogin && chapterNumber > lastChapterRead) {
it[TrackRecordTable.lastChapterRead] = chapterNumber if (tracker.isLoggedIn && chapterNumber > lastChapterRead) {
val track = it.toTrack() track.last_chapter_read = chapterNumber.toFloat()
tracker?.update(track, true) tracker.update(track, true)
upsertTrackRecord(track) upsertTrackRecord(track)
} }
} }
@@ -17,6 +17,8 @@ abstract class Tracker(val id: Int, val name: String) {
// Application and remote support for reading dates // Application and remote support for reading dates
open val supportsReadingDates: Boolean = false open val supportsReadingDates: Boolean = false
override fun toString() = "$name ($id) (isLoggedIn= $isLoggedIn, isAuthExpired= ${getIfAuthExpired()})"
abstract fun getLogo(): String abstract fun getLogo(): String
abstract fun getStatusList(): List<Int> abstract fun getStatusList(): List<Int>