Refactor Lora handling to improve data consistency and remove duplicates in widget value

This commit is contained in:
Will Miao
2025-03-03 05:55:53 +08:00
parent 1281ae29cb
commit 36aba4a2c7
2 changed files with 12 additions and 4 deletions

View File

@@ -4,7 +4,7 @@ import { addLorasWidget } from "./loras_widget.js";
// Extract pattern into a constant for consistent use
const LORA_PATTERN = /<lora:([^:]+):([-\d\.]+)>/g;
function mergeLoras(lorasText, lorasJson) {
function mergeLoras(lorasText, lorasArr) {
const result = [];
let match;
@@ -13,8 +13,8 @@ function mergeLoras(lorasText, lorasJson) {
const name = match[1];
const inputStrength = Number(match[2]);
// Find if this lora exists in the JSON data
const existingLora = lorasJson.find(l => l.name === name);
// Find if this lora exists in the array data
const existingLora = lorasArr.find(l => l.name === name);
result.push({
name: name,

View File

@@ -664,7 +664,15 @@ export function addLorasWidget(node, name, opts, callback) {
return widgetValue;
},
setValue: function(v) {
widgetValue = v || "";
// Remove duplicates by keeping the last occurrence of each lora name
const uniqueValue = (v || []).reduce((acc, lora) => {
// Remove any existing lora with the same name
const filtered = acc.filter(l => l.name !== lora.name);
// Add the current lora
return [...filtered, lora];
}, []);
widgetValue = uniqueValue;
renderLoras(widgetValue, widget);
// Update container height after rendering