diff --git a/TODO b/TODO index e742b41..10b2ad3 100644 --- a/TODO +++ b/TODO @@ -6,12 +6,9 @@ API base URL - favicon and page titles - rearrange buttons / header space - collapse on smaller screens -- add / edit headers -- custom headers - title etc - Loading Chessboard with suspense and spinner - toasts - Lichess login -- stringUtils - downloadString - move it out of try / catch and let program use the try/catch - logger \ No newline at end of file diff --git a/src/hooks/useChessGame.ts b/src/hooks/useChessGame.ts index 0b4b8c8..6db3c2d 100644 --- a/src/hooks/useChessGame.ts +++ b/src/hooks/useChessGame.ts @@ -29,8 +29,17 @@ export const useChessGame = () => { }, []); const handleSavePgn = () => { - const pgnString = buildPgnString(gameState); - downloadString(pgnString, "game.pgn"); + try { + const pgnString = buildPgnString(gameState); + downloadString(pgnString, "game.pgn"); + } catch (error) { + // TODO logger + console.error(error); + + toast.error("An error occurred while saving the PGN. Please try again.", { + toastId: "pgn-download-error", + }); + } }; const handleSavePdf = async () => { diff --git a/src/utils/stringUtils.ts b/src/utils/stringUtils.ts index b18dd30..8c1ba31 100644 --- a/src/utils/stringUtils.ts +++ b/src/utils/stringUtils.ts @@ -1,13 +1,9 @@ export const downloadString = (string: string, filename: string) => { - try { - const element = document.createElement("a"); - const file = new Blob([string], { type: "text/plain" }); + const element = document.createElement("a"); + const file = new Blob([string], { type: "text/plain" }); - element.href = URL.createObjectURL(file); - element.download = filename; - document.body.appendChild(element); - element.click(); - } catch (error) { - throw new Error("Failed to download file"); - } + element.href = URL.createObjectURL(file); + element.download = filename; + document.body.appendChild(element); + element.click(); };