diff --git a/packages/web/hooks/useRequest.tsx b/packages/web/hooks/useRequest.tsx index 4e2346ed1623..ff7d6efbc841 100644 --- a/packages/web/hooks/useRequest.tsx +++ b/packages/web/hooks/useRequest.tsx @@ -63,7 +63,7 @@ export const useRequest2 = ( ...rest, onError: (err, params) => { rest?.onError?.(err, params); - if (errorToast !== undefined) { + if (errorToast !== '') { const errText = t(getErrText(err, errorToast || '') as any); if (errText) { toast({ diff --git a/packages/web/i18n/en/common.json b/packages/web/i18n/en/common.json index 1fe98c8c4c87..5b1fbbd32823 100644 --- a/packages/web/i18n/en/common.json +++ b/packages/web/i18n/en/common.json @@ -93,10 +93,10 @@ "code_error.team_error.org_parent_not_exist": "Parent organization does not exist", "code_error.team_error.over_size": "error.team.overSize", "code_error.team_error.plugin_amount_not_enough": "Plugin Limit Reached", - "code_error.team_error.re_rank_not_enough": "Unauthorized to Use Re-Rank", + "code_error.team_error.re_rank_not_enough": "Search rearrangement cannot be used in the free version~", "code_error.team_error.un_auth": "Unauthorized to Operate This Team", "code_error.team_error.user_not_active": "The user did not accept or has left the team", - "code_error.team_error.website_sync_not_enough": "Unauthorized to Use Website Sync", + "code_error.team_error.website_sync_not_enough": "The free version cannot be synchronized with the web site ~", "code_error.token_error_code.403": "Invalid Login Status, Please Re-login", "code_error.user_error.balance_not_enough": "Insufficient Account Balance", "code_error.user_error.bin_visitor_guest": "You Are Currently a Guest, Unauthorized to Operate", diff --git a/packages/web/i18n/zh-CN/common.json b/packages/web/i18n/zh-CN/common.json index fdbe61c45ebc..c79e0fa0f51d 100644 --- a/packages/web/i18n/zh-CN/common.json +++ b/packages/web/i18n/zh-CN/common.json @@ -97,10 +97,10 @@ "code_error.team_error.org_parent_not_exist": "父部门不存在", "code_error.team_error.over_size": "error.team.overSize", "code_error.team_error.plugin_amount_not_enough": "插件数量已达上限~", - "code_error.team_error.re_rank_not_enough": "无权使用检索重排~", + "code_error.team_error.re_rank_not_enough": "免费版无法使用检索重排~", "code_error.team_error.un_auth": "无权操作该团队", "code_error.team_error.user_not_active": "用户未接受或已离开团队", - "code_error.team_error.website_sync_not_enough": "无权使用Web站点同步~", + "code_error.team_error.website_sync_not_enough": "免费版无法使用Web站点同步~", "code_error.token_error_code.403": "登录状态无效,请重新登录", "code_error.user_error.balance_not_enough": "账号余额不足~", "code_error.user_error.bin_visitor_guest": "您当前身份为游客,无权操作", diff --git a/packages/web/i18n/zh-Hant/common.json b/packages/web/i18n/zh-Hant/common.json index da6880e7b7e9..bab85faa0419 100644 --- a/packages/web/i18n/zh-Hant/common.json +++ b/packages/web/i18n/zh-Hant/common.json @@ -92,10 +92,10 @@ "code_error.team_error.org_parent_not_exist": "父組織不存在", "code_error.team_error.over_size": "error.team.overSize", "code_error.team_error.plugin_amount_not_enough": "已達外掛程式數量上限", - "code_error.team_error.re_rank_not_enough": "無權使用結果重新排名", + "code_error.team_error.re_rank_not_enough": "免費版無法使用檢索重排~", "code_error.team_error.un_auth": "無權操作此團隊", "code_error.team_error.user_not_active": "使用者未接受或已離開團隊", - "code_error.team_error.website_sync_not_enough": "無權使用網站同步", + "code_error.team_error.website_sync_not_enough": "免費版無法使用Web站點同步~", "code_error.token_error_code.403": "登入狀態無效,請重新登入", "code_error.user_error.balance_not_enough": "帳戶餘額不足", "code_error.user_error.bin_visitor_guest": "您目前身份為訪客,無權操作", diff --git a/projects/app/src/components/support/wallet/NotSufficientModal/index.tsx b/projects/app/src/components/support/wallet/NotSufficientModal/index.tsx index 551bc43af28c..9b82c0a45241 100644 --- a/projects/app/src/components/support/wallet/NotSufficientModal/index.tsx +++ b/projects/app/src/components/support/wallet/NotSufficientModal/index.tsx @@ -29,7 +29,10 @@ const NotSufficientModal = ({ type }: { type: NotSufficientModalType }) => { [TeamErrEnum.datasetSizeNotEnough]: t('common:support.wallet.Dataset_not_sufficient'), [TeamErrEnum.datasetAmountNotEnough]: t('common:support.wallet.Dataset_amount_not_sufficient'), [TeamErrEnum.teamMemberOverSize]: t('common:support.wallet.Team_member_over_size'), - [TeamErrEnum.appAmountNotEnough]: t('common:support.wallet.App_amount_not_sufficient') + [TeamErrEnum.appAmountNotEnough]: t('common:support.wallet.App_amount_not_sufficient'), + [TeamErrEnum.pluginAmountNotEnough]: t('common:support.wallet.App_amount_not_sufficient'), + [TeamErrEnum.websiteSyncNotEnough]: t('common:code_error.team_error.website_sync_not_enough'), + [TeamErrEnum.reRankNotEnough]: t('common:code_error.team_error.re_rank_not_enough') }; return ( diff --git a/projects/app/src/components/support/wallet/QRCodePayModal.tsx b/projects/app/src/components/support/wallet/QRCodePayModal.tsx index c2db2fd8e461..306ab1a3481b 100644 --- a/projects/app/src/components/support/wallet/QRCodePayModal.tsx +++ b/projects/app/src/components/support/wallet/QRCodePayModal.tsx @@ -4,9 +4,9 @@ import { useTranslation } from 'next-i18next'; import { Box, ModalBody } from '@chakra-ui/react'; import { checkBalancePayResult } from '@/web/support/wallet/bill/api'; import { useToast } from '@fastgpt/web/hooks/useToast'; -import { getErrText } from '@fastgpt/global/common/error/utils'; import LightTip from '@fastgpt/web/components/common/LightTip'; import QRCode from 'qrcode'; +import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; export type QRPayProps = { readPrice: number; @@ -54,35 +54,16 @@ const QRCodePayModal = ({ drawCode(); }, [drawCode]); - useEffect(() => { - let timer: NodeJS.Timeout; - const check = async () => { - try { - const res = await checkBalancePayResult(billId); - if (res) { - try { - await onSuccess?.(); - toast({ - title: res, - status: 'success' - }); - return clearTimeout(timer); - } catch (error) { - toast({ - title: getErrText(error), - status: 'error' - }); - } - } - } catch (error) {} - clearTimeout(timer); - timer = setTimeout(check, 2000); - }; - - check(); - - return () => clearTimeout(timer); - }, [billId, drawCode, onSuccess, toast]); + useRequest2(() => checkBalancePayResult(billId), { + manual: false, + pollingInterval: 2000, + onSuccess: (res) => { + if (res) { + onSuccess?.(); + } + }, + errorToast: '' + }); return ( diff --git a/projects/app/src/web/common/api/request.ts b/projects/app/src/web/common/api/request.ts index 009dd5c45066..20bbe2010fb2 100644 --- a/projects/app/src/web/common/api/request.ts +++ b/projects/app/src/web/common/api/request.ts @@ -101,6 +101,7 @@ function checkRes(data: ResponseDataType) { */ function responseError(err: any) { console.log('error->', '请求错误', err); + const data = err?.response?.data || err; if (!err) { return Promise.reject({ message: '未知错误' }); @@ -108,8 +109,12 @@ function responseError(err: any) { if (typeof err === 'string') { return Promise.reject({ message: err }); } + if (typeof data === 'string') { + return Promise.reject(data); + } + // 有报错响应 - if (err?.code in TOKEN_ERROR_CODE || err?.response?.data?.code in TOKEN_ERROR_CODE) { + if (data?.code in TOKEN_ERROR_CODE) { if (!['/chat/share', '/chat/team', '/login'].includes(window.location.pathname)) { clearToken(); window.location.replace( @@ -120,18 +125,18 @@ function responseError(err: any) { return Promise.reject({ message: i18nT('common:unauth_token') }); } if ( - err?.statusText === TeamErrEnum.aiPointsNotEnough || - err?.statusText === TeamErrEnum.datasetSizeNotEnough || - err?.statusText === TeamErrEnum.datasetAmountNotEnough || - err?.statusText === TeamErrEnum.appAmountNotEnough + data?.statusText === TeamErrEnum.aiPointsNotEnough || + data?.statusText === TeamErrEnum.datasetSizeNotEnough || + data?.statusText === TeamErrEnum.datasetAmountNotEnough || + data?.statusText === TeamErrEnum.appAmountNotEnough || + data?.statusText === TeamErrEnum.pluginAmountNotEnough || + data?.statusText === TeamErrEnum.websiteSyncNotEnough || + data?.statusText === TeamErrEnum.reRankNotEnough ) { - useSystemStore.getState().setNotSufficientModalType(err.statusText); - return Promise.reject(err); - } - if (err?.response?.data) { - return Promise.reject(err?.response?.data); + useSystemStore.getState().setNotSufficientModalType(data.statusText); + return Promise.reject(data); } - return Promise.reject(err); + return Promise.reject(data); } /* 创建请求实例 */ diff --git a/projects/app/src/web/context/useInitApp.ts b/projects/app/src/web/context/useInitApp.ts index a705e36459d8..4b32a7c88b16 100644 --- a/projects/app/src/web/context/useInitApp.ts +++ b/projects/app/src/web/context/useInitApp.ts @@ -63,7 +63,7 @@ export const useInitApp = () => { useRequest2(initFetch, { manual: false, - pollingInterval: 300000 + pollingInterval: 300000 // 5 minutes refresh }); useEffect(() => {