fix(editor): Fix bug causing node issues to not be assigned before first interaction (no-changelog) (#10980)

This commit is contained in:
Alex Grozav 2024-09-27 16:15:15 +03:00 committed by GitHub
parent 136d491325
commit 574cff16ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 22 additions and 39 deletions

View file

@ -33,6 +33,7 @@ async function createPiniaWithActiveNode() {
nodeTypesStore.setNodeTypes(defaultNodeDescriptions);
workflowsStore.workflow = workflow;
workflowsStore.nodeMetadata[node.name] = { pristine: true };
ndvStore.activeNodeName = node.name;
await useSettingsStore().getSettings();

View file

@ -373,7 +373,7 @@ export function useCanvasMapping({
subtitle: nodeSubtitleById.value[node.id] ?? '',
type: node.type,
typeVersion: node.typeVersion,
disabled: !!node.disabled,
disabled: node.disabled,
inputs: nodeInputsById.value[node.id] ?? [],
outputs: nodeOutputsById.value[node.id] ?? [],
connections: {

View file

@ -589,6 +589,12 @@ export function useCanvasOperations({ router }: { router: ReturnType<typeof useR
workflowsStore.addNode(nodeData);
workflowsStore.setNodePristine(nodeData.name, true);
nodeHelpers.updateNodeParameterIssues(nodeData);
nodeHelpers.updateNodeCredentialIssues(nodeData);
nodeHelpers.updateNodeInputIssues(nodeData);
if (!options.isAutoAdd) {
createConnectionToLastInteractedWithNode(nodeData, options);
}
@ -606,8 +612,6 @@ export function useCanvasOperations({ router }: { router: ReturnType<typeof useR
}
});
workflowsStore.setNodePristine(nodeData.name, true);
return nodeData;
}
@ -1145,8 +1149,10 @@ export function useCanvasOperations({ router }: { router: ReturnType<typeof useR
connection: mappedConnection,
});
nodeHelpers.updateNodeInputIssues(sourceNode);
nodeHelpers.updateNodeInputIssues(targetNode);
void nextTick(() => {
nodeHelpers.updateNodeInputIssues(sourceNode);
nodeHelpers.updateNodeInputIssues(targetNode);
});
uiStore.stateIsDirty = true;
}

View file

@ -989,15 +989,7 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => {
function updateNodeAtIndex(nodeIndex: number, nodeData: Partial<INodeUi>): void {
if (nodeIndex !== -1) {
const node = workflow.value.nodes[nodeIndex];
workflow.value = {
...workflow.value,
nodes: [
...workflow.value.nodes.slice(0, nodeIndex),
{ ...node, ...nodeData },
...workflow.value.nodes.slice(nodeIndex + 1),
],
};
Object.assign(workflow.value.nodes[nodeIndex], nodeData);
}
}
@ -1023,12 +1015,6 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => {
issues: remainingNodeIssues,
});
} else {
if (node.issues === undefined) {
updateNodeAtIndex(nodeIndex, {
issues: {},
});
}
updateNodeAtIndex(nodeIndex, {
issues: {
...node.issues,
@ -1053,7 +1039,7 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => {
workflow.value.nodes.push(nodeData);
// Init node metadata
if (!nodeMetadata.value[nodeData.name]) {
nodeMetadata.value = { ...nodeMetadata.value, [nodeData.name]: {} as INodeMetadata };
nodeMetadata.value[nodeData.name] = {} as INodeMetadata;
}
}
@ -1158,13 +1144,7 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => {
parameters: newParameters as INodeParameters,
});
nodeMetadata.value = {
...nodeMetadata.value,
[node.name]: {
...nodeMetadata.value[node.name],
parametersLastUpdatedAt: Date.now(),
},
} as NodeMetadataMap;
nodeMetadata.value[node.name].parametersLastUpdatedAt = Date.now();
}
function setLastNodeParameters(updateInformation: IUpdateInformation): void {
@ -1484,13 +1464,7 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => {
}
function setNodePristine(nodeName: string, isPristine: boolean): void {
nodeMetadata.value = {
...nodeMetadata.value,
[nodeName]: {
...nodeMetadata.value[nodeName],
pristine: isPristine,
},
};
nodeMetadata.value[nodeName].pristine = isPristine;
}
function resetChatMessages(): void {

View file

@ -319,12 +319,14 @@ async function initializeRoute() {
await initializeWorkspaceForExistingWorkflow(workflowId.value);
nodeHelpers.updateNodesInputIssues();
nodeHelpers.updateNodesCredentialsIssues();
nodeHelpers.updateNodesParameterIssues();
await loadCredentials();
await initializeDebugMode();
void nextTick(() => {
nodeHelpers.updateNodesInputIssues();
nodeHelpers.updateNodesCredentialsIssues();
nodeHelpers.updateNodesParameterIssues();
});
}
}