mirror of
https://github.com/supabase/supabase.git
synced 2026-05-08 18:00:20 -04:00
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { LOCAL_STORAGE_KEYS } from 'common'
|
|
|
|
type LocalStorageKey = (typeof LOCAL_STORAGE_KEYS)[keyof typeof LOCAL_STORAGE_KEYS]
|
|
type StorageType = 'local' | 'session'
|
|
|
|
function getStorage(storageType: StorageType) {
|
|
return storageType === 'local' ? window.localStorage : window.sessionStorage
|
|
}
|
|
|
|
export function store(storageType: StorageType, key: LocalStorageKey, value: string) {
|
|
if (typeof window === 'undefined') return
|
|
const storage = getStorage(storageType)
|
|
|
|
try {
|
|
storage.setItem(key as string, value)
|
|
} catch {
|
|
console.error(`Failed to set storage item with key "${key}"`)
|
|
}
|
|
}
|
|
|
|
export function retrieve(storageType: StorageType, key: LocalStorageKey): string | null {
|
|
if (typeof window === 'undefined') return null
|
|
const storage = getStorage(storageType)
|
|
return storage.getItem(key as string)
|
|
}
|
|
|
|
export function remove(storageType: StorageType, key: LocalStorageKey) {
|
|
if (typeof window === 'undefined') return
|
|
const storage = getStorage(storageType)
|
|
return storage.removeItem(key as string)
|
|
}
|
|
|
|
export function storeOrRemoveNull(
|
|
storageType: StorageType,
|
|
key: LocalStorageKey,
|
|
value: string | null | undefined
|
|
) {
|
|
if (typeof window === 'undefined') return
|
|
if (value === null || value === undefined) {
|
|
remove(storageType, key)
|
|
} else {
|
|
store(storageType, key, value)
|
|
}
|
|
}
|