diff --git a/public/router.js b/public/router.js index 773b0ae..62c4adc 100644 --- a/public/router.js +++ b/public/router.js @@ -1130,6 +1130,9 @@ function renderError(container, err) { * @param {'default'|'success'|'danger'|'warning'} type * @param {number} duration - ms */ +const TOAST_SUCCESS_KEY = 'oikos:toastSuccessCount'; +const TOAST_SUCCESS_MAX = 50; + const TOAST_ICONS = { success: '', danger: '', @@ -1140,6 +1143,13 @@ function showToast(message, type = 'default', duration = 3000, onUndo = null) { const container = document.getElementById('toast-container'); if (!container) return; + // Long Loop: Success-Toasts nach TOAST_SUCCESS_MAX Aufrufen unterdrücken + if (type === 'success' && typeof onUndo !== 'function') { + const successCount = parseInt(localStorage.getItem(TOAST_SUCCESS_KEY) ?? '0', 10) + 1; + localStorage.setItem(TOAST_SUCCESS_KEY, String(successCount)); + if (successCount > TOAST_SUCCESS_MAX) return; + } + // Max. 3 gleichzeitige Toasts: ältesten entfernen falls Limit erreicht const existing = container.querySelectorAll('.toast'); if (existing.length >= 3) existing[0].remove();