fix: make not connected edges be cleared when entering flow (#8678)

* Fixed output not cleaning edges

* Added useEffect to select first output if none is selected

* updated useeffect condition

* Fixed edges connected being cleared

* added handleSelectOutput to dependencies

* Fixed loop disconnecting
This commit is contained in:
Lucas Oliveira 2025-06-26 10:18:32 -03:00 committed by GitHub
commit 866076cf06
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 25 additions and 4 deletions

View file

@ -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);

View file

@ -226,7 +226,7 @@ const useFlowStore = create<FlowStoreType>((set, get) => ({
localStorage.getItem(`dismiss_${flow?.id}`) ?? "[]",
) as string[],
});
unselectAllNodesEdges(nodes, edges);
unselectAllNodesEdges(nodes, newEdges);
if (flow?.id) {
useTweaksStore.getState().initialSetup(nodes, flow?.id);
}

View file

@ -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 =