Fix share page whisper auth (#1161)

Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
This commit is contained in:
Archer
2024-04-09 21:38:47 +08:00
committed by GitHub
parent adfad8ff7f
commit 2991c07467
55 changed files with 466 additions and 251 deletions

View File

@@ -5,6 +5,8 @@ import axios, {
AxiosProgressEvent
} from 'axios';
import { useUserStore } from '@/web/support/user/useUserStore';
import { putUpdateTeam } from '@/web/support/user/team/api';
import { LafAccountType } from '@fastgpt/global/support/user/team/type';
interface ConfigType {
headers?: { [key: string]: string };
@@ -72,21 +74,33 @@ function responseSuccess(response: AxiosResponse<ResponseDataType>) {
/**
* 响应数据检查
*/
function checkRes(data: ResponseDataType) {
if (data === undefined) {
console.log('error->', data, 'data is empty');
function checkRes(
res: ResponseDataType,
url: string,
data: any,
requestConfig: ConfigType,
method: Method
) {
if (res === undefined) {
console.log('error->', res, 'res is empty');
return Promise.reject('服务器异常');
} else if (data.error) {
return responseError(data.error);
} else if (res.error) {
return responseError(data.error, url, data, requestConfig, method);
}
return data.data;
return res.data;
}
/**
* 响应错误
*/
function responseError(err: any) {
function responseError(
err: any,
url: string,
data: any,
requestConfig: ConfigType,
method: Method
) {
console.log('error->', '请求错误', err);
if (!err) {
@@ -97,6 +111,25 @@ function responseError(err: any) {
}
if (err?.response?.data) {
const code = err?.response?.data?.statusCode;
if (code === 401) {
return POST<string>(`/v1/auth/pat2token`, {
pat: useUserStore.getState().userInfo?.team?.lafAccount?.pat
})
.then((res) => {
putUpdateTeam({
teamId: useUserStore.getState().userInfo?.team.teamId || '',
lafAccount: {
...useUserStore.getState().userInfo?.team?.lafAccount,
token: res
} as LafAccountType
});
return request(url, data, requestConfig, method);
})
.catch((err) => {
return Promise.reject({ message: '登录凭证过期' });
});
}
return Promise.reject(err?.response?.data);
}
return Promise.reject(err);
@@ -115,12 +148,9 @@ instance.interceptors.request.use(startInterceptors, (err) => Promise.reject(err
/* 响应拦截 */
instance.interceptors.response.use(responseSuccess, (err) => Promise.reject(err));
function request(
url: string,
data: any,
{ cancelToken, maxQuantity, ...config }: ConfigType,
method: Method
): any {
function request(url: string, data: any, requestConfig: ConfigType, method: Method): any {
const { cancelToken, maxQuantity, ...config } = requestConfig;
/* 去空 */
for (const key in data) {
if (data[key] === null || data[key] === undefined) {
@@ -140,8 +170,8 @@ function request(
signal: cancelToken?.signal,
...config // 用户自定义配置,可以覆盖前面的配置
})
.then((res) => checkRes(res.data))
.catch((err) => responseError(err))
.then((res) => checkRes(res.data, url, data, requestConfig, method))
.catch((err) => responseError(err, url, data, requestConfig, method))
.finally(() => requestFinish({ url }));
}

View File

@@ -51,6 +51,12 @@ export const useSpeech = (props?: OutLinkChatAuthProps & { appId?: string }) =>
}, []);
const startSpeak = async (onFinish: (text: string) => void) => {
if (!navigator.mediaDevices.getUserMedia) {
return toast({
status: 'warning',
title: t('common.speech.not support')
});
}
try {
cancelWhisperSignal.current = false;

View File

@@ -17,7 +17,7 @@ export const appTemplates: (AppItemType & {
modules: [
{
moduleId: 'userGuide',
name: 'core.module.template.User guide',
name: 'core.module.template.App system setting',
avatar: '/imgs/module/userGuide.png',
flowType: 'userGuide',
position: {
@@ -300,7 +300,7 @@ export const appTemplates: (AppItemType & {
modules: [
{
moduleId: 'userGuide',
name: 'core.module.template.User guide',
name: 'core.module.template.App system setting',
avatar: '/imgs/module/userGuide.png',
flowType: 'userGuide',
position: {
@@ -616,7 +616,7 @@ export const appTemplates: (AppItemType & {
modules: [
{
moduleId: 'userGuide',
name: 'core.module.template.User guide',
name: 'core.module.template.App system setting',
intro: 'core.app.tip.userGuideTip',
avatar: '/imgs/module/userGuide.png',
flowType: 'userGuide',
@@ -1651,7 +1651,7 @@ export const appTemplates: (AppItemType & {
},
{
moduleId: 'q9equb',
name: 'core.module.template.User guide',
name: 'core.module.template.App system setting',
flowType: 'userGuide',
position: {
x: -272.66416216517086,

View File

@@ -14,7 +14,7 @@ export async function postForm2Modules(data: AppSimpleEditFormType) {
function userGuideTemplate(formData: AppSimpleEditFormType): ModuleItemType[] {
return [
{
name: 'core.module.template.User guide',
name: '系统配置',
flowType: FlowNodeTypeEnum.userGuide,
inputs: [
{

View File

@@ -1,6 +1,4 @@
.react-flow__panel {
display: none;
}
.react-flow__panel.react-flow__attribution {
display: none !important;
z-index: 0;
left: 0;
}

View File

@@ -1,4 +1,4 @@
import { GET, POST, PUT } from '@/web/common/api/lafRequest';
import { GET, POST } from '@/web/common/api/lafRequest';
export const postLafPat2Token = (pat: string) => POST<string>(`/v1/auth/pat2token`, { pat });