import type { LoaderFunctionArgs, MetaFunction } from "react-router"; import { Form, useLoaderData } from "react-router"; import { ensureUserLoggedIn } from "../.server/auth"; import { createApiClient } from "../api/client"; import BorderedContainerWithCaption from "../components/BorderedContainerWithCaption"; import NavigateLink from "../components/NavigateLink"; import UserIcon from "../components/UserIcon"; export const meta: MetaFunction = () => [ { title: "Dashboard | PHPerKaigi 2025 Albatross" }, ]; export async function loader({ request }: LoaderFunctionArgs) { const { user, token } = await ensureUserLoggedIn(request); const apiClient = createApiClient(token); const { games } = await apiClient.getGames(); return { user, games, }; } export default function Dashboard() { const { user, games } = useLoaderData()!; return (
{user.icon_path && ( )}

{user.display_name}

現在オンライン予選を開催中です。 予選問題2問を両方解いたプレイヤーのうち合計スコアが最も小さい2名が、3/21 (金) の PHPerKaigi day0 に実施される決勝戦への進出枠を獲得します。 当日は、会場の Track A まで是非お越しください!

※ 当日会場 Track A にいらっしゃらない場合、次点のスコアを獲得されている方が自動的に決勝進出となります。

※ 決勝に参加する予定のない方でも、プレイしていただくことは可能です。

{games.length === 0 ? (

エントリーできる試合はありません

) : (
    {games.map((game) => (
  • {game.display_name}
    対戦 観戦
  • ))}
)}
{user.is_admin && ( Admin Dashboard )}
); }