This commit is contained in:
Maciej Caderek
2022-03-30 17:57:35 +02:00
parent 6bf50bad10
commit 276c8d221f

54
src/persistance/link.ts Normal file
View File

@@ -0,0 +1,54 @@
import { compressPGN } from "../game/PGNHelpers";
type LinkData = {
pgn?: string;
fen?: string;
side?: "b" | "w";
ply?: number;
};
const defaultLinkData = {
pgn: "",
fen: "",
side: "w",
ply: 0,
};
let linkData: LinkData = { ...defaultLinkData } as LinkData;
const link = {
set(data: LinkData) {
if (data.fen) {
linkData = { ...defaultLinkData } as LinkData;
linkData.fen = data.fen;
location.hash = `fen/${linkData.fen}`;
return;
}
if (data.pgn) {
linkData = { ...defaultLinkData } as LinkData;
linkData.pgn = compressPGN(data.pgn);
}
if (data.side) {
linkData.side = data.side;
}
if (data.ply !== undefined) {
linkData.ply = data.ply;
}
location.hash = `pgn/${linkData.side}/${linkData.ply}/${linkData.pgn}`;
},
get() {
return location.href;
},
entries() {
return { ...linkData } as LinkData;
},
};
export default link;