feat: add dm_typing_stop event to clear typing indicator on message send

Broadcasts dm_typing_stop to DM members before dm_message_created,
so the typing indicator clears immediately when a message arrives
instead of lingering for up to 3 seconds after delivery.
This commit is contained in:
Jannis Braun
2026-04-01 12:50:03 +02:00
parent 3464e9d991
commit 187f71e68e
4 changed files with 26 additions and 1 deletions
+8
View File
@@ -893,6 +893,14 @@ function handleDmMessageCreate(event: Record<string, unknown>, userId: string):
// Federation: queue for relay
queueDmRelay(dmMessage, dmChannelId, 'create');
// Clear any pending typing timeout for this user+channel
const typingKey = `dm:${userId}:${dmChannelId}`;
const existingTimeout = typingTimeouts.get(typingKey);
if (existingTimeout) {
clearTimeout(existingTimeout);
typingTimeouts.delete(typingKey);
}
// Resolve embeds asynchronously
setImmediate(() => {
resolveEmbeds(messageId, hasContent ? content!.trim() : null, dmChannelId, true, null).catch(() => {});