From 8e8e07e2f5e009ad19e4f384c3ec0d8f8e298dd5 Mon Sep 17 00:00:00 2001 From: Vyacheslav Date: Sat, 14 Jun 2025 18:35:24 +0500 Subject: [PATCH] add IStorageManager and it's implementation via localStorage in LocalStorageManager --- src/helpers/IStorageManager.ts | 7 +++++++ src/helpers/LocalStorageManager.ts | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/helpers/IStorageManager.ts create mode 100644 src/helpers/LocalStorageManager.ts diff --git a/src/helpers/IStorageManager.ts b/src/helpers/IStorageManager.ts new file mode 100644 index 0000000..f738c08 --- /dev/null +++ b/src/helpers/IStorageManager.ts @@ -0,0 +1,7 @@ +interface IStorageManager { + getItem(key: string): T | null; + setItem(key: string, value: T): void; + removeItem(key: string): void; +} + +export default IStorageManager; \ No newline at end of file diff --git a/src/helpers/LocalStorageManager.ts b/src/helpers/LocalStorageManager.ts new file mode 100644 index 0000000..a701a90 --- /dev/null +++ b/src/helpers/LocalStorageManager.ts @@ -0,0 +1,20 @@ +import IStorageManager from "./IStorageManager.ts"; + +class LocalStorageManager implements IStorageManager { + setItem = (key: string, value: T): void => { + localStorage.setItem(key, JSON.stringify(value)); + } + + getItem = (key: string): T | null => { + const value = localStorage.getItem(key); + if (value === null) + return value; + return JSON.parse(value); + } + + removeItem = (key: string): void => { + localStorage.removeItem(key); + } +} + +export default LocalStorageManager; \ No newline at end of file