diff --git a/extensions/msteams/src/pending-uploads.ts b/extensions/msteams/src/pending-uploads.ts index d879008d1ec..7a9679fe415 100644 --- a/extensions/msteams/src/pending-uploads.ts +++ b/extensions/msteams/src/pending-uploads.ts @@ -18,6 +18,7 @@ export interface PendingUpload { } const pendingUploads = new Map(); +const pendingTimeouts = new Map>(); /** TTL for pending uploads: 5 minutes */ const PENDING_UPLOAD_TTL_MS = 5 * 60 * 1000; @@ -36,9 +37,11 @@ export function storePendingUpload(upload: Omit { + const timeout = setTimeout(() => { pendingUploads.delete(id); + pendingTimeouts.delete(id); }, PENDING_UPLOAD_TTL_MS); + pendingTimeouts.set(id, timeout); return id; } @@ -70,6 +73,11 @@ export function getPendingUpload(id?: string): PendingUpload | undefined { */ export function removePendingUpload(id?: string): void { if (id) { + const timeout = pendingTimeouts.get(id); + if (timeout) { + clearTimeout(timeout); + pendingTimeouts.delete(id); + } pendingUploads.delete(id); } } @@ -85,5 +93,9 @@ export function getPendingUploadCount(): number { * Clear all pending uploads (for testing). */ export function clearPendingUploads(): void { + for (const timeout of pendingTimeouts.values()) { + clearTimeout(timeout); + } + pendingTimeouts.clear(); pendingUploads.clear(); }