fuzzyworld

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

storage.ts

732 B · history · blame

1export interface StorageInterface<T> {
2 getter: () => T;
3 setter: (data: T) => void;
4}
5export const useSessionStorage = <T>(
6 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};