Spaces:
Sleeping
Sleeping
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) | |
} | |