41 lines
983 B
TypeScript
41 lines
983 B
TypeScript
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;
|
|
}
|
|
},
|
|
},
|
|
});
|