You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1011 B
TypeScript
33 lines
1011 B
TypeScript
import { RingBuffer } from '../../../utils/RingBuffer';
|
|
|
|
const rollingDeletedMessageIds: Map<string, RingBuffer<number>> = new Map();
|
|
|
|
// keep 2000 deleted message ids in memory
|
|
const perRoomRollingRemovedIds = 2000;
|
|
|
|
const addMessageDeletedId = (conversationId: string, messageDeletedId: number) => {
|
|
if (!rollingDeletedMessageIds.has(conversationId)) {
|
|
rollingDeletedMessageIds.set(conversationId, new RingBuffer<number>(perRoomRollingRemovedIds));
|
|
}
|
|
const ringBuffer = rollingDeletedMessageIds.get(conversationId);
|
|
if (!ringBuffer) {
|
|
return;
|
|
}
|
|
ringBuffer.add(messageDeletedId);
|
|
};
|
|
|
|
|
|
const hasMessageDeletedId = (conversationId: string, messageDeletedId: number) => {
|
|
if (!rollingDeletedMessageIds.has(conversationId)) {
|
|
return false;
|
|
}
|
|
|
|
const messageIdWasDeletedRecently = rollingDeletedMessageIds
|
|
?.get(conversationId)
|
|
?.has(messageDeletedId);
|
|
|
|
return messageIdWasDeletedRecently;
|
|
};
|
|
|
|
export const sogsRollingDeletions = { addMessageDeletedId, hasMessageDeletedId };
|