diff options
Diffstat (limited to 'frontend/app/routes/golf.$gameId.play.tsx')
| -rw-r--r-- | frontend/app/routes/golf.$gameId.play.tsx | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/frontend/app/routes/golf.$gameId.play.tsx b/frontend/app/routes/golf.$gameId.play.tsx index 8f41257..d9907aa 100644 --- a/frontend/app/routes/golf.$gameId.play.tsx +++ b/frontend/app/routes/golf.$gameId.play.tsx @@ -1,7 +1,7 @@ import { Provider as JotaiProvider, createStore } from "jotai"; import { useMemo } from "react"; import type { LoaderFunctionArgs, MetaFunction } from "react-router"; -import { useLoaderData } from "react-router"; +import { redirect, useLoaderData } from "react-router"; import { ensureUserLoggedIn } from "../.server/auth"; import { ApiClientContext, createApiClient } from "../api/client"; import GolfPlayApp from "../components/GolfPlayApp"; @@ -20,17 +20,21 @@ export async function loader({ params, request }: LoaderFunctionArgs) { const gameId = Number(params.gameId); - const [{ game }, { state: gameState }] = await Promise.all([ - apiClient.getGame(gameId), - apiClient.getGamePlayLatestState(gameId), - ]); - - return { - apiToken: token, - game, - player: user, - gameState, - }; + try { + const [{ game }, { state: gameState }] = await Promise.all([ + apiClient.getGame(gameId), + apiClient.getGamePlayLatestState(gameId), + ]); + + return { + apiToken: token, + game, + player: user, + gameState, + }; + } catch { + throw redirect("/dashboard"); + } } export default function GolfPlay() { |
