- Shipped
- 6 de agosto de 2026 às 11:59 UTC
- Author
- kamo
- Commit
- 328a0bf
MailButton executou o setInterval(fetchUnreadCount, 30 000) em cada aba aberta, e cada tique chamado /api/email/pastas – um endpoint que abre cada pasta em a caixa de correio para produzir o número inteiro de que o crachá necessita. O WebSocket de e- mail já estava conectado, mas apenas relatou que o e-mail tinha chegado, então seu manipulador O trabalho era agendar outra busca. EmailService agora publica a própria contagem em /topic/email/unread/<memberId>: um instantâneo na ligação, depois um em cada alteração, incluindo \Seen set from outro cliente de correio — que a sondagem só pôde notar até 30s tarde e WebSocket velho não poderia notar em tudo. useEmailWebSocket assina esse tópico e expõe caixa de entradaUnreaded through EmailWebSocketContext. Os instantâneos carregam o instante em que foram lidos e mais velhos são descartados, por isso uma redelivery não pode ressuscitar um crachá o membro apenas Limpo. inboxUnread permanece nulo até que o primeiro snapshot chegue, então "desconhecida Ainda "nunca renderiza como um distintivo limpo. O caminho REST sobrevive apenas como um recuo frio para um navegador cujo socket nunca surgiu: dispara quando o 'socket' informa que desistiu, quando nenhum instantâneo chegou dentro da janela de conexão, e — enquanto desconectado apenas — no foco da aba e no email:folder-alterado. Nada disso é um temporizador.