import { useEffect, useState } from "react"; import { useLocation } from "wouter"; import { createApiClient } from "../api/client"; import type { components } from "../api/schema"; import ProblemColumnContent from "../components/Gaming/ProblemColumnContent"; import NavigateLink from "../components/NavigateLink"; import { APP_NAME } from "../config"; import { usePageTitle } from "../hooks/usePageTitle"; type Game = components["schemas"]["Game"]; export default function GolfProblemPreviewPage({ gameId }: { gameId: string }) { const [, navigate] = useLocation(); const [game, setGame] = useState(null); const [loading, setLoading] = useState(true); const gameIdNum = Number(gameId); usePageTitle( game ? `${game.display_name} - 問題プレビュー | ${APP_NAME}` : `問題プレビュー | ${APP_NAME}`, ); useEffect(() => { const apiClient = createApiClient(); apiClient .getGame(gameIdNum) .then(({ game }) => setGame(game)) .catch(() => navigate("/dashboard")) .finally(() => setLoading(false)); }, [gameIdNum, navigate]); if (loading || !game) { return (

Loading...

); } return (

{game.display_name}

{game.started_at != null && ( 対戦ページへ )} ダッシュボードへ戻る
); }