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:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user