UNPKG

slanted-gamedev-toolz

Version:

A slanted mix of tools for your brilliant ideas in game design.

68 lines (67 loc) 2.38 kB
import { useCallback, useEffect, useState } from "react"; import { saveKeys } from "../constants/SAVE_KEYS"; import { useIsLoadingLocalStorage } from "../stores/importExportLocalStorageStore"; import { compressObjectWithPako, decompressStringWithPako, } from "./saveStringUtil"; export const getData1FromLocalStorage = () => { const savedData1String = localStorage.getItem(saveKeys.data1); const savedData1 = savedData1String ? decompressStringWithPako(savedData1String) : null; return savedData1; }; export const saveData1ToLocalStorage = (savedData1) => { localStorage.setItem(saveKeys.data1, compressObjectWithPako(savedData1)); }; export const deleteData1FromLocalStorage = () => { localStorage.removeItem(saveKeys.data1); }; export const useLocalSaveData1 = () => { const isLoading = useIsLoadingLocalStorage(); const saveLocalStorageData1 = useCallback(async (savedData1) => { if (isLoading) return; if (!saveKeys.data1) { console.error("!localSaveData1Id"); return; } saveData1ToLocalStorage(savedData1); _setData1SaveGameData(savedData1); }, [isLoading]); const clearLocalStorageData1 = useCallback(() => { if (!saveKeys.data1) { console.error("!localSaveData1Id"); return; } deleteData1FromLocalStorage(); _setData1SaveGameData(null); }, []); let loadedSaveData = getData1FromLocalStorage(); const isSaveOk = checkSaveIsValid(loadedSaveData); if (!isSaveOk) { loadedSaveData = null; } const [Data1SaveGameData, _setData1SaveGameData] = useState(loadedSaveData); useEffect(() => { if (!saveKeys.data1) { console.error("!localSaveData1Id"); return; } const save = getData1FromLocalStorage(); const isSaveValid = checkSaveIsValid(save); if (save && isSaveValid) { _setData1SaveGameData(save); } return function cleanup() { const save = getData1FromLocalStorage(); if (!save) { _setData1SaveGameData(null); } }; }, []); return { saveLocalStorageData1, clearLocalStorageData1, Data1SaveGameData }; }; const checkSaveIsValid = (save) => { if (!save) return false; return true; };