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

View File

@@ -158,7 +158,7 @@ object Track {
var lastChapterRead: Double? = null
var startDate: Long? = null
if (chapterNumber != null && chapterNumber > 0) {
if (chapterNumber != null && chapterNumber > 0 && chapterNumber > track.last_chapter_read) {
lastChapterRead = chapterNumber.toDouble()
}
if (track.started_reading_date <= 0) {
@@ -253,10 +253,11 @@ object Track {
private suspend fun trackChapter(mangaId: Int) {
val chapter = queryMaxReadChapter(mangaId)
val chapterNumber = chapter?.get(ChapterTable.chapter_number)
logger.debug {
"[Tracker]mangaId $mangaId chapter:${chapter?.get(ChapterTable.name)} " +
"chapterNumber:$chapterNumber"
"trackChapter(mangaId= $mangaId): maxReadChapter= #$chapterNumber ${chapter?.get(ChapterTable.name)}"
}
if (chapterNumber != null && chapterNumber > 0) {
trackChapter(mangaId, chapterNumber.toDouble())
}
@@ -282,17 +283,21 @@ object Track {
}
records.forEach {
val tracker = TrackerManager.getTracker(it[TrackRecordTable.trackerId])
val lastChapterRead = it[TrackRecordTable.lastChapterRead]
val isLogin = tracker?.isLoggedIn == true
val tracker = TrackerManager.getTracker(it[TrackRecordTable.trackerId]) ?: return@forEach
val track = it.toTrack()
tracker.refresh(track)
upsertTrackRecord(track)
val lastChapterRead = track.last_chapter_read
logger.debug {
"[Tracker]trackChapter id:${tracker?.id} login:$isLogin " +
"mangaId:$mangaId dbChapter:$lastChapterRead toChapter:$chapterNumber"
"trackChapter(mangaId= $mangaId, chapterNumber= $chapterNumber): tracker= $tracker, remoteLastReadChapter= $lastChapterRead"
}
if (isLogin && chapterNumber > lastChapterRead) {
it[TrackRecordTable.lastChapterRead] = chapterNumber
val track = it.toTrack()
tracker?.update(track, true)
if (tracker.isLoggedIn && chapterNumber > lastChapterRead) {
track.last_chapter_read = chapterNumber.toFloat()
tracker.update(track, true)
upsertTrackRecord(track)
}
}

View File

@@ -17,6 +17,8 @@ abstract class Tracker(val id: Int, val name: String) {
// Application and remote support for reading dates
open val supportsReadingDates: Boolean = false
override fun toString() = "$name ($id) (isLoggedIn= $isLoggedIn, isAuthExpired= ${getIfAuthExpired()})"
abstract fun getLogo(): String
abstract fun getStatusList(): List<Int>