diff --git a/packages/service/core/workflow/dispatch/index.ts b/packages/service/core/workflow/dispatch/index.ts index 97484f834..f88ab31e4 100644 --- a/packages/service/core/workflow/dispatch/index.ts +++ b/packages/service/core/workflow/dispatch/index.ts @@ -776,14 +776,6 @@ export async function dispatchWorkFlow(data: Props): Promise item.flowNodeType === FlowNodeTypeEnum.pluginOutput - ); - if (pluginOutputModule && data.mode !== 'debug') { - workflowQueue.nodeRunWithActive(pluginOutputModule); - } - // Get interactive node response. const interactiveResult = (() => { if (workflowQueue.nodeInteractiveResponse) { diff --git a/packages/service/core/workflow/dispatch/plugin/runOutput.ts b/packages/service/core/workflow/dispatch/plugin/runOutput.ts index c67c8c6d9..08cf7abf5 100644 --- a/packages/service/core/workflow/dispatch/plugin/runOutput.ts +++ b/packages/service/core/workflow/dispatch/plugin/runOutput.ts @@ -12,7 +12,6 @@ export const dispatchPluginOutput = (props: PluginOutputProps): PluginOutputResp return { [DispatchNodeResponseKeyEnum.nodeResponse]: { - totalPoints: 0, pluginOutput: params } }; diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx index 78a2d5209..edde65182 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx @@ -24,9 +24,11 @@ const NodeTemplatesModal = ({ isOpen, onClose }: ModuleTemplateListProps) => { const { templateType, parentId, + searchKey, + setSearchKey, templatesIsLoading, templates, - loadNodeTemplates, + onUpdateTemplateType, onUpdateParentId } = useNodeTemplates(); @@ -79,8 +81,10 @@ const NodeTemplatesModal = ({ isOpen, onClose }: ModuleTemplateListProps) => { { const { templateType, parentId, + searchKey, + setSearchKey, templatesIsLoading, templates, - loadNodeTemplates, + onUpdateTemplateType, onUpdateParentId } = useNodeTemplates(); @@ -116,9 +118,11 @@ const NodeTemplatesPopover = () => { void; isPopover?: boolean; templateType: TemplateTypeEnum; - parentId: string; - loadNodeTemplates: (params: { - parentId?: string; - type?: TemplateTypeEnum; - searchVal?: string; - }) => Promise; + parentId: ParentIdType; + searchKey: string; + setSearchKey: Dispatch>; + onUpdateTemplateType: (type: TemplateTypeEnum) => void; onUpdateParentId: (parentId: string) => void; }; @@ -35,33 +34,15 @@ const NodeTemplateListHeader = ({ isPopover = false, templateType, parentId, - loadNodeTemplates, + searchKey, + setSearchKey, + onUpdateTemplateType, onUpdateParentId }: NodeTemplateListHeaderProps) => { const { t } = useTranslation(); const { feConfigs } = useSystemStore(); const router = useRouter(); - const [searchKey, setSearchKey] = useState(''); - - useEffect(() => { - setSearchKey(''); - }, [templateType]); - - useDebounceEffect( - () => { - loadNodeTemplates({ - type: templateType, - parentId: '', - searchVal: searchKey - }); - }, - [searchKey, loadNodeTemplates, templateType], - { - wait: 300 - } - ); - // Get paths const { data: paths = [] } = useRequest2( () => { @@ -80,7 +61,7 @@ const NodeTemplateListHeader = ({ {/* Tabs */} - list={[ { icon: 'core/modules/basicNode', @@ -109,10 +90,7 @@ const NodeTemplateListHeader = ({ : {})} value={templateType} onChange={(e) => { - loadNodeTemplates({ - type: e as TemplateTypeEnum, - parentId: '' - }); + onUpdateTemplateType(e); }} /> diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/useNodeTemplates.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/useNodeTemplates.tsx index 2e661890f..b479eef18 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/useNodeTemplates.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/useNodeTemplates.tsx @@ -1,4 +1,4 @@ -import { useState, useMemo, useCallback } from 'react'; +import { useState, useMemo, useCallback, useRef } from 'react'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import type { NodeTemplateListItemType } from '@fastgpt/global/core/workflow/type/node'; @@ -8,10 +8,15 @@ import { TemplateTypeEnum } from './header'; import { useContextSelector } from 'use-context-selector'; import { WorkflowContext } from '../../../context'; import type { ParentIdType } from '@fastgpt/global/common/parentFolder/type'; +import { useDebounceEffect } from 'ahooks'; export const useNodeTemplates = () => { const { feConfigs } = useSystemStore(); const [templateType, setTemplateType] = useState(TemplateTypeEnum.basic); + + const [searchKey, setSearchKey] = useState(''); + const searchKeyLock = useRef(false); + const [parentId, setParentId] = useState(''); const basicNodeTemplates = useContextSelector(WorkflowContext, (v) => v.basicNodeTemplates); @@ -72,9 +77,9 @@ export const useNodeTemplates = () => { runAsync: loadNodeTemplates } = useRequest2( async ({ - parentId = '', + parentId, type = templateType, - searchVal = '' + searchVal }: { parentId?: ParentIdType; type?: TemplateTypeEnum; @@ -96,23 +101,40 @@ export const useNodeTemplates = () => { } }, { - onSuccess(res, [{ parentId = '', type = templateType }]) { - setParentId(parentId); - setTemplateType(type); - }, - refreshDeps: [templateType] + onSuccess() { + searchKeyLock.current = false; + } } ); - const onUpdateParentId = useCallback( - (parentId: ParentIdType) => { - loadNodeTemplates({ - parentId - }); + useDebounceEffect( + () => { + if (searchKeyLock.current) { + return; + } + + loadNodeTemplates({ parentId, searchVal: searchKey }); }, - [loadNodeTemplates] + [searchKey], + { + wait: 300 + } ); + const onUpdateParentId = useCallback((parentId: ParentIdType) => { + searchKeyLock.current = true; + setSearchKey(''); + setParentId(parentId); + loadNodeTemplates({ parentId }); + }, []); + const onUpdateTemplateType = useCallback((type: TemplateTypeEnum) => { + searchKeyLock.current = true; + setSearchKey(''); + setParentId(''); + setTemplateType(type); + loadNodeTemplates({ type }); + }, []); + const templates = useMemo(() => { if (templateType === TemplateTypeEnum.basic) { return basicNodes || []; @@ -125,7 +147,9 @@ export const useNodeTemplates = () => { parentId, templatesIsLoading, templates, - loadNodeTemplates, - onUpdateParentId + onUpdateParentId, + onUpdateTemplateType, + searchKey, + setSearchKey }; }; diff --git a/projects/app/src/pageComponents/dashboard/apps/List.tsx b/projects/app/src/pageComponents/dashboard/apps/List.tsx index 767098b8d..43b9cc323 100644 --- a/projects/app/src/pageComponents/dashboard/apps/List.tsx +++ b/projects/app/src/pageComponents/dashboard/apps/List.tsx @@ -52,10 +52,8 @@ const ListItem = () => { content: t('app:move.hint') }); - const { myApps, loadMyApps, onUpdateApp, setMoveAppId, folderDetail } = useContextSelector( - AppListContext, - (v) => v - ); + const { myApps, loadMyApps, onUpdateApp, setMoveAppId, folderDetail, setSearchKey } = + useContextSelector(AppListContext, (v) => v); const [editedApp, setEditedApp] = useState(); const [editHttpPlugin, setEditHttpPlugin] = useState(); @@ -185,6 +183,7 @@ const ListItem = () => { }} onClick={() => { if (AppFolderTypeList.includes(app.type)) { + setSearchKey(''); router.push({ query: { ...router.query, diff --git a/projects/app/src/pages/api/core/app/plugin/getSystemPluginTemplates.ts b/projects/app/src/pages/api/core/app/plugin/getSystemPluginTemplates.ts index ae894bc7d..d8934123e 100644 --- a/projects/app/src/pages/api/core/app/plugin/getSystemPluginTemplates.ts +++ b/projects/app/src/pages/api/core/app/plugin/getSystemPluginTemplates.ts @@ -41,7 +41,6 @@ async function handler( })) .filter((item) => { if (searchKey) { - if (item.isFolder) return false; const regx = new RegExp(`${replaceRegChars(searchKey)}`, 'i'); return regx.test(String(item.name)) || regx.test(String(item.intro || '')); } diff --git a/projects/app/src/pages/dashboard/apps/index.tsx b/projects/app/src/pages/dashboard/apps/index.tsx index 04e1023d7..3079ed7df 100644 --- a/projects/app/src/pages/dashboard/apps/index.tsx +++ b/projects/app/src/pages/dashboard/apps/index.tsx @@ -56,7 +56,8 @@ const MyApps = ({ MenuIcon }: { MenuIcon: JSX.Element }) => { isFetchingApps, folderDetail, refetchFolderDetail, - setSearchKey + setSearchKey, + searchKey } = useContextSelector(AppListContext, (v) => v); const { userInfo } = useUserStore(); @@ -164,6 +165,7 @@ const MyApps = ({ MenuIcon }: { MenuIcon: JSX.Element }) => { {isPc && ( setSearchKey(e.target.value)} placeholder={t('app:search_app')} maxLength={30} @@ -244,6 +246,7 @@ const MyApps = ({ MenuIcon }: { MenuIcon: JSX.Element }) => { { setSearchKey(e.target.value)} placeholder={t('app:search_app')} maxLength={30}