fuzzyworld

dao-game / react-multiplayer / files / src / utils / storage.ts

Branch react-multiplayer · default branch · all branches

storage.ts

Blame: the commit that last changed each line · file · history

1e41e9b4 2022-03-18 Pavel Safronov1export interface StorageInterface<T> {
c3c52daf 2022-03-18 Pavel Safronov2 getter: () => T;
3 setter: (data: T) => void;
1e41e9b4 2022-03-18 Pavel Safronov4}
47dfe48a 2022-03-20 Pavel Safronov5export const useSessionStorage = <T>(
c3c52daf 2022-03-18 Pavel Safronov6 key: string,
7 defaultData?: T
8): StorageInterface<T> => {
9 return {
10 getter: () => {
11 let item = sessionStorage.getItem(key);
12 if (item === null && defaultData !== undefined) {
13 item = JSON.stringify(defaultData);
14 sessionStorage.setItem(key, item);
15 }
16 const data = JSON.parse(item) as T;
17 return data;
18 },
19 setter: (data: T) => {
20 const text = JSON.stringify(data as T);
21 console.log(`Saving data to local storage`);
22 console.log(`Key=${key}`);
23 console.log(`Text=${text}`);
24 sessionStorage.setItem(key, text);
25 },
26 };
27};