mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-10-31 16:13:15 +00:00
After a reload the unified mailbox showed only the active account's mail; other accounts appeared only once visited. Intermittent (~1 in 14), and not a timeout - nothing on this path uses setTimeout/AbortSignal/race. checkAuth awaits only the active account and restores the rest in a fire-and-forget background loop, registering each client only after connect() resolves. buildUnifiedAccountClients drops accounts with no live client (`if (!c) continue`). And isConnected was persisted, so it rehydrated stale-true: the account passed the isConnected filter while failing the client lookup, and connectedAccountsSignature already looked complete at mount so nothing re-fired - and the effects keyed on it only recompute counts, never the list. Clear isConnected/hasError on rehydrate so both the filter and the signature describe this session, and refetch the open unified/cross list when an account joins the connected set (growth only, not on first render, not while a search owns the list). Extracted connectedAccountsGrew so the membership check is testable without rendering MailApp. Verified the reset cannot block reconnection: checkAuth reads the full account list and never filters on isConnected. Fixes #950