From deb0b67cb46df38499d3e82caec0b3405c802779 Mon Sep 17 00:00:00 2001 From: KatoakDR <68095633+KatoakDR@users.noreply.github.com> Date: Sun, 29 Oct 2023 20:38:32 -0500 Subject: [PATCH] feat: local storage helper --- electron/renderer/lib/local-storage.ts | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 electron/renderer/lib/local-storage.ts diff --git a/electron/renderer/lib/local-storage.ts b/electron/renderer/lib/local-storage.ts new file mode 100644 index 00000000..3b00d562 --- /dev/null +++ b/electron/renderer/lib/local-storage.ts @@ -0,0 +1,32 @@ +export const hasLocalStorage = (): boolean => { + return typeof localStorage !== 'undefined'; +}; + +export const LocalStorage = { + /** + * Gets a JSON value from local storage for the given key. + * If either local storage isn't defined or key not found then + * returns undefined. + */ + get: (key: string): T | undefined => { + if (!hasLocalStorage()) { + return; + } + const value = localStorage.getItem(key); + if (value) { + return JSON.parse(value); + } + return; + }, + /** + * Sets a JSON value in local storage for the given key. + * The value should be JSON serializable. + * For example, not a `Map` or `Set` because those become `{}`. + */ + set: (key: string, value: T): void => { + if (!hasLocalStorage()) { + return; + } + localStorage.setItem(key, JSON.stringify(value)); + }, +};