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); nodeTypesStore.setNodeTypes(defaultNodeDescriptions);
workflowsStore.workflow = workflow; workflowsStore.workflow = workflow;
workflowsStore.nodeMetadata[node.name] = { pristine: true };
ndvStore.activeNodeName = node.name; ndvStore.activeNodeName = node.name;
await useSettingsStore().getSettings(); await useSettingsStore().getSettings();

View file

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

View file

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

View file

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

View file

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