import { defineStore } from "pinia"; const USER_INFO_KEY = "USER_INFO_KEY"; const TOKEN_KEY = "TOKEN_KEY"; export const useUserStore = defineStore("user", { state: () => ({ userInfo: null, token: "", // lang: 'zh-CN', lang: "en-US", searchType: undefined, showLoginDialog: false, }), actions: { setUserInfo (userInfo: UserInfo | null) { this.userInfo = userInfo; let cookies = useCookie(USER_INFO_KEY); cookies.value = userInfo; setItem(USER_INFO_KEY, JSON.stringify(userInfo)); }, setToken (token: string) { this.token = token; let cookies = useCookie(TOKEN_KEY); cookies.value = token; setItem(TOKEN_KEY, token); }, setLang (val: string) { this.lang = val; let cookies = useCookie("lang"); cookies.value = val; setItem("lang", val); }, resetState () { this.userInfo = null; this.token = ""; removeItem(USER_INFO_KEY); removeItem(TOKEN_KEY); // removeItem("lang"); removeItemCookie(USER_INFO_KEY); removeItemCookie(TOKEN_KEY); // removeItemCookie("lang"); }, setSearchType (val: string) { this.searchType = val; }, setShowLoginDialog (bol: boolean) { this.showLoginDialog = bol; }, }, getters: { getUserInfo: (state) => { console.log('storage', getItem(USER_INFO_KEY)) return state.userInfo || getItem(USER_INFO_KEY) || null }, getToken: (state) => getItemCookie(TOKEN_KEY) || state.token || "", getLang: (state) => getItemCookie("lang") || state.lang || "", getSearchType: (state) => state.searchType || "", getShowLoginDialog: (state) => state.showLoginDialog || false, }, // persist: { // storage: { // getItem: (key) => { // // if (process.client) { // // return localStorage.getItem(key) // // } // return useCookie(key).value; // }, // setItem: (key, value) => { // // if (process.client) { // // localStorage.setItem(key, value) // // } // let cookies = useCookie(key); // cookies.value = value; // }, // removeItem: (key) => { // let cookies = useCookie(key); // cookies.value = undefined || null; // }, // }, // }, }); const getItem = (key: string) => { return useCookie(key).value; }; const setItem = (key: string, value: any) => { let cookies = useCookie(key); cookies.value = value; }; const removeItem = (key: string) => { let cookies = useCookie(key); cookies.value = null; }; const removeItemCookie = (key: string) => { let cookies = useCookie(key); cookies.value = null; }; const getItemCookie = (key: string) => { let cookies = useCookie(key); return cookies.value; };