import { defineStore } from 'pinia'
|
import { getToken, removeToken, setToken } from './helper'
|
import { store } from '@/store/helper'
|
import { fetchSession } from '@/api'
|
import { gptConfigStore, homeStore } from '@/store/homeStore'
|
|
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 }
|
homeStore.setMyData({session: data });
|
|
let str = localStorage.getItem('gptConfigStore');
|
if( ! str ) setTimeout( ()=> gptConfigStore.setInit() , 500);
|
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)
|
}
|