mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-05-02 11:33:05 +02:00
15 lines
914 B
TypeScript
15 lines
914 B
TypeScript
import type { Message } from '../types';
|
|
|
|
// Content identity matches the backend's message-level dedup indexes.
|
|
export function getMessageContentKey(msg: Message): string {
|
|
// When sender_timestamp exists, dedup by content (catches radio-path duplicates with different IDs).
|
|
// When null, include msg.id so each message gets a unique key — avoids silently dropping
|
|
// different messages that share the same text and received_at second.
|
|
const ts = msg.sender_timestamp ?? `r${msg.received_at}-${msg.id}`;
|
|
// For incoming PRIV messages (room-server posts), include sender_key so that
|
|
// two different room participants sending identical text in the same second
|
|
// are not collapsed. Mirrors idx_messages_incoming_priv_dedup.
|
|
const senderSuffix = msg.type === 'PRIV' && msg.sender_key ? `-${msg.sender_key}` : '';
|
|
return `${msg.type}-${msg.conversation_key}-${msg.text}-${ts}${senderSuffix}`;
|
|
}
|