Fix graphql tracking (#840)

This commit is contained in:
Mitchell Syer
2024-01-21 20:04:24 -05:00
committed by GitHub
parent 0621138478
commit b9053e3057
3 changed files with 18 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ import suwayomi.tachidesk.graphql.types.ChapterMetaType
import suwayomi.tachidesk.graphql.types.ChapterType import suwayomi.tachidesk.graphql.types.ChapterType
import suwayomi.tachidesk.manga.impl.Chapter import suwayomi.tachidesk.manga.impl.Chapter
import suwayomi.tachidesk.manga.impl.chapter.getChapterDownloadReadyById import suwayomi.tachidesk.manga.impl.chapter.getChapterDownloadReadyById
import suwayomi.tachidesk.manga.impl.track.Track
import suwayomi.tachidesk.manga.model.table.ChapterMetaTable import suwayomi.tachidesk.manga.model.table.ChapterMetaTable
import suwayomi.tachidesk.manga.model.table.ChapterTable import suwayomi.tachidesk.manga.model.table.ChapterTable
import suwayomi.tachidesk.server.JavalinSetup.future import suwayomi.tachidesk.server.JavalinSetup.future
@@ -69,6 +70,13 @@ class ChapterMutation {
update[lastReadAt] = now update[lastReadAt] = now
} }
} }
if (patch.isRead == true) {
val mangaIds =
ChapterTable.slice(ChapterTable.manga).select { ChapterTable.id inList ids }
.map { it[ChapterTable.manga].value }
.toSet()
Track.asyncTrackChapter(mangaIds)
}
} }
} }
} }

View File

@@ -439,7 +439,7 @@ object Chapter {
} }
if (isRead == true || markPrevRead == true) { if (isRead == true || markPrevRead == true) {
Track.asyncTrackChapter(mangaId) Track.asyncTrackChapter(setOf(mangaId))
} }
} }
@@ -527,9 +527,9 @@ object Chapter {
transaction { transaction {
ChapterTable.select { condition } ChapterTable.select { condition }
.map { it[ChapterTable.manga].value } .map { it[ChapterTable.manga].value }
.distinct() .toSet()
} }
mangaIds.forEach { Track.asyncTrackChapter(it) } Track.asyncTrackChapter(mangaIds)
} }
} }

View File

@@ -235,9 +235,14 @@ object Track {
upsertTrackRecord(track) upsertTrackRecord(track)
} }
fun asyncTrackChapter(mangaId: Int) { fun asyncTrackChapter(mangaIds: Set<Int>) {
if (!TrackerManager.hasLoggedTracker()) {
return
}
scope.launch { scope.launch {
trackChapter(mangaId) mangaIds.forEach {
trackChapter(it)
}
} }
} }
@@ -266,10 +271,6 @@ object Track {
mangaId: Int, mangaId: Int,
chapterNumber: Double, chapterNumber: Double,
) { ) {
if (!TrackerManager.hasLoggedTracker()) {
return
}
val records = val records =
transaction { transaction {
TrackRecordTable.select { TrackRecordTable.mangaId eq mangaId } TrackRecordTable.select { TrackRecordTable.mangaId eq mangaId }