import pick from "lodash.pick"; import {DeepPartial} from "redux"; import {IAppState} from "../store/Store"; class LocalStorageService { private static StorageKey: string = "RepoState"; public static loadAppSavedState(paths?: string[]): DeepPartial { try { const serializedState = localStorage.getItem(LocalStorageService.StorageKey); if (serializedState === null) { return {}; } const parsed = JSON.parse(serializedState); return paths ? pick(parsed, paths) : parsed; } catch (err) { return {}; } } public static saveAppState(state: IAppState, paths?: string[]) { try { const targetObj = paths ? pick(state, paths) : state; const serializedState = JSON.stringify(targetObj); localStorage.setItem(LocalStorageService.StorageKey, serializedState); } catch { // Not logging because this can happen for normal reasons. } } } export default LocalStorageService;