From e45544db052e46f63ff18413915010914f705378 Mon Sep 17 00:00:00 2001 From: Asad Iqbal Date: Tue, 24 Feb 2026 09:23:32 +0500 Subject: [PATCH] fix: Fix toast identity race handling --- src/toast.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/toast.tsx b/src/toast.tsx index 64e7a2b..8afc65c 100644 --- a/src/toast.tsx +++ b/src/toast.tsx @@ -81,13 +81,19 @@ const timeoutKey = (t: SileoItem) => `${t.id}:${t.instanceId}`; const dismissToast = (id: string) => { const item = store.toasts.find((t) => t.id === id); if (!item || item.exiting) return; + const { instanceId } = item; store.update((prev) => - prev.map((t) => (t.id === id ? { ...t, exiting: true } : t)), + prev.map((t) => + t.id === id && t.instanceId === instanceId ? { ...t, exiting: true } : t, + ), ); setTimeout( - () => store.update((prev) => prev.filter((t) => t.id !== id)), + () => + store.update((prev) => + prev.filter((t) => !(t.id === id && t.instanceId === instanceId)), + ), EXIT_DURATION, ); }; @@ -132,7 +138,7 @@ const createToast = (options: InternalSileoOptions) => { const live = store.toasts.filter((t) => !t.exiting); const merged = mergeOptions(options); - const id = merged.id ?? "sileo-default"; + const id = merged.id ?? generateId(); const prev = live.find((t) => t.id === id); const item = buildSileoItem(merged, id, prev?.position);