import { defineStore } from 'pinia' import applicationApi from '@/api/application' import applicationXpackApi from '@/api/application-xpack' import { type Ref, type UnwrapRef } from 'vue' import useUserStore from './user' import type { ApplicationFormType } from '@/api/type/application' const useApplicationStore = defineStore({ id: 'application', state: () => ({ location: `${window.location.origin}/ui/chat/` }), actions: { async asyncGetAllApplication() { return new Promise((resolve, reject) => { applicationApi .getAllAppilcation() .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) }) }, async asyncGetApplicationDetail(id: string, loading?: Ref) { return new Promise((resolve, reject) => { applicationApi .getApplicationDetail(id, loading) .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) }) }, async asyncGetApplicationDataset(id: string, loading?: Ref) { return new Promise((resolve, reject) => { applicationApi .getApplicationDataset(id, loading) .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) }) }, async asyncGetAccessToken(id: string, loading?: Ref) { return new Promise((resolve, reject) => { const user = useUserStore() if (user.isEnterprise()) { applicationXpackApi .getAccessToken(id, loading) .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) } else { applicationApi .getAccessToken(id, loading) .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) } }) }, async asyncGetAppProfile(loading?: Ref) { return new Promise((resolve, reject) => { const user = useUserStore() applicationApi .getAppProfile(loading) .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) }) }, async asyncAppAuthentication(token: string, loading?: Ref) { return new Promise((resolve, reject) => { applicationApi .postAppAuthentication(token, loading) .then((res) => { localStorage.setItem('accessToken', res.data) sessionStorage.setItem('accessToken', res.data) resolve(res) }) .catch((error) => { reject(error) }) }) }, async refreshAccessToken(token: string) { this.asyncAppAuthentication(token) }, // 修改应用 async asyncPutApplication(id: string, data: any, loading?: Ref) { return new Promise((resolve, reject) => { applicationApi .putApplication(id, data, loading) .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) }) }, async validatePassword(id: string, password: string, loading?: Ref) { return new Promise((resolve, reject) => { applicationApi .validatePassword(id, password) .then((data) => { resolve(data) }) .catch((error) => { reject(error) }) }) } } }) export default useApplicationStore