From 46dc18c0ffd0b47681d3cdca0e4c9a22e4d4bdc8 Mon Sep 17 00:00:00 2001 From: Allan Saddi Date: Tue, 5 Nov 2024 19:25:55 -0800 Subject: [PATCH] Replace magic indices. --- js/yallm-node.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/js/yallm-node.js b/js/yallm-node.js index 48526ee..49f0572 100644 --- a/js/yallm-node.js +++ b/js/yallm-node.js @@ -5,19 +5,23 @@ app.registerExtension({ async beforeRegisterNodeDef(nodeType, nodeData, app) { if (nodeType.comfyClass==="LLMProvider") { nodeType.prototype.myRefreshModels = function (node, name) { - if (!name) name = node.widgets[0].value; + const provWidget = node.widgets.find((widget) => widget.name === "provider"); + const modelWidget = node.widgets.find((widget) => widget.name === "model"); + const fetchWidget = node.widgets.find((widget) => widget.name === "fetch models"); + + if (!name) name = provWidget.value; const myDisableWidgets = (state) => { - node.widgets[0].disabled = state; - node.widgets[1].disabled = state; + provWidget.disabled = state; + modelWidget.disabled = state; // Note: This is the "fetch models" button we add down below - node.widgets[2].disabled = state; + fetchWidget.disabled = state; }; myDisableWidgets(true); api.fetchApi(`/llm_models?name=${name}`).then((resp) => { resp.json().then((data) => { - let widget = node.widgets[1]; + let widget = modelWidget; widget.options.values = data; if (!widget.options.values.includes(widget.value) && widget.options.values.length > 0) { @@ -32,17 +36,19 @@ app.registerExtension({ }, async nodeCreated(node) { if (node?.comfyClass==="LLMProvider") { - let prov_widget = node.widgets[0]; + const provWidget = node.widgets.find((widget) => widget.name === "provider"); + const modelWidget = node.widgets.find((widget) => widget.name === "model"); + // Whenever provider changes value, fetch models - const original_callback = prov_widget.callback; - prov_widget.callback = function () { + const original_callback = provWidget.callback; + provWidget.callback = function () { let name = arguments?.[0]; node.myRefreshModels(node, name); return original_callback?.apply(this, arguments); } // Disable model combo widget until we fetch models - node.widgets[1].disabled = true; + modelWidget.disabled = true; // Add button to fetch models manually const btn = node.addWidget( @@ -58,7 +64,8 @@ app.registerExtension({ api.addEventListener("executed", function (event) { var node = app.graph.getNodeById(event.detail.node); if (node?.comfyClass==="LLMTextLatch") { - node.widgets[0].value = event.detail.output.text.join(""); + const textWidget = node.widgets.find((widget) => widget.name === "text"); + textWidget.value = event.detail.output.text.join(""); app.graph.setDirtyCanvas(true, false); } });