aboutsummaryrefslogtreecommitdiffhomepage
path: root/frontend/app/routes/golf.$gameId.play.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/app/routes/golf.$gameId.play.tsx')
-rw-r--r--frontend/app/routes/golf.$gameId.play.tsx28
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() {