All files / hooks/use-persisted-data index.ts

100% Statements 7/7
100% Branches 2/2
100% Functions 3/3
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21          21x 148x 142x   142x     148x 148x     148x        
import { useState, useEffect, Dispatch, SetStateAction } from 'react';
import { getStorageItem, setStorageItem } from 'utils';
 
type Response<T> = [T, Dispatch<SetStateAction<T>>];
 
const usePersistedState = <T>(key: string, initialState: T): Response<T> => {
  const [state, setState] = useState(() => {
    const storageValue = getStorageItem(key);
 
    return storageValue || initialState;
  });
 
  useEffect(() => {
    setStorageItem(key, state);
  }, [key, state]);
 
  return [state, setState];
};
 
export { usePersistedState };