aboutsummaryrefslogtreecommitdiffstats
path: root/src/services/local-storage/local-storage.ts
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-10-26 19:07:31 +0200
committerArmand Philippot <git@armandphilippot.com>2023-11-11 18:15:27 +0100
commit795b92cc1a168c48c7710ca6e0e1ef5974013d95 (patch)
tree8f57204b0ffe7c8acb3203a24292f375377b6369 /src/services/local-storage/local-storage.ts
parent9aeb82269d7c74c4566b7ca254782a4dfbd69a6e (diff)
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
Diffstat (limited to 'src/services/local-storage/local-storage.ts')
-rw-r--r--src/services/local-storage/local-storage.ts26
1 files changed, 26 insertions, 0 deletions
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<T>(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<T>(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();
+ },
+};