feat(sse): publish event when series is completely marked as read or unread

This commit is contained in:
Gauthier Roebroeck 2021-06-29 16:08:41 +08:00
parent 19e3f18cad
commit 11c5802255
4 changed files with 13 additions and 0 deletions

View file

@ -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()

View file

@ -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

View file

@ -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))

View file

@ -0,0 +1,6 @@
package org.gotson.komga.interfaces.sse.dto
data class ReadProgressSeriesSseDto(
val seriesId: String,
val userId: String,
)