From ca580d6bf0be53b36ad3bf0d624756baf31441de Mon Sep 17 00:00:00 2001 From: Matthieu Rosset Date: Tue, 7 Jul 2026 16:24:35 +1000 Subject: [PATCH 1/2] fix: register noop handler for Kavita's ChapterUpdated SignalR event Kavita sends a ChapterUpdated event with a payload containing SeriesId and ChapterId, but Komf had no handler registered for it. The SignalR client logged WARN/ERROR on every chapter update due to the argument count mismatch (1 provided, 0 expected). Add ChapterUpdatedEvent model matching Kavita's payload and register a noop handler in registerInvocations() alongside the other ignored events. --- .../mediaserver/kavita/KavitaEventHandler.kt | 2 ++ .../kavita/model/events/ChapterUpdatedEvent.kt | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/model/events/ChapterUpdatedEvent.kt diff --git a/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt b/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt index e8d097ff..f7ce21ce 100644 --- a/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt +++ b/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt @@ -20,6 +20,7 @@ import snd.komf.mediaserver.BookEvent import snd.komf.mediaserver.MediaServerEventListener import snd.komf.mediaserver.SeriesEvent import snd.komf.mediaserver.kavita.model.KavitaVolumeId +import snd.komf.mediaserver.kavita.model.events.ChapterUpdatedEvent import snd.komf.mediaserver.kavita.model.events.CoverUpdateEvent import snd.komf.mediaserver.kavita.model.events.NotificationProgressEvent import snd.komf.mediaserver.kavita.model.events.SeriesRemovedEvent @@ -172,6 +173,7 @@ class KavitaEventHandler( hubConnection.on("ScanSeries", { }, Object::class.java) hubConnection.on("ScanProgress", { }, Object::class.java) hubConnection.on("SendingToDevice", { }, Object::class.java) + hubConnection.on("ChapterUpdated", { _: ChapterUpdatedEvent -> }, ChapterUpdatedEvent::class.java) hubConnection.on("SeriesAdded", { }, Object::class.java) hubConnection.on("SeriesAddedToCollection", { }, Object::class.java) hubConnection.on("SiteThemeProgress", { }, Object::class.java) diff --git a/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/model/events/ChapterUpdatedEvent.kt b/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/model/events/ChapterUpdatedEvent.kt new file mode 100644 index 00000000..c5168330 --- /dev/null +++ b/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/model/events/ChapterUpdatedEvent.kt @@ -0,0 +1,16 @@ +package snd.komf.mediaserver.kavita.model.events + +data class ChapterUpdatedEvent( + val body: Body, + val name: String?, + val title: String?, + val subTitle: String?, + val eventType: String?, + val progress: String?, +) { + + data class Body( + val seriesId: Int, + val chapterId: Int, + ) +} From d161b38ad54d947b518f40696affc6a67426937d Mon Sep 17 00:00:00 2001 From: Matthieu Rosset Date: Wed, 8 Jul 2026 14:11:57 +1000 Subject: [PATCH 2/2] fix: register noop handlers for ReadingSessionUpdate and ReadingSessionClose --- .../kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt b/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt index f7ce21ce..e9adcc90 100644 --- a/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt +++ b/komf-mediaserver/src/commonMain/kotlin/snd/komf/mediaserver/kavita/KavitaEventHandler.kt @@ -181,5 +181,7 @@ class KavitaEventHandler( hubConnection.on("UserUpdate", { }, Object::class.java) hubConnection.on("UserProgressUpdate", { }, Object::class.java) hubConnection.on("WordCountAnalyzerProgress", { }, Object::class.java) + hubConnection.on("ReadingSessionUpdate", { }, Object::class.java) + hubConnection.on("ReadingSessionClose", { }, Object::class.java) } } \ No newline at end of file