mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-29 18:52:19 +00:00
refactor: extract input widget resolution from SubgraphNode configure (#9383)
## Summary Extract the inner link-resolution loop from `_internalConfigureAfterSlots` into a private `_resolveInputWidget` method to reduce cognitive complexity below the sonarjs threshold of 15. ## Changes - **What**: Extract nested loop body (lines 654-689) into `_resolveInputWidget` private method in `SubgraphNode.ts` - Pure refactoring with no behavioral changes ## Review Focus Straightforward extract-method refactoring. The new method contains the exact same logic that was previously inline. Fixes #9297 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-9383-refactor-extract-input-widget-resolution-from-SubgraphNode-configure-3196d73d365081ba9124cfd0d312fcb0) by [Unito](https://www.unito.io)
This commit is contained in:
committed by
GitHub
parent
0b73285ca1
commit
c4dabb8f98
@@ -649,49 +649,52 @@ export class SubgraphNode extends LGraphNode implements BaseLGraph {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._addSubgraphInputListeners(subgraphInput, input)
|
this._addSubgraphInputListeners(subgraphInput, input)
|
||||||
|
this._resolveInputWidget(subgraphInput, input)
|
||||||
// Find the first widget that this slot is connected to
|
|
||||||
for (const linkId of subgraphInput.linkIds) {
|
|
||||||
const link = this.subgraph.getLink(linkId)
|
|
||||||
if (!link) {
|
|
||||||
console.warn(
|
|
||||||
`[SubgraphNode.configure] No link found for link ID ${linkId}`,
|
|
||||||
this
|
|
||||||
)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
const { inputNode } = link.resolve(this.subgraph)
|
|
||||||
if (!inputNode) {
|
|
||||||
console.warn('Failed to resolve inputNode', link, this)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
//Manually find input since target_slot can't be trusted
|
|
||||||
const targetInput = inputNode.inputs.find((inp) => inp.link === linkId)
|
|
||||||
if (!targetInput) {
|
|
||||||
console.warn('Failed to find corresponding input', link, inputNode)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// No widget - ignore this link
|
|
||||||
const widget = inputNode.getWidgetFromSlot(targetInput)
|
|
||||||
if (!widget) continue
|
|
||||||
|
|
||||||
this._setWidget(
|
|
||||||
subgraphInput,
|
|
||||||
input,
|
|
||||||
widget,
|
|
||||||
targetInput.widget,
|
|
||||||
inputNode
|
|
||||||
)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this._syncPromotions()
|
this._syncPromotions()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _resolveInputWidget(
|
||||||
|
subgraphInput: SubgraphInput,
|
||||||
|
input: INodeInputSlot
|
||||||
|
) {
|
||||||
|
for (const linkId of subgraphInput.linkIds) {
|
||||||
|
const link = this.subgraph.getLink(linkId)
|
||||||
|
if (!link) {
|
||||||
|
console.warn(
|
||||||
|
`[SubgraphNode.configure] No link found for link ID ${linkId}`,
|
||||||
|
this
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
const { inputNode } = link.resolve(this.subgraph)
|
||||||
|
if (!inputNode) {
|
||||||
|
console.warn('Failed to resolve inputNode', link, this)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
const targetInput = inputNode.inputs.find((inp) => inp.link === linkId)
|
||||||
|
if (!targetInput) {
|
||||||
|
console.warn('Failed to find corresponding input', link, inputNode)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
const widget = inputNode.getWidgetFromSlot(targetInput)
|
||||||
|
if (!widget) continue
|
||||||
|
|
||||||
|
this._setWidget(
|
||||||
|
subgraphInput,
|
||||||
|
input,
|
||||||
|
widget,
|
||||||
|
targetInput.widget,
|
||||||
|
inputNode
|
||||||
|
)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private _setWidget(
|
private _setWidget(
|
||||||
subgraphInput: Readonly<SubgraphInput>,
|
subgraphInput: Readonly<SubgraphInput>,
|
||||||
input: INodeInputSlot,
|
input: INodeInputSlot,
|
||||||
|
|||||||
Reference in New Issue
Block a user