Notifications: não redispara toast pra system_alert antigas após F5

Bug: a cada mount (F5, navegação), todas as system_alert não-lidas
voltavam a disparar toast mesmo que o alerta já não fizesse mais
sentido (ex: saldo baixo já restabelecido, mas notif histórica ainda
não-lida reaparecia como toast sticky vermelho a cada reload).

Fix: seed do set alertedIds marca TODAS as system_alert do load inicial
como "já vistas nesta sessão". Alertas continuam no sino/drawer — o
usuário vê que tem pendências, mas sem bombardeio de toasts repetidos.
Toast só dispara pra alertas que chegarem depois do mount — seja via
Realtime (novidade) ou via catch-up encontrando id ainda não no set.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-04-23 10:21:12 -03:00
parent 771b636cee
commit 4026415401
+5 -2
View File
@@ -115,9 +115,12 @@ export function useNotifications() {
ownerId = data.user.id; ownerId = data.user.id;
await store.load(ownerId); await store.load(ownerId);
// Seed do set: notifs system_alert já lidas/vistas não redisparam toast // Seed: marca TODAS as system_alert existentes como "já vistas" pra
// não redisparar toast em F5/reload. Alertas antigos aparecem no
// sino/drawer normalmente; toast só dispara pra alertas que chegarem
// depois do mount (via Realtime ou catch-up detectando ids novos).
for (const item of store.items || []) { for (const item of store.items || []) {
if (item.type === 'system_alert' && (item.read_at || item.archived)) { if (item.type === 'system_alert') {
alertedIds.add(item.id); alertedIds.add(item.id);
} }
} }