From 795b92cc1a168c48c7710ca6e0e1ef5974013d95 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Thu, 26 Oct 2023 19:07:31 +0200 Subject: refactor(hooks): rewrite useLocalStorage hook * return a tuple instead of an object * add a validator function as parameter (if the stored value is manually changed, it is not safe to cast its type) * add tests --- src/services/local-storage/local-storage.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/services/local-storage/local-storage.ts (limited to 'src/services/local-storage/local-storage.ts') diff --git a/src/services/local-storage/local-storage.ts b/src/services/local-storage/local-storage.ts new file mode 100644 index 0000000..e9a50a5 --- /dev/null +++ b/src/services/local-storage/local-storage.ts @@ -0,0 +1,26 @@ +export const LocalStorage = { + get(key: string): T | undefined { + try { + const serialItem = localStorage.getItem(key); + if (!serialItem) return undefined; + return JSON.parse(serialItem) as T; + } catch (e) { + console.error(e); + return undefined; + } + }, + set(key: string, value: T) { + try { + const serialItem = JSON.stringify(value); + localStorage.setItem(key, serialItem); + } catch (e) { + console.error(e); + } + }, + remove(key: string) { + localStorage.removeItem(key); + }, + clear() { + localStorage.clear(); + }, +}; -- cgit v1.2.3