WIP
This commit is contained in:
54
src/persistance/link.ts
Normal file
54
src/persistance/link.ts
Normal 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;
|
||||
Reference in New Issue
Block a user