| import { defineStore } from 'pinia' | |
| import { getToken, removeToken, setToken } from './helper' | |
| import { store } from '@/store' | |
| import { fetchSession } from '@/api' | |
| interface SessionResponse { | |
| auth: boolean | |
| model: 'ChatGPTAPI' | 'ChatGPTUnofficialProxyAPI' | |
| } | |
| export interface AuthState { | |
| token: string | undefined | |
| session: SessionResponse | null | |
| } | |
| export const useAuthStore = defineStore('auth-store', { | |
| state: (): AuthState => ({ | |
| token: getToken(), | |
| session: null, | |
| }), | |
| getters: { | |
| isChatGPTAPI(state): boolean { | |
| return state.session?.model === 'ChatGPTAPI' | |
| }, | |
| }, | |
| actions: { | |
| async getSession() { | |
| try { | |
| const { data } = await fetchSession<SessionResponse>() | |
| this.session = { ...data } | |
| return Promise.resolve(data) | |
| } | |
| catch (error) { | |
| return Promise.reject(error) | |
| } | |
| }, | |
| setToken(token: string) { | |
| this.token = token | |
| setToken(token) | |
| }, | |
| removeToken() { | |
| this.token = undefined | |
| removeToken() | |
| }, | |
| }, | |
| }) | |
| export function useAuthStoreWithout() { | |
| return useAuthStore(store) | |
| } | |