|
@@ -0,0 +1,38 @@
|
|
|
+/**
|
|
|
+ * 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}`,
|
|
|
+ };
|
|
|
+}
|