25 lines
1008 B
TypeScript
25 lines
1008 B
TypeScript
'use client';
|
|
|
|
import dynamic from 'next/dynamic';
|
|
import LeftPane from '@/components/LeftPane';
|
|
import RightPane from '@/components/RightPane';
|
|
import { useGameState } from '@/lib/useGameState';
|
|
|
|
const Map = dynamic(() => import('@/components/Map'), { ssr: false });
|
|
|
|
export default function Home() {
|
|
// Single polling source for the whole shell (v0.9.0): one /api/state loop, snapshot passed
|
|
// down as props so later panes can share it without extra poll loops. applySnapshot (v0.10.0)
|
|
// lets a pane push an action endpoint's full response snapshot in immediately.
|
|
const { state, loading, error, refresh, applySnapshot } = useGameState(1000);
|
|
|
|
return (
|
|
<div className="app-shell">
|
|
<LeftPane state={state} loading={loading} error={error} onRefresh={refresh} />
|
|
{/* v0.11.0 — the same polled snapshot drives the map's plane markers + route lines */}
|
|
<Map state={state} />
|
|
<RightPane state={state} loading={loading} applySnapshot={applySnapshot} />
|
|
</div>
|
|
);
|
|
}
|