Signal-Desktop/ts/util/showDownloadFailedToast.ts

30 lines
860 B
TypeScript

// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { ToastType } from '../types/Toast';
import { SECOND } from './durations';
import { isOlderThan } from './timestamp';
const DOWNLOAD_FAILED_TIMESTAMP_REST = 10 * SECOND;
export const lastErrorsByMessageId = new Map<string, number>();
export function showDownloadFailedToast(messageId: string): void {
const now = Date.now();
for (const [id, timestamp] of lastErrorsByMessageId) {
if (isOlderThan(timestamp, DOWNLOAD_FAILED_TIMESTAMP_REST)) {
lastErrorsByMessageId.delete(id);
}
}
const existing = lastErrorsByMessageId.get(messageId);
if (!existing) {
window.reduxActions.toast.showToast({
toastType: ToastType.AttachmentDownloadFailed,
parameters: { messageId },
});
lastErrorsByMessageId.set(messageId, now);
}
}