From 432baae1b49343ea780793330149a285a53bbdc7 Mon Sep 17 00:00:00 2001
From: nsfisis <nsfisis@gmail.com>
Date: Fri, 21 Mar 2025 15:11:30 +0900
Subject: wip

---
 frontend/app/routes/golf.$gameId.play.tsx | 28 ++++++++++++++++------------
 1 file changed, 16 insertions(+), 12 deletions(-)

(limited to 'frontend/app/routes/golf.$gameId.play.tsx')

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() {
-- 
cgit v1.3.1

