diff --git a/src/hooks/useChessActions.ts b/src/hooks/useChessActions.ts index c417aad..b72586f 100644 --- a/src/hooks/useChessActions.ts +++ b/src/hooks/useChessActions.ts @@ -14,9 +14,12 @@ export const useChessActions = (chessAtom: PrimitiveAtom) => { [setGame] ); - const reset = useCallback(() => { - setGame(new Chess()); - }, [setGame]); + const reset = useCallback( + (fen?: string) => { + setGame(new Chess(fen)); + }, + [setGame] + ); const copyGame = useCallback(() => { const newGame = new Chess(); diff --git a/src/lib/chess.ts b/src/lib/chess.ts index f8f0c57..1decfd0 100644 --- a/src/lib/chess.ts +++ b/src/lib/chess.ts @@ -196,3 +196,11 @@ const getPieceValue = (piece: PieceSymbol): number => { return 0; } }; + +export const getStartingFen = (pgn: string): string => { + const game = new Chess(); + game.loadPgn(pgn); + + const history = game.history({ verbose: true }); + return history[0].before; +}; diff --git a/src/sections/analysis/reviewPanelHeader/loadGame.tsx b/src/sections/analysis/reviewPanelHeader/loadGame.tsx index d3aa529..96796ea 100644 --- a/src/sections/analysis/reviewPanelHeader/loadGame.tsx +++ b/src/sections/analysis/reviewPanelHeader/loadGame.tsx @@ -12,6 +12,7 @@ import { useGameDatabase } from "@/hooks/useGameDatabase"; import { useAtomValue, useSetAtom } from "jotai"; import { Chess } from "chess.js"; import { useRouter } from "next/router"; +import { getStartingFen } from "@/lib/chess"; export default function LoadGame() { const router = useRouter(); @@ -25,7 +26,7 @@ export default function LoadGame() { const resetAndSetGamePgn = useCallback( (pgn: string) => { - resetBoard(); + resetBoard(getStartingFen(pgn)); setEval(undefined); setBoardOrientation(true); setGamePgn(pgn); diff --git a/src/sections/analysis/reviewPanelToolbar/index.tsx b/src/sections/analysis/reviewPanelToolbar/index.tsx index 4e79461..1b5d341 100644 --- a/src/sections/analysis/reviewPanelToolbar/index.tsx +++ b/src/sections/analysis/reviewPanelToolbar/index.tsx @@ -8,6 +8,7 @@ import NextMoveButton from "./nextMoveButton"; import GoToLastPositionButton from "./goToLastPositionButton"; import SaveButton from "./saveButton"; import { useEffect } from "react"; +import { getStartingFen } from "@/lib/chess"; export default function ReviewPanelToolBar() { const board = useAtomValue(boardAtom); @@ -38,7 +39,7 @@ export default function ReviewPanelToolBar() { resetBoard()} + onClick={() => resetBoard(getStartingFen(board.pgn()))} disabled={boardHistory.length === 0} >