import { Accessor, createContext, createEffect, createResource, createSignal, For, onCleanup, Resource, Show, untrack, } from "solid-js"; import { createStore } from "solid-js/store"; import { SimplePlayerView } from "../../../server/src/games/simple"; import api, { me } from "../api"; import { ApiType } from "../fn"; import Game from "./Game"; const [playerProfiles, setPlayerProfiles] = createStore< Record>> >({}); export const TableContext = createContext<{ players: Accessor; view: Accessor; // submitAction: (action: Action) => Promise; }>(); export default (props: { tableKey: string }) => { const [players, setPlayers] = createSignal([]); const [view, setView] = createSignal(); const ws = api.ws(props).subscribe(); onCleanup(() => ws.close()); ws.on("message", (evt) => { if (evt.data.players) { setPlayers(evt.data.players); } if (evt.data.view) { setView(evt.data.view); } }); createEffect(() => { players().forEach((player) => { if (!untrack(() => playerProfiles[player])) { const [playerProfile] = createResource(() => api.profile .get({ query: { otherHumanKey: player } }) .then((r) => r.data) ); setPlayerProfiles((prev) => ({ ...prev, [player]: playerProfile, })); } }); }); return (
p != me())}> {(player, i) => { const verticalOffset = () => { const N = players().length - 1; const x = Math.abs((2 * i() + 1) / (N * 2) - 0.5); const y = Math.sqrt(1 - x * x); return 1 - y; }; return (

{playerProfiles[player]?.()?.name}

); }}
); };