From 9561b0cbf624e11f65e47bf081da58938c099485 Mon Sep 17 00:00:00 2001 From: Maciej Caderek Date: Sun, 20 Feb 2022 23:36:33 +0100 Subject: [PATCH] WIP --- src/game/Game.ts | 15 +++++++++++++++ src/main.tsx | 13 ++++++++----- src/persistance/extractUrlData.ts | 6 ++---- src/ui/components/Share.tsx | 7 +++++-- src/utils/download.ts | 2 +- 5 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/game/Game.ts b/src/game/Game.ts index 1167706..0d739f4 100644 --- a/src/game/Game.ts +++ b/src/game/Game.ts @@ -193,6 +193,21 @@ class Game { ); } + getFileName(anonymous: boolean) { + const header = this.header; + const w = anonymous ? "Anonymous" : header.WhitePretty; + const b = anonymous ? "Anonymous" : header.BlackPretty; + + return ( + (header.Date + ? `${header.Date.replace(/\?/g, "X").replace(/\./g, "-")}_` + : "") + + `${w}_${b}` + + (header.Event ? `_${header.Event}` : "") + + (header.Round ? `_R${header.Round}` : "") + ).replace(/\s+/g, "-"); + } + get pgn() { return this.game.pgn(); } diff --git a/src/main.tsx b/src/main.tsx index 3e6e2c5..6c7ccab 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -84,7 +84,7 @@ const main = async () => { const pgn = state.boardConfig.anonymous ? state.game.anonymousPGN : state.game.pgn; - window.location.hash = `v1/pgn/${compressPGN(pgn)}`; + window.location.hash = `pgn/${compressPGN(pgn)}`; } }, toggleTitleScreen() { @@ -115,7 +115,7 @@ const main = async () => { ply: 0, game, }); - window.location.hash = `v1/pgn/${compressPGN(game.pgn)}`; + window.location.hash = `pgn/${compressPGN(game.pgn)}`; await player.load(game); setState("activeTab", "game"); @@ -143,7 +143,7 @@ const main = async () => { await player.load(game); if (hash) { - window.location.hash = `v1/fen/${state.fen}`; + window.location.hash = `fen/${state.fen}`; setState("activeTab", "game"); } @@ -177,7 +177,7 @@ const main = async () => { state.boardConfig, state.gameConfig.picSize ); - download(data, "fen", "png"); + download(data, `fen_${Date.now()}`, "png"); }, async downloadAnimation() { await new Promise((resolve) => setTimeout(resolve, 0)); @@ -188,7 +188,10 @@ const main = async () => { state.gameConfig.animationSize, state.gameConfig.titleScreen ); - download(data, "game", state.gameConfig.format.toLowerCase()); + + const name = state.game.getFileName(state.boardConfig.anonymous); + + download(data, name, state.gameConfig.format.toLowerCase()); }, }; diff --git a/src/persistance/extractUrlData.ts b/src/persistance/extractUrlData.ts index aacc0e5..1b23dac 100644 --- a/src/persistance/extractUrlData.ts +++ b/src/persistance/extractUrlData.ts @@ -1,6 +1,6 @@ import { decompressPGN } from "../game/PGNHelpers"; -const HEADER_REGEX = /^#v\d+\/(pgn|fen)\//; +const HEADER_REGEX = /^#(pgn|fen)\//; const extractUrlData = () => { const hash = window.location.hash; @@ -12,13 +12,11 @@ const extractUrlData = () => { }; } - const [rawVersion, format, ...chunks] = hash.split("/"); + const [format, ...chunks] = hash.slice(1).split("/"); - const version = Number((rawVersion.match(/\d+/g) ?? [])[0]); const data = chunks.join("/"); return { - version, pgn: format === "pgn" ? decompressPGN(data) : "", fen: format === "fen" ? decodeURI(data) : "", }; diff --git a/src/ui/components/Share.tsx b/src/ui/components/Share.tsx index 9e72c5e..07ff037 100644 --- a/src/ui/components/Share.tsx +++ b/src/ui/components/Share.tsx @@ -115,7 +115,7 @@ const Share: Component<{ handlers: Handlers }> = (props) => {