fix: workflow parallel limit in ifelse node (#8242)

This commit is contained in:
zxhlyh
2024-09-11 11:30:33 +08:00
committed by GitHub
parent 60913970dc
commit 91942e37ff
3 changed files with 20 additions and 10 deletions

View File

@@ -1,6 +1,7 @@
import {
memo,
useCallback,
useState,
} from 'react'
import { useTranslation } from 'react-i18next'
import {
@@ -10,6 +11,7 @@ import {
useAvailableBlocks,
useNodesInteractions,
useNodesReadOnly,
useWorkflow,
} from '@/app/components/workflow/hooks'
import BlockSelector from '@/app/components/workflow/block-selector'
import type {
@@ -30,9 +32,11 @@ const Add = ({
isParallel,
}: AddProps) => {
const { t } = useTranslation()
const [open, setOpen] = useState(false)
const { handleNodeAdd } = useNodesInteractions()
const { nodesReadOnly } = useNodesReadOnly()
const { availableNextBlocks } = useAvailableBlocks(nodeData.type, nodeData.isInIteration)
const { checkParallelLimit } = useWorkflow()
const handleSelect = useCallback<OnSelectBlock>((type, toolDefaultValue) => {
handleNodeAdd(
@@ -47,6 +51,13 @@ const Add = ({
)
}, [nodeId, sourceHandle, handleNodeAdd])
const handleOpenChange = useCallback((newOpen: boolean) => {
if (newOpen && !checkParallelLimit(nodeId, sourceHandle))
return
setOpen(newOpen)
}, [checkParallelLimit, nodeId, sourceHandle])
const renderTrigger = useCallback((open: boolean) => {
return (
<div
@@ -73,6 +84,8 @@ const Add = ({
return (
<BlockSelector
open={open}
onOpenChange={handleOpenChange}
disabled={nodesReadOnly}
onSelect={handleSelect}
placement='top'

View File

@@ -132,9 +132,9 @@ export const NodeSourceHandle = memo(({
}, [])
const handleHandleClick = useCallback((e: MouseEvent) => {
e.stopPropagation()
if (checkParallelLimit(id))
if (checkParallelLimit(id, handleId))
setOpen(v => !v)
}, [checkParallelLimit, id])
}, [checkParallelLimit, id, handleId])
const handleSelect = useCallback((type: BlockEnum, toolDefaultValue?: ToolDefaultValue) => {
handleNodeAdd(
{