From 42e373c4443ee638335e38cea4daa0542e9f82c4 Mon Sep 17 00:00:00 2001 From: onewhobridges Date: Thu, 1 Oct 2026 15:50:13 -0700 Subject: [PATCH] fix: apply ChannelAck to ChannelUnread so own messages from other sessions don't show unread Signed-off-by: onewhobridges --- src/events/v1.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/events/v1.ts b/src/events/v1.ts index 868a472f..1c4b9459 100644 --- a/src/events/v1.ts +++ b/src/events/v1.ts @@ -658,6 +658,28 @@ export async function handleEvent( case "ChannelAck": { const channel = client.channels.getOrPartial(event.id); if (channel) { + if (event.user === client.user?.id && client.options.syncUnreads) { + const unread = client.channelUnreads.for(channel); + if ( + (unread.lastMessageId ?? "0").localeCompare(event.message_id) === -1 + ) { + batch(() => { + client.channelUnreads.updateUnderlyingObject( + channel.id, + "lastMessageId", + event.message_id, + ); + + // ids are ULIDs, so lexicographic order is chronological + for (const id of unread.messageMentionIds) { + if (id <= event.message_id) { + unread.messageMentionIds.delete(id); + } + } + }); + } + } + client.emit("channelAcknowledged", channel, event.message_id); } break;