Spaces:
Running
Running
| const TTL_MS = 24 * 60 * 60 * 1000; // 24 hours | |
| type CacheEntry = { | |
| messageIds: Set<string>; | |
| timestamps: Map<string, number>; | |
| }; | |
| const sentMessages = new Map<string, CacheEntry>(); | |
| function cleanupExpired(entry: CacheEntry): void { | |
| const now = Date.now(); | |
| for (const [msgId, timestamp] of entry.timestamps) { | |
| if (now - timestamp > TTL_MS) { | |
| entry.messageIds.delete(msgId); | |
| entry.timestamps.delete(msgId); | |
| } | |
| } | |
| } | |
| export function recordMSTeamsSentMessage(conversationId: string, messageId: string): void { | |
| if (!conversationId || !messageId) { | |
| return; | |
| } | |
| let entry = sentMessages.get(conversationId); | |
| if (!entry) { | |
| entry = { messageIds: new Set(), timestamps: new Map() }; | |
| sentMessages.set(conversationId, entry); | |
| } | |
| entry.messageIds.add(messageId); | |
| entry.timestamps.set(messageId, Date.now()); | |
| if (entry.messageIds.size > 200) { | |
| cleanupExpired(entry); | |
| } | |
| } | |
| export function wasMSTeamsMessageSent(conversationId: string, messageId: string): boolean { | |
| const entry = sentMessages.get(conversationId); | |
| if (!entry) { | |
| return false; | |
| } | |
| cleanupExpired(entry); | |
| return entry.messageIds.has(messageId); | |
| } | |
| export function clearMSTeamsSentMessageCache(): void { | |
| sentMessages.clear(); | |
| } | |