UNPKG

slanted-gamedev-toolz

Version:

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

48 lines (47 loc) 1.96 kB
import { useCallback, useState } from "react"; import { getNewUser } from "../../api/users/UserType"; import { isDevMode, localUserSaveId } from "../../constants/HBC_CONSTANTS"; import { useGlobalContext } from "../../contexts/globalContext/GlobalContext"; import { compressObjectWithPako, decompressStringWithPako, } from "../../ui/components/smartComponents/ImportExportLocalStorage/saveStringUtil"; export const getUserFromLocalStorage = () => { const localUserSaveJson = localStorage.getItem(localUserSaveId); if (!localUserSaveJson) return {}; const savedUser = decompressStringWithPako(localUserSaveJson); return savedUser; }; export const saveUserToLocalStorage = (updatedUser) => { localStorage.setItem(localUserSaveId, compressObjectWithPako(updatedUser)); }; export const deleteUserFromLocalStorage = () => { localStorage.removeItem(localUserSaveId); }; export const useLocalSaveUser = () => { const loadedSaveUser = getUserFromLocalStorage(); const { isLoadingGameRef } = useGlobalContext(); const [userSaveGameData, _setSaveGameData] = useState(loadedSaveUser || getNewUser()); const saveUserSaveGameData = useCallback((updatedUser) => { if (isLoadingGameRef.current) return; saveUserToLocalStorage(updatedUser); _setSaveGameData(() => { return updatedUser; }); }, [isLoadingGameRef]); if (!loadedSaveUser || !loadedSaveUser._id) { if (isDevMode) { console.log("created new user save file"); } // NO SAVE DATA EXISTS saveUserSaveGameData(getNewUser()); } const clearUserSaveGameData = useCallback(() => { if (!localUserSaveId) { console.error("!localUserSaveId"); return; } deleteUserFromLocalStorage(); _setSaveGameData(getNewUser()); }, []); return { userSaveGameData, saveUserSaveGameData, clearUserSaveGameData }; };