From 11c5802255b2fbf7f4f03db2393bd4db1b4c834c Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Tue, 29 Jun 2021 16:08:41 +0800 Subject: [PATCH] feat(sse): publish event when series is completely marked as read or unread --- .../kotlin/org/gotson/komga/domain/model/DomainEvent.kt | 2 ++ .../org/gotson/komga/domain/service/SeriesLifecycle.kt | 2 ++ .../kotlin/org/gotson/komga/interfaces/sse/SseController.kt | 3 +++ .../komga/interfaces/sse/dto/ReadProgressSeriesSseDto.kt | 6 ++++++ 4 files changed, 13 insertions(+) create mode 100644 komga/src/main/kotlin/org/gotson/komga/interfaces/sse/dto/ReadProgressSeriesSseDto.kt diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/model/DomainEvent.kt b/komga/src/main/kotlin/org/gotson/komga/domain/model/DomainEvent.kt index 383c1678b..44eb95d45 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/model/DomainEvent.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/model/DomainEvent.kt @@ -28,6 +28,8 @@ sealed class DomainEvent : Serializable { data class ReadProgressChanged(val progress: ReadProgress) : DomainEvent() data class ReadProgressDeleted(val progress: ReadProgress) : DomainEvent() + data class ReadProgressSeriesChanged(val seriesId: String, val userId: String) : DomainEvent() + data class ReadProgressSeriesDeleted(val seriesId: String, val userId: String) : DomainEvent() data class ThumbnailBookAdded(val thumbnail: ThumbnailBook) : DomainEvent() data class ThumbnailSeriesAdded(val thumbnail: ThumbnailSeries) : DomainEvent() diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt index ea80d097a..f10da51e4 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt @@ -161,6 +161,7 @@ class SeriesLifecycle( readProgressRepository.save(progresses) progresses.forEach { eventPublisher.publishEvent(DomainEvent.ReadProgressChanged(it)) } + eventPublisher.publishEvent(DomainEvent.ReadProgressSeriesChanged(seriesId, user.id)) } fun deleteReadProgress(seriesId: String, user: KomgaUser) { @@ -169,6 +170,7 @@ class SeriesLifecycle( readProgressRepository.deleteByBookIdsAndUserId(bookIds, user.id) progresses.forEach { eventPublisher.publishEvent(DomainEvent.ReadProgressDeleted(it)) } + eventPublisher.publishEvent(DomainEvent.ReadProgressSeriesDeleted(seriesId, user.id)) } @Transactional diff --git a/komga/src/main/kotlin/org/gotson/komga/interfaces/sse/SseController.kt b/komga/src/main/kotlin/org/gotson/komga/interfaces/sse/SseController.kt index 94845fcdb..c11795cae 100644 --- a/komga/src/main/kotlin/org/gotson/komga/interfaces/sse/SseController.kt +++ b/komga/src/main/kotlin/org/gotson/komga/interfaces/sse/SseController.kt @@ -15,6 +15,7 @@ import org.gotson.komga.interfaces.sse.dto.BookSseDto import org.gotson.komga.interfaces.sse.dto.CollectionSseDto import org.gotson.komga.interfaces.sse.dto.LibrarySseDto import org.gotson.komga.interfaces.sse.dto.ReadListSseDto +import org.gotson.komga.interfaces.sse.dto.ReadProgressSeriesSseDto import org.gotson.komga.interfaces.sse.dto.ReadProgressSseDto import org.gotson.komga.interfaces.sse.dto.SeriesSseDto import org.gotson.komga.interfaces.sse.dto.TaskQueueSseDto @@ -89,6 +90,8 @@ class SseController( is DomainEvent.ReadProgressChanged -> emitSse("ReadProgressChanged", ReadProgressSseDto(event.progress.bookId, event.progress.userId), userIdOnly = event.progress.userId) is DomainEvent.ReadProgressDeleted -> emitSse("ReadProgressDeleted", ReadProgressSseDto(event.progress.bookId, event.progress.userId), userIdOnly = event.progress.userId) + is DomainEvent.ReadProgressSeriesChanged -> emitSse("ReadProgressSeriesChanged", ReadProgressSeriesSseDto(event.seriesId, event.userId), userIdOnly = event.userId) + is DomainEvent.ReadProgressSeriesDeleted -> emitSse("ReadProgressSeriesDeleted", ReadProgressSeriesSseDto(event.seriesId, event.userId), userIdOnly = event.userId) is DomainEvent.ThumbnailBookAdded -> emitSse("ThumbnailBookAdded", ThumbnailBookSseDto(event.thumbnail.bookId, bookRepository.getSeriesIdOrNull(event.thumbnail.bookId).orEmpty())) is DomainEvent.ThumbnailSeriesAdded -> emitSse("ThumbnailSeriesAdded", ThumbnailSeriesSseDto(event.thumbnail.seriesId)) diff --git a/komga/src/main/kotlin/org/gotson/komga/interfaces/sse/dto/ReadProgressSeriesSseDto.kt b/komga/src/main/kotlin/org/gotson/komga/interfaces/sse/dto/ReadProgressSeriesSseDto.kt new file mode 100644 index 000000000..b0a5642b1 --- /dev/null +++ b/komga/src/main/kotlin/org/gotson/komga/interfaces/sse/dto/ReadProgressSeriesSseDto.kt @@ -0,0 +1,6 @@ +package org.gotson.komga.interfaces.sse.dto + +data class ReadProgressSeriesSseDto( + val seriesId: String, + val userId: String, +)