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.watch.tsx | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

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

diff --git a/frontend/app/routes/golf.$gameId.watch.tsx b/frontend/app/routes/golf.$gameId.watch.tsx
index 07e8c9e..556eb03 100644
--- a/frontend/app/routes/golf.$gameId.watch.tsx
+++ b/frontend/app/routes/golf.$gameId.watch.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 GolfWatchApp from "../components/GolfWatchApp";
@@ -20,18 +20,22 @@ export async function loader({ params, request }: LoaderFunctionArgs) {
 
 	const gameId = Number(params.gameId);
 
-	const [{ game }, { ranking }, { states: gameStates }] = await Promise.all([
-		await apiClient.getGame(gameId),
-		await apiClient.getGameWatchRanking(gameId),
-		await apiClient.getGameWatchLatestStates(gameId),
-	]);
-
-	return {
-		apiToken: token,
-		game,
-		ranking,
-		gameStates,
-	};
+	try {
+		const [{ game }, { ranking }, { states: gameStates }] = await Promise.all([
+			await apiClient.getGame(gameId),
+			await apiClient.getGameWatchRanking(gameId),
+			await apiClient.getGameWatchLatestStates(gameId),
+		]);
+
+		return {
+			apiToken: token,
+			game,
+			ranking,
+			gameStates,
+		};
+	} catch {
+		throw redirect("/dashboard");
+	}
 }
 
 export default function GolfWatch() {
-- 
cgit v1.3.1

