@fanam-pkg/core-utils
Version:
Core Functions are managed here for quick web development
39 lines (32 loc) • 1.22 kB
text/typescript
export const useStorage = () => {
const getStorage = <T = string>(key: string, isLocalStorage = false): T | null => {
let value: T | null = null
const storageValue =
typeof window !== "undefined" ? (isLocalStorage ? localStorage.getItem(key) : sessionStorage.getItem(key)) : ""
try {
if (storageValue) value = JSON.parse(storageValue) as T
} catch (error) {
value = storageValue as T
}
return value
}
const setStorage = <T>(key: string, value: T, isLocalStorage = false) => {
const payload = typeof value === "string" ? value : JSON.stringify(value)
if (isLocalStorage) localStorage.setItem(key, payload)
else sessionStorage.setItem(key, payload)
}
const removeStorage = (key: string, isLocalStorage = false) =>
isLocalStorage ? localStorage.removeItem(key) : sessionStorage.removeItem(key)
const clearStorage = (isLocalStorage = false) => (isLocalStorage ? localStorage.clear() : sessionStorage.clear())
const clearAllStorage = () => {
localStorage.clear()
sessionStorage.clear()
}
return {
getStorage,
setStorage,
removeStorage,
clearAllStorage,
clearStorage,
}
}