feat(federation): add fire-and-forget S2S typing relay
sendTypingRelay() mirrors sendCallRelay() — direct POST to peers, no outbox, no retry. Uses federatedId for cross-instance channel identification. Wired into handleDmTypingStart() for typing_start and broadcastDmMessage() for typing_stop.
This commit is contained in:
@@ -11,7 +11,7 @@ import { ACTIVITY_LIMITS } from '@backspace/shared/src/activities.js';
|
||||
import { sanitizeUser } from '../utils/sanitize.js';
|
||||
import { deleteAttachmentFiles } from '../utils/fileCleanup.js';
|
||||
import { resolveEmbeds, reResolveEmbeds, embedRowToEmbed } from '../utils/embedResolver.js';
|
||||
import { appendMutationLog, queueOutboxEvent, queueDmRelay, getGroupDmTargetOrigins, sendCallRelay, computeFederatedId } from '../utils/federationOutbox.js';
|
||||
import { appendMutationLog, queueOutboxEvent, queueDmRelay, getGroupDmTargetOrigins, sendCallRelay, computeFederatedId, sendTypingRelay } from '../utils/federationOutbox.js';
|
||||
import { getOurOrigin } from '../utils/federationAuth.js';
|
||||
import { generateFederatedCallToken } from '../routes/livekit.js';
|
||||
import { config } from '../config.js';
|
||||
@@ -938,6 +938,9 @@ function handleDmTypingStart(event: Record<string, unknown>, userId: string, use
|
||||
}
|
||||
}
|
||||
|
||||
// Relay typing indicator to remote peers (fire-and-forget)
|
||||
sendTypingRelay(dmChannelId, 'dm_typing_start', userId);
|
||||
|
||||
const timeout = setTimeout(() => {
|
||||
typingTimeouts.delete(key);
|
||||
}, 5000);
|
||||
|
||||
Reference in New Issue
Block a user