import type { LockInfo } from '/#/store'; import { defineStore } from 'pinia'; import { LOCK_INFO_KEY } from '/@/enums/cacheEnum'; import { Persistent } from '/@/utils/cache/persistent'; import { useUserStore } from './user'; interface LockState { lockInfo: Nullable<LockInfo>; } export const useLockStore = defineStore({ id: 'app-lock', state: (): LockState => ({ lockInfo: Persistent.getLocal(LOCK_INFO_KEY), }), getters: { getLockInfo(): Nullable<LockInfo> { return this.lockInfo; }, }, actions: { setLockInfo(info: LockInfo) { this.lockInfo = Object.assign({}, this.lockInfo, info); Persistent.setLocal(LOCK_INFO_KEY, this.lockInfo, true); }, resetLockInfo() { Persistent.removeLocal(LOCK_INFO_KEY, true); this.lockInfo = null; }, // Unlock async unLock(password?: string) { if (this.lockInfo?.pwd === password) { this.resetLockInfo(); return true; } }, }, });