diff --git a/app/(auth)/login/qr-login-button.tsx b/app/(auth)/login/qr-login-button.tsx index 8869243..5332899 100644 --- a/app/(auth)/login/qr-login-button.tsx +++ b/app/(auth)/login/qr-login-button.tsx @@ -106,11 +106,20 @@ export function QrLoginButton() { // Geen actie nodig tenzij we definitief willen falen. } + // De server stuurt direct na connect een `event: state`-payload met de + // huidige pairing-status (catch-up voor de race tussen pair/start en de + // SSE-open: als de mobiel net daarvoor approvet komt de notify door + // vóórdat onze LISTEN actief is en wordt 'ie verloren). EventSource + // routeert events met `event: ` alleen naar listeners voor die + // naam — niet naar 'message'. Dezelfde handler aan beide hangen vangt + // de catch-up én reguliere notifies op. es.addEventListener('message', onMessage) + es.addEventListener('state', onMessage as unknown as EventListener) es.addEventListener('error', onError) return () => { es.removeEventListener('message', onMessage) + es.removeEventListener('state', onMessage as unknown as EventListener) es.removeEventListener('error', onError) es.close() sseRef.current = null