mirror of
https://github.com/lux-tel/session-desktop.git
synced 2026-10-30 20:33:24 +00:00
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { type BaseDecodedEnvelope } from './types';
|
|
import { DURATION } from '../session/constants';
|
|
import { longOrNumberToNumber } from '../types/long/longOrNumberToNumber';
|
|
|
|
export function getEnvelopeId(envelope: BaseDecodedEnvelope) {
|
|
if (envelope.source) {
|
|
return `${envelope.source} ${longOrNumberToNumber(envelope.sentAtMs)} (${envelope.id})`;
|
|
}
|
|
|
|
return envelope.id;
|
|
}
|
|
|
|
export function shouldProcessContentMessage({
|
|
sentAtMs,
|
|
isCommunity,
|
|
sigTimestampMs = 0,
|
|
}: {
|
|
sentAtMs: number;
|
|
sigTimestampMs: number | undefined;
|
|
isCommunity: boolean;
|
|
}) {
|
|
// FIXME: drop this case once the change has been out in the wild long enough
|
|
if (!sentAtMs || !longOrNumberToNumber(sigTimestampMs)) {
|
|
// legacy client
|
|
return true;
|
|
}
|
|
const envelopeTimestamp = longOrNumberToNumber(sentAtMs);
|
|
const contentTimestamp = longOrNumberToNumber(sigTimestampMs);
|
|
if (!isCommunity) {
|
|
return envelopeTimestamp === contentTimestamp;
|
|
}
|
|
// we want to process a community message and allow a window of 6 hours
|
|
return Math.abs(envelopeTimestamp - contentTimestamp) <= 6 * DURATION.HOURS;
|
|
}
|