| 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) |
| } |
|
|