You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
38 lines
1.1 KiB
/**
|
|
* Pinia Persist Plugin
|
|
* Pinia 持久化插件
|
|
* @link https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/
|
|
*
|
|
*/
|
|
import type { Pinia } from 'pinia';
|
|
import { createPersistedState } from 'pinia-plugin-persistedstate';
|
|
import type { PersistedStateFactoryOptions } from 'pinia-plugin-persistedstate';
|
|
import { getCommonStoragePrefix } from '@/utils/env';
|
|
|
|
export const PERSIST_KEY_PREFIX = getCommonStoragePrefix();
|
|
|
|
// TODO customSerializer
|
|
|
|
/**
|
|
* Register Pinia Persist Plugin
|
|
* 注册 Pinia 持久化插件
|
|
*
|
|
* @param pinia Pinia instance Pinia 实例
|
|
*/
|
|
export function registerPiniaPersistPlugin(pinia: Pinia) {
|
|
pinia.use(createPersistedState(createPersistedStateOptions(PERSIST_KEY_PREFIX)));
|
|
}
|
|
|
|
/**
|
|
* Create Persisted State Options
|
|
* 创建持久化状态选项
|
|
*
|
|
* @param keyPrefix prefix for storage key 储存键前缀
|
|
* @returns persisted state factory options
|
|
*/
|
|
export function createPersistedStateOptions(keyPrefix: string): PersistedStateFactoryOptions {
|
|
return {
|
|
storage: localStorage,
|
|
key: (id) => `${keyPrefix}__${id}`,
|
|
};
|
|
}
|
|
|