admin-vben5/packages/stores/src/setup.ts

42 lines
993 B
TypeScript
Raw Normal View History

import type { Pinia } from 'pinia';
import { createPinia } from 'pinia';
let pinia: Pinia;
export interface InitStoreOptions {
/**
* @zh_CN , @vben/stores appapp缓存冲突,
*/
namespace: string;
}
/**
* @zh_CN pinia
*/
export async function initStore(options: InitStoreOptions) {
const { createPersistedState } = await import('pinia-plugin-persistedstate');
pinia = createPinia();
const { namespace } = options;
pinia.use(
createPersistedState({
// key $appName-$store.id
key: (storeKey) => `${namespace}-${storeKey}`,
storage: localStorage,
}),
);
return pinia;
}
export function resetAllStores() {
if (!pinia) {
console.error('Pinia is not installed');
return;
}
const allStores = (pinia as any)._s;
for (const [_key, store] of allStores) {
store.$reset();
}
}