slanted-gamedev-toolz
Version:
A slanted mix of tools for your brilliant ideas in game design.
68 lines (67 loc) • 2.38 kB
JavaScript
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;
};