diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index cb16d9b..705eaad 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1186,32 +1186,32 @@ function AppContent() { games: { status: 'loading', data: null, error: null }, }) - fetchJson(apiEndpoints.detail(route.teamName), controller.signal) - .then((detail) => { + Promise.allSettled([ + fetchJson(apiEndpoints.detail(route.teamName), controller.signal), + fetchJson(apiEndpoints.games(route.teamName), controller.signal), + ]) + .then(([detailResult, gamesResult]) => { if (controller.signal.aborted) return + if (detailResult.status !== 'fulfilled') { + navigate('/teams', { replace: true }) + return + } + + const detail = detailResult.value if (!teamDetailLooksReal(detail)) { navigate('/teams', { replace: true }) return } - return Promise.allSettled([ - fetchJson(apiEndpoints.games(route.teamName), controller.signal), - ]).then(([gamesResult]) => { - if (controller.signal.aborted) return - - setProfile({ - teamName: route.teamName, - detail: { status: 'ready', data: detail, error: null }, - games: - gamesResult.status === 'fulfilled' - ? { status: 'ready', data: gamesResult.value, error: null } - : { status: 'error', data: null, error: gamesResult.reason.message }, - }) + setProfile({ + teamName: route.teamName, + detail: { status: 'ready', data: detail, error: null }, + games: + gamesResult.status === 'fulfilled' + ? { status: 'ready', data: gamesResult.value, error: null } + : { status: 'error', data: null, error: gamesResult.reason.message }, }) }) - .catch(() => { - if (!controller.signal.aborted) navigate('/teams', { replace: true }) - }) return () => controller.abort() }, [route.page, route.teamName])