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 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>
|
||||||
|
|||||||
Reference in New Issue
Block a user