26 lines
774 B
TypeScript
26 lines
774 B
TypeScript
import { createHash } from 'crypto';
|
|
|
|
interface InboxIdentityLike {
|
|
messageId?: unknown;
|
|
from?: unknown;
|
|
timestamp?: unknown;
|
|
text?: unknown;
|
|
}
|
|
|
|
export function buildLegacyInboxMessageId(from: string, timestamp: string, text: string): string {
|
|
return `inbox-${createHash('sha256').update(`${from}\n${timestamp}\n${text}`).digest('hex').slice(0, 16)}`;
|
|
}
|
|
|
|
export function getEffectiveInboxMessageId(row: InboxIdentityLike): string | null {
|
|
if (typeof row.messageId === 'string' && row.messageId.trim().length > 0) {
|
|
return row.messageId;
|
|
}
|
|
if (
|
|
typeof row.from !== 'string' ||
|
|
typeof row.timestamp !== 'string' ||
|
|
typeof row.text !== 'string'
|
|
) {
|
|
return null;
|
|
}
|
|
return buildLegacyInboxMessageId(row.from, row.timestamp, row.text);
|
|
}
|