From f60ab0eb1d6d4ac08b91c5cc668b81225eec683b Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 5 Oct 2023 14:28:21 +0530 Subject: [PATCH] feat: add json store utils --- app/javascript/shared/helpers/localStorage.js | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/app/javascript/shared/helpers/localStorage.js b/app/javascript/shared/helpers/localStorage.js index 0457d1c50..1dcc6ea5f 100644 --- a/app/javascript/shared/helpers/localStorage.js +++ b/app/javascript/shared/helpers/localStorage.js @@ -19,7 +19,7 @@ export const LocalStorage = { } else { window.localStorage.setItem(key, value); } - window.localStorage.setItem(key + ':ts', Date.now()); + window.localStorage.setItem(key + ':ts', Date.now().toString()); }, setFlag(store, accountId, key, expiry = 24 * 60 * 60 * 1000) { @@ -46,4 +46,39 @@ export const LocalStorage = { window.localStorage.removeItem(key); window.localStorage.removeItem(key + ':ts'); }, + + updateJsonStore(storeName, key, value) { + try { + const storedValue = this.get(storeName) || {}; + storedValue[key] = value; + this.set(storeName, storedValue); + } catch (e) { + // eslint-disable-next-line no-console + console.error('Error updating JSON store in localStorage', e); + } + }, + + getFromJsonStore(storeName, key) { + try { + const storedValue = this.get(storeName) || {}; + return storedValue[key] || null; + } catch (e) { + // eslint-disable-next-line no-console + console.error('Error getting value from JSON store in localStorage', e); + return null; + } + }, + + deleteFromJsonStore(storeName, key) { + try { + const storedValue = this.get(storeName); + if (storedValue && key in storedValue) { + delete storedValue[key]; + this.set(storeName, storedValue); + } + } catch (e) { + // eslint-disable-next-line no-console + console.error('Error deleting entry from JSON store in localStorage', e); + } + }, };