fix : lint errors & bump chess.js version
This commit is contained in:
@@ -9,11 +9,11 @@ export function useAtomLocalStorage<T>(
|
||||
const [storedValue, setStoredValue] = useAtom(atom);
|
||||
|
||||
useEffect(() => {
|
||||
const item = window.localStorage.getItem(key);
|
||||
if (item) {
|
||||
setStoredValue(parseJSON<T>(item));
|
||||
}
|
||||
setKeyTemp(key);
|
||||
const item = window.localStorage.getItem(key);
|
||||
if (!item) return;
|
||||
const value = parseJSON<T>(item);
|
||||
if (value) setStoredValue(value);
|
||||
}, [key, setStoredValue]);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -24,6 +24,6 @@ export function useAtomLocalStorage<T>(
|
||||
return [storedValue, setStoredValue];
|
||||
}
|
||||
|
||||
function parseJSON<T>(value: string): T {
|
||||
function parseJSON<T>(value: string): T | undefined {
|
||||
return value === "undefined" ? undefined : JSON.parse(value);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Dispatch, SetStateAction, useEffect, useState } from "react";
|
||||
|
||||
type SetValue<T> = Dispatch<SetStateAction<T>>;
|
||||
|
||||
export function useLocalStorage<T = string | number | boolean | undefined>(
|
||||
export function useLocalStorage<T = string | number | boolean>(
|
||||
key: string,
|
||||
initialValue: T
|
||||
): [T | null, SetValue<T>] {
|
||||
@@ -11,10 +11,13 @@ export function useLocalStorage<T = string | number | boolean | undefined>(
|
||||
useEffect(() => {
|
||||
const item = window.localStorage.getItem(key);
|
||||
if (item) {
|
||||
setStoredValue(parseJSON<T>(item));
|
||||
} else {
|
||||
setStoredValue(initialValue);
|
||||
const value = parseJSON<T>(item);
|
||||
if (value) {
|
||||
setStoredValue(value);
|
||||
return;
|
||||
}
|
||||
}
|
||||
setStoredValue(initialValue);
|
||||
}, [key, initialValue]);
|
||||
|
||||
const setValue: SetValue<T> = (value) => {
|
||||
@@ -28,6 +31,6 @@ export function useLocalStorage<T = string | number | boolean | undefined>(
|
||||
return [storedValue, setValue];
|
||||
}
|
||||
|
||||
function parseJSON<T>(value: string): T {
|
||||
function parseJSON<T>(value: string): T | undefined {
|
||||
return value === "undefined" ? undefined : JSON.parse(value);
|
||||
}
|
||||
|
||||
@@ -5,17 +5,13 @@ import { useGameDatabase } from "./useGameDatabase";
|
||||
export const usePlayersNames = (gameAtom: PrimitiveAtom<Chess>) => {
|
||||
const game = useAtomValue(gameAtom);
|
||||
const { gameFromUrl } = useGameDatabase();
|
||||
const headers = game.getHeaders();
|
||||
|
||||
const whiteName =
|
||||
gameFromUrl?.white?.name || game.header()["White"] || "White";
|
||||
const blackName =
|
||||
gameFromUrl?.black?.name || game.header()["Black"] || "Black";
|
||||
const whiteName = gameFromUrl?.white?.name || headers.White || "White";
|
||||
const blackName = gameFromUrl?.black?.name || headers.Black || "Black";
|
||||
|
||||
const whiteElo =
|
||||
gameFromUrl?.white?.rating || game.header()["WhiteElo"] || undefined;
|
||||
|
||||
const blackElo =
|
||||
gameFromUrl?.black?.rating || game.header()["BlackElo"] || undefined;
|
||||
const whiteElo = gameFromUrl?.white?.rating || headers.WhiteElo || undefined;
|
||||
const blackElo = gameFromUrl?.black?.rating || headers.BlackElo || undefined;
|
||||
|
||||
return {
|
||||
whiteName,
|
||||
|
||||
@@ -25,7 +25,7 @@ export const getGameFromPgn = (pgn: string): Chess => {
|
||||
};
|
||||
|
||||
export const formatGameToDatabase = (game: Chess): Omit<Game, "id"> => {
|
||||
const headers: Record<string, string | undefined> = game.header();
|
||||
const headers: Record<string, string | undefined> = game.getHeaders();
|
||||
|
||||
return {
|
||||
pgn: game.pgn(),
|
||||
@@ -56,24 +56,24 @@ export const setGameHeaders = (
|
||||
game: Chess,
|
||||
params: { whiteName?: string; blackName?: string; resigned?: Color } = {}
|
||||
): Chess => {
|
||||
game.header("Event", "Chesskit Game");
|
||||
game.header("Site", "Chesskit");
|
||||
game.header(
|
||||
game.setHeader("Event", "Chesskit Game");
|
||||
game.setHeader("Site", "Chesskit");
|
||||
game.setHeader(
|
||||
"Date",
|
||||
new Date().toISOString().split("T")[0].replaceAll("-", ".")
|
||||
);
|
||||
|
||||
const { whiteName, blackName, resigned } = params;
|
||||
|
||||
if (whiteName) game.header("White", whiteName);
|
||||
if (blackName) game.header("Black", blackName);
|
||||
if (whiteName) game.setHeader("White", whiteName);
|
||||
if (blackName) game.setHeader("Black", blackName);
|
||||
|
||||
const whiteNameToUse = game.header().White || "White";
|
||||
const blackNameToUse = game.header().Black || "Black";
|
||||
const whiteNameToUse = game.getHeaders().White || "White";
|
||||
const blackNameToUse = game.getHeaders().Black || "Black";
|
||||
|
||||
if (resigned) {
|
||||
game.header("Result", resigned === "w" ? "0-1" : "1-0");
|
||||
game.header(
|
||||
game.setHeader("Result", resigned === "w" ? "0-1" : "1-0");
|
||||
game.setHeader(
|
||||
"Termination",
|
||||
`${resigned === "w" ? blackNameToUse : whiteNameToUse} won by resignation`
|
||||
);
|
||||
@@ -82,8 +82,8 @@ export const setGameHeaders = (
|
||||
if (!game.isGameOver()) return game;
|
||||
|
||||
if (game.isCheckmate()) {
|
||||
game.header("Result", game.turn() === "w" ? "0-1" : "1-0");
|
||||
game.header(
|
||||
game.setHeader("Result", game.turn() === "w" ? "0-1" : "1-0");
|
||||
game.setHeader(
|
||||
"Termination",
|
||||
`${
|
||||
game.turn() === "w" ? blackNameToUse : whiteNameToUse
|
||||
@@ -92,18 +92,18 @@ export const setGameHeaders = (
|
||||
}
|
||||
|
||||
if (game.isInsufficientMaterial()) {
|
||||
game.header("Result", "1/2-1/2");
|
||||
game.header("Termination", "Draw by insufficient material");
|
||||
game.setHeader("Result", "1/2-1/2");
|
||||
game.setHeader("Termination", "Draw by insufficient material");
|
||||
}
|
||||
|
||||
if (game.isStalemate()) {
|
||||
game.header("Result", "1/2-1/2");
|
||||
game.header("Termination", "Draw by stalemate");
|
||||
game.setHeader("Result", "1/2-1/2");
|
||||
game.setHeader("Termination", "Draw by stalemate");
|
||||
}
|
||||
|
||||
if (game.isThreefoldRepetition()) {
|
||||
game.header("Result", "1/2-1/2");
|
||||
game.header("Termination", "Draw by threefold repetition");
|
||||
game.setHeader("Result", "1/2-1/2");
|
||||
game.setHeader("Termination", "Draw by threefold repetition");
|
||||
}
|
||||
|
||||
return game;
|
||||
|
||||
@@ -34,7 +34,7 @@ export const playSoundFromMove = async (move: Move | null) => {
|
||||
playPromoteSound();
|
||||
} else if (move.captured) {
|
||||
playCaptureSound();
|
||||
} else if (move.flags.includes("k") || move.flags.includes("q")) {
|
||||
} else if (move.isKingsideCastle() || move.isQueensideCastle()) {
|
||||
playCastleSound();
|
||||
} else {
|
||||
playMoveSound();
|
||||
|
||||
@@ -6,17 +6,18 @@ import { gameAtom } from "../states";
|
||||
export default function GamePanel() {
|
||||
const { gameFromUrl } = useGameDatabase();
|
||||
const game = useAtomValue(gameAtom);
|
||||
const gameHeaders = game.getHeaders();
|
||||
|
||||
const hasGameInfo = gameFromUrl !== undefined || !!game.header().White;
|
||||
const hasGameInfo = gameFromUrl !== undefined || !!gameHeaders.White;
|
||||
|
||||
if (!hasGameInfo) return null;
|
||||
|
||||
const termination =
|
||||
gameFromUrl?.termination || game.header().Termination || "?";
|
||||
gameFromUrl?.termination || gameHeaders.Termination || "?";
|
||||
const result =
|
||||
termination.split(" ").length > 2
|
||||
? termination
|
||||
: gameFromUrl?.result || game.header().Result || "?";
|
||||
: gameFromUrl?.result || gameHeaders.Result || "?";
|
||||
|
||||
return (
|
||||
<Grid
|
||||
@@ -29,13 +30,13 @@ export default function GamePanel() {
|
||||
>
|
||||
<Grid container justifyContent="center" alignItems="center" size="grow">
|
||||
<Typography noWrap fontSize="0.9rem">
|
||||
Site : {gameFromUrl?.site || game.header().Site || "?"}
|
||||
Site : {gameFromUrl?.site || gameHeaders.Site || "?"}
|
||||
</Typography>
|
||||
</Grid>
|
||||
|
||||
<Grid container justifyContent="center" alignItems="center" size="grow">
|
||||
<Typography noWrap fontSize="0.9rem">
|
||||
Date : {gameFromUrl?.date || game.header().Date || "?"}
|
||||
Date : {gameFromUrl?.date || gameHeaders.Date || "?"}
|
||||
</Typography>
|
||||
</Grid>
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ export default function LoadGame() {
|
||||
loadGame();
|
||||
}, [gameFromUrl, game, resetAndSetGamePgn, setEval]);
|
||||
|
||||
const isGameLoaded = gameFromUrl !== undefined || !!game.header().White;
|
||||
const isGameLoaded = gameFromUrl !== undefined || !!game.getHeaders().White;
|
||||
|
||||
if (evaluationProgress) return null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user