fix(notifications): don't resurrect stale toasts on reload
Persisted notifications were restored with their saved 'dismissed' state, so any that were still active when the page closed came back as active toasts — but their auto-dismiss timers aren't re-armed on load, leaving them stuck on screen forever (a burst of errors could pile up dozens). Mark restored entries as dismissed on load: they stay in the bell history but no longer reappear as live toasts. The toast surface is session-transient; history persists.
This commit is contained in:
parent
7f9445f4c2
commit
19b5afc8ef
1 changed files with 5 additions and 1 deletions
|
|
@ -118,7 +118,11 @@ function load(): Notification[] {
|
|||
try {
|
||||
const raw = JSON.parse(localStorage.getItem(HISTORY_KEY) || "[]");
|
||||
if (!Array.isArray(raw)) return [];
|
||||
return raw.map((n) => ({ ...n, action: undefined }) as Notification);
|
||||
// Restored entries are history only. Mark them dismissed so they don't
|
||||
// resurrect as active toasts on reload — their auto-dismiss timers aren't
|
||||
// re-armed across a reload, so otherwise they'd stick forever. Also drop the
|
||||
// live `action` callback, which can't survive serialization.
|
||||
return raw.map((n) => ({ ...n, action: undefined, dismissed: true }) as Notification);
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue