diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index dae1f3fde..b48f6a3b2 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -325,6 +325,18 @@ function GenericNode({ [data.id, setNode, setEdges, updateNodeInternals], ); + useEffect(() => { + if ( + data?.selected_output || + (data?.node?.outputs?.filter((output) => !output.group_outputs)?.length ?? + 0) <= 1 + ) + return; + handleSelectOutput( + data.node?.outputs?.find((output) => output.selected) || null, + ); + }, [data.node?.outputs, data?.selected_output, handleSelectOutput]); + const [hasChangedNodeDescription, setHasChangedNodeDescription] = useState(false); diff --git a/src/frontend/src/stores/flowStore.ts b/src/frontend/src/stores/flowStore.ts index f52a437a6..839e39bb9 100644 --- a/src/frontend/src/stores/flowStore.ts +++ b/src/frontend/src/stores/flowStore.ts @@ -226,7 +226,7 @@ const useFlowStore = create((set, get) => ({ localStorage.getItem(`dismiss_${flow?.id}`) ?? "[]", ) as string[], }); - unselectAllNodesEdges(nodes, edges); + unselectAllNodesEdges(nodes, newEdges); if (flow?.id) { useTweaksStore.getState().initialSetup(nodes, flow?.id); } diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts index 63a1e6922..6fc3f3b4a 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -138,9 +138,18 @@ export function cleanEdges(nodes: AllNodeType[], edges: EdgeType[]) { const name = parsedSourceHandle.name; if (sourceNode.type == "genericNode") { - const output = sourceNode.data - .node!.outputs?.filter((output) => output.selected) - .find((output) => output.name === name); + const output = + sourceNode.data.node!.outputs?.find( + (output) => output.name === sourceNode.data.selected_output, + ) ?? + sourceNode.data.node!.outputs?.find( + (output) => + (output.selected || + (sourceNode.data.node!.outputs?.filter( + (output) => !output.group_outputs, + )?.length ?? 0) <= 1) && + output.name === name, + ); if (output) { const outputTypes =