1
0

feat: add persist feature for frontend

This commit is contained in:
2026-05-13 11:02:35 +08:00
parent bdee3b3efa
commit 078e61e993
6 changed files with 86 additions and 13 deletions

View File

@@ -1,9 +1,12 @@
import { ref, computed } from 'vue'
import { defineStore } from 'pinia'
import { Language } from '@/utils/i18n'
interface LanguageState {
language: Language
}
export const useLanguageStore = defineStore('language', {
state: () => ({
state: (): LanguageState => ({
language: Language.English
}),
@@ -23,4 +26,10 @@ export const useLanguageStore = defineStore('language', {
this.changeLanguage(Language.SimplifiedChinese);
},
},
persist: {
key: 'ccn-i18n',
storage: localStorage,
pick: ['language'],
},
})

View File

@@ -0,0 +1,30 @@
import { defineStore } from 'pinia'
interface TokenState {
token: string | null
}
export const useTokenStore = defineStore('token', {
state: (): TokenState => ({
token: null,
}),
getters: {
isLoggedIn: (state) => typeof state.token === 'string',
},
actions: {
login(token: string) {
this.token = token;
},
logout() {
this.token = null;
},
},
persist: {
key: 'ccn-token',
storage: localStorage,
pick: ['token'],
},
})