Move trigger for track progress update to client (#918)

Triggering the progress update on server side does not work because the client needs to get the mutation result, otherwise, the clients cache will get outdated
This commit is contained in:
schroda
2024-03-31 19:20:37 +02:00
committed by GitHub
parent 7d92dbc5c0
commit 9db612bf03
3 changed files with 28 additions and 9 deletions

View File

@@ -10,7 +10,6 @@ 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
@@ -70,13 +69,6 @@ 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

@@ -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<TrackRecordType>,
)
fun trackProgress(input: TrackProgressInput): CompletableFuture<TrackProgressPayload> {
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( data class UpdateTrackInput(
val clientMutationId: String? = null, val clientMutationId: String? = null,
val recordId: Int, val recordId: Int,

View File

@@ -250,7 +250,7 @@ object Track {
} }
} }
private suspend fun trackChapter(mangaId: Int) { 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)