feat(projects): Add prefix to local storage
This commit is contained in:
parent
c347528bbb
commit
1fc34cc5f8
3
.env
3
.env
@ -43,3 +43,6 @@ VITE_STATIC_SUPER_ROLE=R_SUPER
|
|||||||
|
|
||||||
# sourcemap
|
# sourcemap
|
||||||
VITE_SOURCE_MAP=N
|
VITE_SOURCE_MAP=N
|
||||||
|
|
||||||
|
# Used to differentiate storage across different domains
|
||||||
|
VITE_STORAGE_PREFIX=SOY_
|
||||||
|
@ -3,7 +3,7 @@ import localforage from 'localforage';
|
|||||||
/** The storage type */
|
/** The storage type */
|
||||||
export type StorageType = 'local' | 'session';
|
export type StorageType = 'local' | 'session';
|
||||||
|
|
||||||
export function createStorage<T extends object>(type: StorageType) {
|
export function createStorage<T extends object>(type: StorageType, storagePrefix: string) {
|
||||||
const stg = type === 'session' ? window.sessionStorage : window.localStorage;
|
const stg = type === 'session' ? window.sessionStorage : window.localStorage;
|
||||||
|
|
||||||
const storage = {
|
const storage = {
|
||||||
@ -16,7 +16,7 @@ export function createStorage<T extends object>(type: StorageType) {
|
|||||||
set<K extends keyof T>(key: K, value: T[K]) {
|
set<K extends keyof T>(key: K, value: T[K]) {
|
||||||
const json = JSON.stringify(value);
|
const json = JSON.stringify(value);
|
||||||
|
|
||||||
stg.setItem(key as string, json);
|
stg.setItem(`${storagePrefix}${key as string}`, json);
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Get session
|
* Get session
|
||||||
@ -24,7 +24,7 @@ export function createStorage<T extends object>(type: StorageType) {
|
|||||||
* @param key Session key
|
* @param key Session key
|
||||||
*/
|
*/
|
||||||
get<K extends keyof T>(key: K): T[K] | null {
|
get<K extends keyof T>(key: K): T[K] | null {
|
||||||
const json = stg.getItem(key as string);
|
const json = stg.getItem(`${storagePrefix}${key as string}`);
|
||||||
if (json) {
|
if (json) {
|
||||||
let storageData: T[K] | null = null;
|
let storageData: T[K] | null = null;
|
||||||
|
|
||||||
@ -37,12 +37,12 @@ export function createStorage<T extends object>(type: StorageType) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stg.removeItem(key as string);
|
stg.removeItem(`${storagePrefix}${key as string}`);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
remove(key: keyof T) {
|
remove(key: keyof T) {
|
||||||
stg.removeItem(key as string);
|
stg.removeItem(`${storagePrefix}${key as string}`);
|
||||||
},
|
},
|
||||||
clear() {
|
clear() {
|
||||||
stg.clear();
|
stg.clear();
|
||||||
|
2
src/typings/env.d.ts
vendored
2
src/typings/env.d.ts
vendored
@ -101,5 +101,7 @@ declare namespace Env {
|
|||||||
* @link https://docs.iconify.design/api/providers.html
|
* @link https://docs.iconify.design/api/providers.html
|
||||||
*/
|
*/
|
||||||
readonly VITE_ICONIFY_URL?: string;
|
readonly VITE_ICONIFY_URL?: string;
|
||||||
|
/** Used to differentiate storage across different domains */
|
||||||
|
readonly VITE_STORAGE_PREFIX?: string;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import { createLocalforage, createStorage } from '@sa/utils';
|
import { createLocalforage, createStorage } from '@sa/utils';
|
||||||
|
|
||||||
export const localStg = createStorage<StorageType.Local>('local');
|
const storagePrefix = import.meta.env.VITE_STORAGE_PREFIX || '';
|
||||||
|
|
||||||
export const sessionStg = createStorage<StorageType.Session>('session');
|
export const localStg = createStorage<StorageType.Local>('local', storagePrefix);
|
||||||
|
|
||||||
|
export const sessionStg = createStorage<StorageType.Session>('session', storagePrefix);
|
||||||
|
|
||||||
export const localforage = createLocalforage<StorageType.Local>('local');
|
export const localforage = createLocalforage<StorageType.Local>('local');
|
||||||
|
Loading…
Reference in New Issue
Block a user