diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ChapterMutation.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ChapterMutation.kt index 2ec3cddd96..5ad52d4882 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ChapterMutation.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ChapterMutation.kt @@ -10,7 +10,6 @@ import suwayomi.tachidesk.graphql.types.ChapterMetaType import suwayomi.tachidesk.graphql.types.ChapterType import suwayomi.tachidesk.manga.impl.Chapter 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.ChapterTable import suwayomi.tachidesk.server.JavalinSetup.future @@ -70,13 +69,6 @@ class ChapterMutation { 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) - } } } } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/TrackMutation.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/TrackMutation.kt index 58f6a389b0..945c3dbea5 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/TrackMutation.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/TrackMutation.kt @@ -133,6 +133,33 @@ class TrackMutation { } } + data class TrackProgressInput( + val clientMutationId: String? = null, + val mangaId: Int, + ) + + data class TrackProgressPayload( + val clientMutationId: String?, + val trackRecords: List, + ) + + fun trackProgress(input: TrackProgressInput): CompletableFuture { + val (clientMutationId, mangaId) = input + + return future { + Track.trackChapter(mangaId) + val trackRecords = + transaction { + TrackRecordTable.select { TrackRecordTable.mangaId eq mangaId } + .toList() + } + TrackProgressPayload( + clientMutationId, + trackRecords.map { TrackRecordType(it) }, + ) + } + } + data class UpdateTrackInput( val clientMutationId: String? = null, val recordId: Int, diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/Track.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/Track.kt index fb791a42a8..6d9bdc4426 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/Track.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/Track.kt @@ -250,7 +250,7 @@ object Track { } } - private suspend fun trackChapter(mangaId: Int) { + suspend fun trackChapter(mangaId: Int) { val chapter = queryMaxReadChapter(mangaId) val chapterNumber = chapter?.get(ChapterTable.chapter_number) logger.debug {