You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- api.apiFetch: catch network failures (DNS, offline, abort) and wrap as
ApiError("network_error", 0) instead of letting the raw TypeError fall
through every call site's instanceof check as an opaque server error.
- api.apiFetch: parse body via text() + safeParseJson so non-JSON responses
(proxy HTML error pages, empty 5xx bodies) no longer throw SyntaxError that
bypasses the typed error contract.
- auth.signOut: try/catch around supabase.auth.signOut(). The signOut call can
reject when the refresh token is already revoked or the network is down;
without the catch the user is stuck on a half-broken page. The window.location
redirect runs unconditionally.
- main.bootstrap: try/catch around exchangeCodeForSession. A bad/expired OAuth
code threw and prevented initAuth() from running, leaving the app stuck in
status: "loading" — every protected route's beforeLoad treats that as
authorized and the user stared at a blank screen.
- _authed: treat any status other than "authenticated" as not-yet-authorized
in both beforeLoad and the layout. Render null until authenticated so we
don't briefly render protected children with user === null.
- useNotifications: AbortController per refetch — cancel the in-flight request
when a new one starts (visibility-change-then-timer race) and on unmount.
Without this, slow first responses can clobber fast second responses since
both call setItems.
- room-card / room-row: committingRef guard on the inline-rename commit().
Pressing Enter dispatches the PATCH and synchronously closes the input, which
fires onBlur and would otherwise issue a duplicate PATCH with the same value.
- delete-room-dialog: e.preventDefault() on the destructive AlertDialogAction
so Radix doesn't close the dialog before confirm() runs — preserving the
spinner state and keeping the confirmation visible if delete fails.
Code review pass 5.
0 commit comments