Add Lora syntax send to comfyui functionality: implement API endpoint and frontend integration for sending and updating LoRA codes in ComfyUI nodes.

This commit is contained in:
Will Miao
2025-05-14 21:09:36 +08:00
parent 99b36442bb
commit 64a906ca5e
4 changed files with 186 additions and 5 deletions

View File

@@ -351,4 +351,66 @@ export function getNSFWLevelName(level) {
if (level >= 2) return 'PG13';
if (level >= 1) return 'PG';
return 'Unknown';
}
/**
* Sends LoRA syntax to the active ComfyUI workflow
* @param {string} loraSyntax - The LoRA syntax to send
* @param {boolean} replaceMode - Whether to replace existing LoRAs (true) or append (false)
* @returns {Promise<boolean>} - Whether the operation was successful
*/
export async function sendLoraToWorkflow(loraSyntax, replaceMode = false) {
try {
// Get the current workflow from localStorage
const workflowData = localStorage.getItem('workflow');
if (!workflowData) {
showToast('No active workflow found', 'error');
return false;
}
// Parse the workflow JSON
const workflow = JSON.parse(workflowData);
// Find all Lora Loader (LoraManager) nodes
const loraNodes = [];
if (workflow.nodes && Array.isArray(workflow.nodes)) {
for (const node of workflow.nodes) {
if (node.type === "Lora Loader (LoraManager)") {
loraNodes.push(node.id);
}
}
}
if (loraNodes.length === 0) {
showToast('No Lora Loader nodes found in the workflow', 'warning');
return false;
}
// Call the backend API to update the lora code
const response = await fetch('/api/update-lora-code', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
node_ids: loraNodes,
lora_code: loraSyntax,
mode: replaceMode ? 'replace' : 'append'
})
});
const result = await response.json();
if (result.success) {
showToast(`LoRA ${replaceMode ? 'replaced' : 'added'} to workflow`, 'success');
return true;
} else {
showToast(result.error || 'Failed to send LoRA to workflow', 'error');
return false;
}
} catch (error) {
console.error('Failed to send LoRA to workflow:', error);
showToast('Failed to send LoRA to workflow', 'error');
return false;
}
}