fix: Fix issues with nodes missing in nodes panel (#5599)

* fix: Fix issues with nodes missing in nodes panel

* fix: fix logic for deteriming app category

* chore: add comment

* chore: remove sort
This commit is contained in:
Mutasem Aldmour 2023-03-02 18:27:56 +03:00 committed by GitHub
parent 4f5013ff53
commit 5040fea93e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 29 deletions

View file

@ -262,9 +262,9 @@ function transformCreateElements(
}); });
return sorted.map((nodeType) => { return sorted.map((nodeType) => {
// N8n node is a special case since it's the only core node that is both trigger and regular const hasTriggerActions = nodeType.actions?.find((action) => action.name.includes('trigger'));
// if we have more cases like this we should add more robust logic const hasRgeularActions = nodeType.actions?.find((action) => !action.name.includes('trigger'));
const isN8nNode = nodeType.name.includes(N8N_NODE_TYPE);
return { return {
type, type,
category: nodeType.codex?.categories, category: nodeType.codex?.categories,
@ -273,8 +273,8 @@ function transformCreateElements(
nodeType, nodeType,
subcategory: state.activeNodeActions?.displayName ?? '', subcategory: state.activeNodeActions?.displayName ?? '',
}, },
includedByTrigger: isN8nNode || nodeType.group.includes('trigger'), includedByTrigger: hasTriggerActions || nodeType.group.includes('trigger'),
includedByRegular: isN8nNode || !nodeType.group.includes('trigger'), includedByRegular: hasRgeularActions || !nodeType.group.includes('trigger'),
} as INodeCreateElement; } as INodeCreateElement;
}); });
} }

View file

@ -105,7 +105,10 @@ const displayName = computed<any>(() => {
return instance?.proxy.$locale.headerText({ return instance?.proxy.$locale.headerText({
key: `headers.${shortNodeType}.displayName`, key: `headers.${shortNodeType}.displayName`,
fallback: props.allowActions ? displayName.replace('Trigger', '') : displayName, fallback:
props.allowActions && props.nodeType.actions?.length
? displayName.replace('Trigger', '')
: displayName,
}); });
}); });

View file

@ -308,31 +308,32 @@ export const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, {
return nodesWithActions; return nodesWithActions;
}, },
mergedAppNodes(): INodeTypeDescription[] { mergedAppNodes(): INodeTypeDescription[] {
const mergedNodes = [...this.visibleNodesWithActions] const triggers = this.visibleNodesWithActions.filter((node) =>
// Sort triggers so they are always on top and when later get merged node.group.includes('trigger'),
// they won't be discarded if they have the same name as a core node which doesn't contain actions );
.sort((a, b) => { const apps = this.visibleNodesWithActions
if (a.group.includes('trigger')) return -1; .filter((node) => !node.group.includes('trigger'))
if (b.group.includes('trigger')) return 1; .map((node) => {
const newNode = deepCopy(node);
return 0; newNode.actions = newNode.actions || [];
}) return newNode;
.reduce((acc: Record<string, INodeTypeDescription>, node: INodeTypeDescription) => { });
const clonedNode = deepCopy(node);
const actions = node.actions || [];
triggers.forEach((node) => {
const normalizedName = node.name.toLowerCase().replace('trigger', ''); const normalizedName = node.name.toLowerCase().replace('trigger', '');
const existingNode = acc[normalizedName]; const app = apps.find((node) => node.name.toLowerCase() === normalizedName);
const newNode = deepCopy(node);
if (app && app.actions?.length) {
// merge triggers into regular nodes that match
app?.actions?.push(...(newNode.actions || []));
app.description = newNode.description; // default to trigger description
} else {
newNode.actions = newNode.actions || [];
apps.push(newNode);
}
});
if (existingNode) existingNode.actions?.push(...actions); const filteredNodes = apps.map((node) => ({
else acc[normalizedName] = clonedNode;
acc[normalizedName].displayName = node.displayName.replace('Trigger', '');
return acc;
}, {});
const filteredNodes = Object.values(mergedNodes).map((node) => ({
...node, ...node,
actions: filterActions(node.actions || []), actions: filterActions(node.actions || []),
})); }));