diff --git a/src/sections/analysis/panelHeader/loadGame.tsx b/src/sections/analysis/panelHeader/loadGame.tsx index 623c3fa..fc3d4ff 100644 --- a/src/sections/analysis/panelHeader/loadGame.tsx +++ b/src/sections/analysis/panelHeader/loadGame.tsx @@ -28,10 +28,9 @@ export default function LoadGame() { (pgn: string) => { resetBoard({ fen: getStartingFen({ pgn }) }); setEval(undefined); - setBoardOrientation(true); setGamePgn(pgn); }, - [resetBoard, setGamePgn, setEval, setBoardOrientation] + [resetBoard, setGamePgn, setEval] ); useEffect(() => { @@ -44,10 +43,11 @@ export default function LoadGame() { resetAndSetGamePgn(gameFromUrl.pgn); setEval(gameFromUrl.eval); + setBoardOrientation(true); }; loadGame(); - }, [gameFromUrl, game, resetAndSetGamePgn, setEval]); + }, [gameFromUrl, game, resetAndSetGamePgn, setEval, setBoardOrientation]); const isGameLoaded = gameFromUrl !== undefined || diff --git a/src/sections/loadGame/chessComInput.tsx b/src/sections/loadGame/chessComInput.tsx index 4a3b69e..6fe465a 100644 --- a/src/sections/loadGame/chessComInput.tsx +++ b/src/sections/loadGame/chessComInput.tsx @@ -10,7 +10,9 @@ import { ListItemText, TextField, } from "@mui/material"; +import { useSetAtom } from "jotai"; import { useEffect, useState } from "react"; +import { boardOrientationAtom } from "../analysis/states"; interface Props { onSelect: (pgn: string) => void; @@ -22,6 +24,7 @@ export default function ChessComInput({ onSelect }: Props) { "chesscom-username", "" ); + const setBoardOrientation = useSetAtom(boardOrientationAtom); const [games, setGames] = useState([]); useEffect(() => { @@ -67,7 +70,13 @@ export default function ChessComInput({ onSelect }: Props) { > {games.map((game) => ( onSelect(game.pgn)} + onClick={() => { + setBoardOrientation( + chessComUsername.toLowerCase() !== + game.black.username.toLowerCase() + ); + onSelect(game.pgn); + }} style={{ width: 350, maxWidth: 350 }} key={game.uuid} > diff --git a/src/sections/loadGame/lichessInput.tsx b/src/sections/loadGame/lichessInput.tsx index a5bac2f..079e374 100644 --- a/src/sections/loadGame/lichessInput.tsx +++ b/src/sections/loadGame/lichessInput.tsx @@ -11,6 +11,8 @@ import { TextField, } from "@mui/material"; import { useEffect, useState } from "react"; +import { useSetAtom } from "jotai"; +import { boardOrientationAtom } from "../analysis/states"; interface Props { onSelect: (pgn: string) => void; @@ -22,6 +24,7 @@ export default function LichessInput({ onSelect }: Props) { "lichess-username", "" ); + const setBoardOrientation = useSetAtom(boardOrientationAtom); const [games, setGames] = useState([]); useEffect(() => { @@ -67,7 +70,13 @@ export default function LichessInput({ onSelect }: Props) { > {games.map((game) => ( onSelect(game.pgn)} + onClick={() => { + setBoardOrientation( + lichessUsername.toLowerCase() !== + game.players.black.user?.name.toLowerCase() + ); + onSelect(game.pgn); + }} style={{ width: 350, maxWidth: 350 }} key={game.id} > diff --git a/src/sections/loadGame/loadGameDialog.tsx b/src/sections/loadGame/loadGameDialog.tsx index 6031a51..0da19ce 100644 --- a/src/sections/loadGame/loadGameDialog.tsx +++ b/src/sections/loadGame/loadGameDialog.tsx @@ -22,6 +22,8 @@ import GamePgnInput from "./gamePgnInput"; import ChessComInput from "./chessComInput"; import { useLocalStorage } from "@/hooks/useLocalStorage"; import LichessInput from "./lichessInput"; +import { useSetAtom } from "jotai"; +import { boardOrientationAtom } from "../analysis/states"; interface Props { open: boolean; @@ -36,6 +38,7 @@ export default function NewGameDialog({ open, onClose, setGame }: Props) { GameOrigin.Pgn ); const [parsingError, setParsingError] = useState(""); + const setBoardOrientation = useSetAtom(boardOrientationAtom); const { addGame } = useGameDatabase(); const handleAddGame = (pgn: string) => { @@ -140,7 +143,10 @@ export default function NewGameDialog({ open, onClose, setGame }: Props) {