From 935687998eb9d34dc0c1076adffba961367894ca Mon Sep 17 00:00:00 2001 From: balibabu Date: Thu, 25 Jul 2024 18:53:10 +0800 Subject: [PATCH] fix: fetch user by @tanstack/react-query #1306 (#1709) ### What problem does this PR solve? fix: fetch user by @tanstack/react-query #1306 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- .../components/chunk-method-modal/hooks.ts | 7 +- web/src/hooks/llm-hooks.ts | 9 - web/src/hooks/logic-hooks.ts | 19 +- web/src/hooks/user-setting-hooks.ts | 115 ++++++----- .../components/right-toolbar/index.tsx | 8 +- web/src/layouts/components/user/index.tsx | 9 +- .../components/knowledge-file/hooks.ts | 3 - .../components/knowledge-setting/hooks.ts | 6 +- .../chat/chat-configuration-modal/index.tsx | 2 +- web/src/pages/chat/chat-container/index.tsx | 4 +- web/src/pages/flow/chat/box.tsx | 4 +- web/src/pages/flow/hooks.ts | 2 +- web/src/pages/knowledge/index.tsx | 4 +- web/src/pages/user-setting/hooks.ts | 7 - web/src/pages/user-setting/model.ts | 183 ------------------ .../pages/user-setting/setting-model/hooks.ts | 20 +- .../user-setting/setting-model/index.tsx | 14 +- .../system-model-setting-modal/index.tsx | 2 +- .../user-setting/setting-password/index.tsx | 4 +- .../user-setting/setting-profile/index.tsx | 19 +- .../pages/user-setting/setting-team/index.tsx | 4 +- web/typings.d.ts | 2 - 22 files changed, 107 insertions(+), 340 deletions(-) delete mode 100644 web/src/pages/user-setting/model.ts diff --git a/web/src/components/chunk-method-modal/hooks.ts b/web/src/components/chunk-method-modal/hooks.ts index bfa8b874..413309ca 100644 --- a/web/src/components/chunk-method-modal/hooks.ts +++ b/web/src/components/chunk-method-modal/hooks.ts @@ -1,7 +1,4 @@ -import { - useFetchTenantInfo, - useSelectParserList, -} from '@/hooks/user-setting-hooks'; +import { useSelectParserList } from '@/hooks/user-setting-hooks'; import { useEffect, useMemo, useState } from 'react'; const ParserListMap = new Map([ @@ -71,8 +68,6 @@ export const useFetchParserListOnMount = ( ); }, [parserList, documentExtension]); - useFetchTenantInfo(); - useEffect(() => { setSelectedTag(parserId); }, [parserId, documentId]); diff --git a/web/src/hooks/llm-hooks.ts b/web/src/hooks/llm-hooks.ts index a4ee233c..4c8eec6c 100644 --- a/web/src/hooks/llm-hooks.ts +++ b/web/src/hooks/llm-hooks.ts @@ -16,7 +16,6 @@ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { message } from 'antd'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { useSelector } from 'umi'; export const useFetchLlmList = ( modelType?: LlmModelType, @@ -34,14 +33,6 @@ export const useFetchLlmList = ( return data; }; -export const useSelectLlmInfo = () => { - const llmInfo: IThirdOAIModelCollection = useSelector( - (state: any) => state.settingModel.llmInfo, - ); - - return llmInfo; -}; - export const useSelectLlmOptions = () => { const llmInfo: IThirdOAIModelCollection = useFetchLlmList(); diff --git a/web/src/hooks/logic-hooks.ts b/web/src/hooks/logic-hooks.ts index e8c046ba..e03a9b1d 100644 --- a/web/src/hooks/logic-hooks.ts +++ b/web/src/hooks/logic-hooks.ts @@ -24,11 +24,7 @@ import { useSetModalState, useTranslate } from './common-hooks'; import { useSetDocumentParser } from './document-hooks'; import { useSetPaginationParams } from './route-hook'; import { useOneNamespaceEffectsLoading } from './store-hooks'; -import { - useFetchTenantInfo, - useSaveSetting, - useSelectTenantInfo, -} from './user-setting-hooks'; +import { useFetchTenantInfo, useSaveSetting } from './user-setting-hooks'; export const useChangeDocumentParser = (documentId: string) => { const setDocumentParser = useSetDocumentParser(); @@ -87,7 +83,7 @@ export const useHandleSearchChange = () => { export const useChangeLanguage = () => { const { i18n } = useTranslation(); - const saveSetting = useSaveSetting(); + const { saveSetting } = useSaveSetting(); const changeLanguage = (lng: string) => { i18n.changeLanguage( @@ -333,15 +329,8 @@ export const useSelectItem = (defaultId?: string) => { return { selectedId, handleItemClick }; }; -export const useFetchModelId = (visible: boolean) => { - const fetchTenantInfo = useFetchTenantInfo(false); - const tenantInfo = useSelectTenantInfo(); - - useEffect(() => { - if (visible) { - fetchTenantInfo(); - } - }, [visible, fetchTenantInfo]); +export const useFetchModelId = () => { + const { data: tenantInfo } = useFetchTenantInfo(); return tenantInfo?.llm_id ?? ''; }; diff --git a/web/src/hooks/user-setting-hooks.ts b/web/src/hooks/user-setting-hooks.ts index 44224155..d52ef917 100644 --- a/web/src/hooks/user-setting-hooks.ts +++ b/web/src/hooks/user-setting-hooks.ts @@ -1,62 +1,68 @@ +import { LanguageTranslationMap } from '@/constants/common'; +import { ResponseGetType } from '@/interfaces/database/base'; import { ITenantInfo } from '@/interfaces/database/knowledge'; import { ISystemStatus, IUserInfo } from '@/interfaces/database/userSetting'; import userService from '@/services/user-service'; -import { useCallback, useEffect, useMemo, useState } from 'react'; -import { useDispatch, useSelector } from 'umi'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; +import { message } from 'antd'; +import { useCallback, useMemo, useState } from 'react'; +import { useTranslation } from 'react-i18next'; -export const useFetchUserInfo = () => { - const dispatch = useDispatch(); - const fetchUserInfo = useCallback(() => { - dispatch({ type: 'settingModel/getUserInfo' }); - }, [dispatch]); +export const useFetchUserInfo = (): ResponseGetType => { + const { i18n } = useTranslation(); - useEffect(() => { - fetchUserInfo(); - }, [fetchUserInfo]); + const { data, isFetching: loading } = useQuery({ + queryKey: ['userInfo'], + initialData: {}, + gcTime: 0, + queryFn: async () => { + const { data } = await userService.user_info(); + if (data.retcode === 0) { + i18n.changeLanguage( + LanguageTranslationMap[ + data.language as keyof typeof LanguageTranslationMap + ], + ); + } + return data?.data ?? {}; + }, + }); + + return { data, loading }; }; -export const useSelectUserInfo = () => { - const userInfo: IUserInfo = useSelector( - (state: any) => state.settingModel.userInfo, - ); +export const useFetchTenantInfo = (): ResponseGetType => { + const { data, isFetching: loading } = useQuery({ + queryKey: ['tenantInfo'], + initialData: {}, + gcTime: 0, + queryFn: async () => { + const { data: res } = await userService.get_tenant_info(); + if (res.retcode === 0) { + // llm_id is chat_id + // asr_id is speech2txt + const { data } = res; + data.chat_id = data.llm_id; + data.speech2text_id = data.asr_id; - return userInfo; -}; + return data; + } -export const useSelectTenantInfo = () => { - const tenantInfo: ITenantInfo = useSelector( - (state: any) => state.settingModel.tenantIfo, - ); + return res; + }, + }); - return tenantInfo; -}; - -export const useFetchTenantInfo = (isOnMountFetching: boolean = true) => { - const dispatch = useDispatch(); - - const fetchTenantInfo = useCallback(() => { - dispatch({ - type: 'settingModel/getTenantInfo', - }); - }, [dispatch]); - - useEffect(() => { - if (isOnMountFetching) { - fetchTenantInfo(); - } - }, [fetchTenantInfo, isOnMountFetching]); - - return fetchTenantInfo; + return { data, loading }; }; export const useSelectParserList = (): Array<{ value: string; label: string; }> => { - const tenantInfo: ITenantInfo = useSelectTenantInfo(); + const { data: tenantInfo } = useFetchTenantInfo(); const parserList = useMemo(() => { - const parserArray: Array = tenantInfo?.parser_ids.split(',') ?? []; + const parserArray: Array = tenantInfo?.parser_ids?.split(',') ?? []; return parserArray.map((x) => { const arr = x.split(':'); return { value: arr[0], label: arr[1] }; @@ -67,16 +73,27 @@ export const useSelectParserList = (): Array<{ }; export const useSaveSetting = () => { - const dispatch = useDispatch(); - - const saveSetting = useCallback( - (userInfo: { new_password: string } | Partial): number => { - return dispatch({ type: 'settingModel/setting', payload: userInfo }); + const queryClient = useQueryClient(); + const { t } = useTranslation(); + const { + data, + isPending: loading, + mutateAsync, + } = useMutation({ + mutationKey: ['saveSetting'], + mutationFn: async ( + userInfo: { new_password: string } | Partial, + ) => { + const { data } = await userService.setting(userInfo); + if (data.retcode === 0) { + message.success(t('message.modified')); + queryClient.invalidateQueries({ queryKey: ['userInfo'] }); + } + return data?.retcode; }, - [dispatch], - ); + }); - return saveSetting; + return { data, loading, saveSetting: mutateAsync }; }; export const useFetchSystemVersion = () => { diff --git a/web/src/layouts/components/right-toolbar/index.tsx b/web/src/layouts/components/right-toolbar/index.tsx index 6c0c06b5..e636dfa8 100644 --- a/web/src/layouts/components/right-toolbar/index.tsx +++ b/web/src/layouts/components/right-toolbar/index.tsx @@ -7,7 +7,7 @@ import User from '../user'; import { LanguageList } from '@/constants/common'; import { useChangeLanguage } from '@/hooks/logic-hooks'; -import { useSelector } from 'umi'; +import { useFetchUserInfo } from '@/hooks/user-setting-hooks'; import styled from './index.less'; const Circle = ({ children, ...restProps }: React.PropsWithChildren) => { @@ -25,9 +25,9 @@ const handleGithubCLick = () => { const RightToolBar = () => { const { t } = useTranslate('common'); const changeLanguage = useChangeLanguage(); - const { language = 'English' } = useSelector( - (state) => state.settingModel.userInfo, - ); + const { + data: { language = 'English' }, + } = useFetchUserInfo(); const handleItemClick: MenuProps['onClick'] = ({ key }) => { changeLanguage(key); diff --git a/web/src/layouts/components/user/index.tsx b/web/src/layouts/components/user/index.tsx index 3710b094..833c32d7 100644 --- a/web/src/layouts/components/user/index.tsx +++ b/web/src/layouts/components/user/index.tsx @@ -1,7 +1,4 @@ -import { - useFetchUserInfo, - useSelectUserInfo, -} from '@/hooks/user-setting-hooks'; +import { useFetchUserInfo } from '@/hooks/user-setting-hooks'; import { Avatar } from 'antd'; import React from 'react'; import { history } from 'umi'; @@ -9,14 +6,12 @@ import { history } from 'umi'; import styles from '../../index.less'; const App: React.FC = () => { - const userInfo = useSelectUserInfo(); + const { data: userInfo } = useFetchUserInfo(); const toSetting = () => { history.push('/user-setting'); }; - useFetchUserInfo(); - return ( { const fetchDocumentList = useFetchDocumentList(); const dispatch = useDispatch(); - useFetchTenantInfo(); - useEffect(() => { if (knowledgeId) { fetchDocumentList(); diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/hooks.ts b/web/src/pages/add-knowledge/components/knowledge-setting/hooks.ts index e78ecbab..ab46ddf3 100644 --- a/web/src/pages/add-knowledge/components/knowledge-setting/hooks.ts +++ b/web/src/pages/add-knowledge/components/knowledge-setting/hooks.ts @@ -4,10 +4,7 @@ import { } from '@/hooks/knowledge-hooks'; import { useSelectLlmOptions } from '@/hooks/llm-hooks'; import { useNavigateToDataset } from '@/hooks/route-hook'; -import { - useFetchTenantInfo, - useSelectParserList, -} from '@/hooks/user-setting-hooks'; +import { useSelectParserList } from '@/hooks/user-setting-hooks'; import { getBase64FromUploadFileList, getUploadFileListFromBase64, @@ -43,7 +40,6 @@ export const useFetchKnowledgeConfigurationOnMount = (form: FormInstance) => { const parserList = useSelectParserList(); const embeddingModelOptions = useSelectLlmOptions(); - useFetchTenantInfo(); const { data: knowledgeDetails } = useFetchKnowledgeBaseConfiguration(); useEffect(() => { diff --git a/web/src/pages/chat/chat-configuration-modal/index.tsx b/web/src/pages/chat/chat-configuration-modal/index.tsx index b5512e10..c895ce83 100644 --- a/web/src/pages/chat/chat-configuration-modal/index.tsx +++ b/web/src/pages/chat/chat-configuration-modal/index.tsx @@ -69,7 +69,7 @@ const ChatConfigurationModal = ({ ConfigurationSegmented.AssistantSetting, ); const promptEngineRef = useRef>([]); - const modelId = useFetchModelId(visible); + const modelId = useFetchModelId(); const { t } = useTranslate('chat'); const handleOk = async () => { diff --git a/web/src/pages/chat/chat-container/index.tsx b/web/src/pages/chat/chat-container/index.tsx index a54ecf26..72e410de 100644 --- a/web/src/pages/chat/chat-container/index.tsx +++ b/web/src/pages/chat/chat-container/index.tsx @@ -14,7 +14,7 @@ import { } from '../hooks'; import { buildMessageItemReference } from '../utils'; -import { useSelectUserInfo } from '@/hooks/user-setting-hooks'; +import { useFetchUserInfo } from '@/hooks/user-setting-hooks'; import styles from './index.less'; const ChatContainer = () => { @@ -43,7 +43,7 @@ const ChatContainer = () => { useGetFileIcon(); const loading = useSelectConversationLoading(); const { t } = useTranslate('chat'); - const userInfo = useSelectUserInfo(); + const { data: userInfo } = useFetchUserInfo(); return ( <> diff --git a/web/src/pages/flow/chat/box.tsx b/web/src/pages/flow/chat/box.tsx index 8edfbe02..6d072b9e 100644 --- a/web/src/pages/flow/chat/box.tsx +++ b/web/src/pages/flow/chat/box.tsx @@ -8,7 +8,7 @@ import { Button, Drawer, Flex, Input, Spin } from 'antd'; import { useSelectCurrentMessages, useSendMessage } from './hooks'; -import { useSelectUserInfo } from '@/hooks/user-setting-hooks'; +import { useFetchUserInfo } from '@/hooks/user-setting-hooks'; import styles from './index.less'; const FlowChatBox = () => { @@ -32,7 +32,7 @@ const FlowChatBox = () => { useClickDrawer(); useGetFileIcon(); const { t } = useTranslate('chat'); - const userInfo = useSelectUserInfo(); + const { data: userInfo } = useFetchUserInfo(); return ( <> diff --git a/web/src/pages/flow/hooks.ts b/web/src/pages/flow/hooks.ts index 9007a1cd..971f9a98 100644 --- a/web/src/pages/flow/hooks.ts +++ b/web/src/pages/flow/hooks.ts @@ -69,7 +69,7 @@ export const useSelectCanvasData = () => { }; export const useInitializeOperatorParams = () => { - const llmId = useFetchModelId(true); + const llmId = useFetchModelId(); const initialFormValuesMap = useMemo(() => { return { diff --git a/web/src/pages/knowledge/index.tsx b/web/src/pages/knowledge/index.tsx index f331b36b..64c1d6c7 100644 --- a/web/src/pages/knowledge/index.tsx +++ b/web/src/pages/knowledge/index.tsx @@ -1,5 +1,5 @@ import { useNextFetchKnowledgeList } from '@/hooks/knowledge-hooks'; -import { useSelectUserInfo } from '@/hooks/user-setting-hooks'; +import { useFetchUserInfo } from '@/hooks/user-setting-hooks'; import { PlusOutlined, SearchOutlined } from '@ant-design/icons'; import { Button, Empty, Flex, Input, Space, Spin } from 'antd'; import KnowledgeCard from './knowledge-card'; @@ -13,7 +13,7 @@ const KnowledgeList = () => { const { searchString, handleInputChange } = useSearchKnowledge(); const { loading, list: data } = useNextFetchKnowledgeList(); const list = data.filter((x) => x.name.includes(searchString)); - const userInfo = useSelectUserInfo(); + const { data: userInfo } = useFetchUserInfo(); const { t } = useTranslation('translation', { keyPrefix: 'knowledgeList' }); const { visible, diff --git a/web/src/pages/user-setting/hooks.ts b/web/src/pages/user-setting/hooks.ts index aa30baf4..0da2243c 100644 --- a/web/src/pages/user-setting/hooks.ts +++ b/web/src/pages/user-setting/hooks.ts @@ -1,4 +1,3 @@ -import { useOneNamespaceEffectsLoading } from '@/hooks/store-hooks'; import { Form } from 'antd'; import { useEffect, useState } from 'react'; @@ -18,9 +17,3 @@ export const useValidateSubmittable = () => { return { submittable, form }; }; - -export const useSelectSubmitUserInfoLoading = () => - useOneNamespaceEffectsLoading('settingModel', ['setting']); - -export const useSelectUserInfoLoading = () => - useOneNamespaceEffectsLoading('settingModel', ['getUserInfo']); diff --git a/web/src/pages/user-setting/model.ts b/web/src/pages/user-setting/model.ts deleted file mode 100644 index 27a83922..00000000 --- a/web/src/pages/user-setting/model.ts +++ /dev/null @@ -1,183 +0,0 @@ -import { LanguageTranslationMap } from '@/constants/common'; -import { ITenantInfo } from '@/interfaces/database/knowledge'; -import { - IFactory, - IMyLlmValue, - IThirdOAIModelCollection as IThirdAiModelCollection, -} from '@/interfaces/database/llm'; -import { IUserInfo } from '@/interfaces/database/userSetting'; -import i18n from '@/locales/config'; -import userService from '@/services/user-service'; -import { message } from 'antd'; -import { DvaModel } from 'umi'; - -export interface SettingModelState { - llm_factory: string; - tenantIfo: Nullable; - llmInfo: IThirdAiModelCollection; - myLlmList: Record; - factoryList: IFactory[]; - userInfo: IUserInfo; -} - -const model: DvaModel = { - namespace: 'settingModel', - state: { - llm_factory: '', - tenantIfo: null, - llmInfo: {}, - myLlmList: {}, - factoryList: [], - userInfo: {} as IUserInfo, - }, - reducers: { - updateState(state, { payload }) { - return { - ...state, - ...payload, - }; - }, - setUserInfo(state, { payload }) { - return { - ...state, - userInfo: payload, - }; - }, - }, - effects: { - *setting({ payload = {} }, { call, put }) { - const { data } = yield call(userService.setting, payload); - const { retcode } = data; - if (retcode === 0) { - message.success(i18n.t('message.modified')); - - yield put({ - type: 'getUserInfo', - }); - } - }, - *getUserInfo({ payload = {} }, { call, put }) { - const { data } = yield call(userService.user_info, payload); - const { retcode, data: res } = data; - - // const userInfo = { - // avatar: res.avatar, - // name: res.nickname, - // email: res.email, - // }; - // authorizationUtil.setUserInfo(userInfo); - if (retcode === 0) { - i18n.changeLanguage( - LanguageTranslationMap[ - res.language as keyof typeof LanguageTranslationMap - ], - ); - yield put({ type: 'setUserInfo', payload: res }); - // localStorage.setItem('userInfo',res.) - } - }, - *getTenantInfo({ payload = {} }, { call, put }) { - const { data } = yield call(userService.get_tenant_info, payload); - const { retcode, data: res } = data; - // llm_id 对应chat_id - // asr_id 对应speech2txt - - if (retcode === 0) { - res.chat_id = res.llm_id; - res.speech2text_id = res.asr_id; - yield put({ - type: 'updateState', - payload: { - tenantIfo: res, - }, - }); - } - }, - *set_tenant_info({ payload = {} }, { call, put }) { - const { data } = yield call(userService.set_tenant_info, payload); - const { retcode } = data; - if (retcode === 0) { - message.success(i18n.t('message.modified')); - - yield put({ - type: 'getTenantInfo', - }); - } - return retcode; - }, - - *factories_list({ payload = {} }, { call, put }) { - const { data } = yield call(userService.factories_list); - const { retcode, data: res } = data; - if (retcode === 0) { - yield put({ - type: 'updateState', - payload: { - factoryList: res, - }, - }); - } - }, - *llm_list({ payload = {} }, { call, put }) { - const { data } = yield call(userService.llm_list, payload); - const { retcode, data: res } = data; - if (retcode === 0) { - yield put({ - type: 'updateState', - payload: { - llmInfo: res, - }, - }); - } - }, - *my_llm({ payload = {} }, { call, put }) { - const { data } = yield call(userService.my_llm); - const { retcode, data: res } = data; - if (retcode === 0) { - yield put({ - type: 'updateState', - payload: { - myLlmList: res, - }, - }); - } - }, - *set_api_key({ payload = {} }, { call, put }) { - const { data } = yield call(userService.set_api_key, payload); - const { retcode } = data; - if (retcode === 0) { - message.success(i18n.t('message.modified')); - - yield put({ type: 'my_llm' }); - yield put({ type: 'factories_list' }); - yield put({ - type: 'updateState', - }); - } - return retcode; - }, - *add_llm({ payload = {} }, { call, put }) { - const { data } = yield call(userService.add_llm, payload); - const { retcode } = data; - if (retcode === 0) { - message.success(i18n.t('message.modified')); - - yield put({ type: 'my_llm' }); - yield put({ type: 'factories_list' }); - } - return retcode; - }, - *delete_llm({ payload = {} }, { call, put }) { - const { data } = yield call(userService.delete_llm, payload); - const { retcode } = data; - if (retcode === 0) { - message.success(i18n.t('message.deleted')); - - yield put({ type: 'my_llm' }); - yield put({ type: 'factories_list' }); - } - return retcode; - }, - }, -}; -export default model; diff --git a/web/src/pages/user-setting/setting-model/hooks.ts b/web/src/pages/user-setting/setting-model/hooks.ts index 440461c3..eb349712 100644 --- a/web/src/pages/user-setting/setting-model/hooks.ts +++ b/web/src/pages/user-setting/setting-model/hooks.ts @@ -8,12 +8,9 @@ import { useSaveTenantInfo, useSelectLlmOptionsByModelType, } from '@/hooks/llm-hooks'; -import { - useFetchTenantInfo, - useSelectTenantInfo, -} from '@/hooks/user-setting-hooks'; +import { useFetchTenantInfo } from '@/hooks/user-setting-hooks'; import { IAddLlmRequestBody } from '@/interfaces/request/llm'; -import { useCallback, useEffect, useState } from 'react'; +import { useCallback, useState } from 'react'; import { ApiKeyPostBody } from '../interface'; type SavingParamsState = Omit; @@ -63,7 +60,7 @@ export const useSubmitApiKey = () => { }; export const useSubmitSystemModelSetting = () => { - const systemSetting = useSelectTenantInfo(); + const { data: systemSetting } = useFetchTenantInfo(); const { saveTenantInfo: saveSystemModelSetting, loading } = useSaveTenantInfo(); const { @@ -98,16 +95,9 @@ export const useSubmitSystemModelSetting = () => { }; }; -export const useFetchSystemModelSettingOnMount = (visible: boolean) => { - const systemSetting = useSelectTenantInfo(); +export const useFetchSystemModelSettingOnMount = () => { + const { data: systemSetting } = useFetchTenantInfo(); const allOptions = useSelectLlmOptionsByModelType(); - const fetchTenantInfo = useFetchTenantInfo(); - - useEffect(() => { - if (visible) { - fetchTenantInfo(); - } - }, [fetchTenantInfo, visible]); return { systemSetting, allOptions }; }; diff --git a/web/src/pages/user-setting/setting-model/index.tsx b/web/src/pages/user-setting/setting-model/index.tsx index f93b7547..73e6e2e4 100644 --- a/web/src/pages/user-setting/setting-model/index.tsx +++ b/web/src/pages/user-setting/setting-model/index.tsx @@ -264,12 +264,14 @@ const UserSettingModel = () => { onOk={onApiKeySavingOk} llmFactory={llmFactory} > - + {systemSettingVisible && ( + + )} { const [form] = Form.useForm(); const { systemSetting: initialValues, allOptions } = - useFetchSystemModelSettingOnMount(visible); + useFetchSystemModelSettingOnMount(); const { t } = useTranslate('setting'); const handleOk = async () => { diff --git a/web/src/pages/user-setting/setting-password/index.tsx b/web/src/pages/user-setting/setting-password/index.tsx index cf7a4d64..6d7bbb2f 100644 --- a/web/src/pages/user-setting/setting-password/index.tsx +++ b/web/src/pages/user-setting/setting-password/index.tsx @@ -1,4 +1,3 @@ -import { useOneNamespaceEffectsLoading } from '@/hooks/store-hooks'; import { useSaveSetting } from '@/hooks/user-setting-hooks'; import { rsaPsw } from '@/utils'; import { Button, Divider, Form, Input, Space } from 'antd'; @@ -19,9 +18,8 @@ const tailLayout = { }; const UserSettingPassword = () => { - const loading = useOneNamespaceEffectsLoading('settingModel', ['setting']); const { form, submittable } = useValidateSubmittable(); - const saveSetting = useSaveSetting(); + const { saveSetting, loading } = useSaveSetting(); const { t } = useTranslate('setting'); const onFinish = (values: any) => { diff --git a/web/src/pages/user-setting/setting-profile/index.tsx b/web/src/pages/user-setting/setting-profile/index.tsx index dd6b45b2..adf36205 100644 --- a/web/src/pages/user-setting/setting-profile/index.tsx +++ b/web/src/pages/user-setting/setting-profile/index.tsx @@ -1,8 +1,4 @@ -import { - useFetchUserInfo, - useSaveSetting, - useSelectUserInfo, -} from '@/hooks/user-setting-hooks'; +import { useFetchUserInfo, useSaveSetting } from '@/hooks/user-setting-hooks'; import { getBase64FromUploadFileList, getUploadFileListFromBase64, @@ -24,11 +20,7 @@ import camelCase from 'lodash/camelCase'; import { useEffect } from 'react'; import SettingTitle from '../components/setting-title'; import { TimezoneList } from '../constants'; -import { - useSelectSubmitUserInfoLoading, - useSelectUserInfoLoading, - useValidateSubmittable, -} from '../hooks'; +import { useValidateSubmittable } from '../hooks'; import { LanguageList } from '@/constants/common'; import { useTranslate } from '@/hooks/common-hooks'; @@ -52,12 +44,9 @@ const tailLayout = { }; const UserSettingProfile = () => { - const userInfo = useSelectUserInfo(); - const saveSetting = useSaveSetting(); - const submitLoading = useSelectSubmitUserInfoLoading(); + const { data: userInfo, loading } = useFetchUserInfo(); + const { saveSetting, loading: submitLoading } = useSaveSetting(); const { form, submittable } = useValidateSubmittable(); - const loading = useSelectUserInfoLoading(); - useFetchUserInfo(); const { t } = useTranslate('setting'); const changeLanguage = useChangeLanguage(); diff --git a/web/src/pages/user-setting/setting-team/index.tsx b/web/src/pages/user-setting/setting-team/index.tsx index b2eb7a27..098f4bf6 100644 --- a/web/src/pages/user-setting/setting-team/index.tsx +++ b/web/src/pages/user-setting/setting-team/index.tsx @@ -1,11 +1,11 @@ import { Button, Card, Flex } from 'antd'; import { useTranslate } from '@/hooks/common-hooks'; -import { useSelectUserInfo } from '@/hooks/user-setting-hooks'; +import { useFetchUserInfo } from '@/hooks/user-setting-hooks'; import styles from './index.less'; const UserSettingTeam = () => { - const userInfo = useSelectUserInfo(); + const { data: userInfo } = useFetchUserInfo(); const { t } = useTranslate('setting'); return ( diff --git a/web/typings.d.ts b/web/typings.d.ts index 4577d251..57901b10 100644 --- a/web/typings.d.ts +++ b/web/typings.d.ts @@ -3,7 +3,6 @@ import { KFModelState } from '@/pages/add-knowledge/components/knowledge-file/mo import { TestingModelState } from '@/pages/add-knowledge/components/knowledge-testing/model'; import { kAModelState } from '@/pages/add-knowledge/model'; import { ChatModelState } from '@/pages/chat/model'; -import { SettingModelState } from '@/pages/user-setting/model'; declare module 'lodash'; @@ -14,7 +13,6 @@ function useSelector( export interface RootState { chatModel: ChatModelState; - settingModel: SettingModelState; kFModel: KFModelState; kAModel: kAModelState; chunkModel: ChunkModelState;