mirror of
https://github.com/Suwayomi/Tachidesk.git
synced 2025-12-10 06:42:07 +01:00
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:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user