gameshow-2023/src/client/view/Player/playerAtom.ts

26 lines
728 B
TypeScript

import { useGameState } from 'client/hooks/useGameState';
import { atom, useAtom } from 'jotai';
export const playerNameAtom = atom('');
export const usePlayerName = () => {
return useAtom(playerNameAtom);
};
export const usePlayer = () => {
const { gameState, updateGameState } = useGameState();
const [playerName] = usePlayerName();
const player = gameState?.players.find((p) => p.name === playerName);
const sendAnswer = (answer: string) => {
if (!player) return;
player.answer = answer;
const players = gameState?.players.map((p) => {
if (p.name === playerName) {
return player;
}
return p;
});
updateGameState({ players });
};
return { player, sendAnswer };
};