2 Commits

Author SHA1 Message Date
0fb23cb425 0.0.27 2025-09-08 20:46:15 +02:00
45c5847f5a Fix duplicate field name issue in custom triggers
- Remove redundant field name prefixing in Workflow.ts
- Custom trigger fields from trigger-helpers already have unique names
- Simplify by passing through inputs without modification
- Fixes DuplicateFieldName error
2025-09-08 20:46:11 +02:00
3 changed files with 6 additions and 31 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@xtr-dev/payload-workflows",
"version": "0.0.26",
"version": "0.0.27",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@xtr-dev/payload-workflows",
"version": "0.0.26",
"version": "0.0.27",
"license": "MIT",
"dependencies": {
"jsonpath-plus": "^10.3.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@xtr-dev/payload-automation",
"version": "0.0.26",
"version": "0.0.27",
"description": "PayloadCMS Automation Plugin - Comprehensive workflow automation system with visual workflow building, execution tracking, and step types",
"license": "MIT",
"type": "module",

View File

@@ -296,34 +296,9 @@ export const createWorkflowCollection: <T extends string>(options: WorkflowsPlug
required: false
},
// Virtual fields for custom triggers
...(triggers || []).flatMap(t => (t.inputs || []).filter(f => 'name' in f && f.name).map(f => ({
...f,
// Prefix field name with trigger slug to avoid conflicts
name: `__${t.slug}_${(f as any).name}`,
admin: {
...(f.admin || {}),
condition: (...args) => args[1]?.type === t.slug && (
f.admin?.condition ?
f.admin.condition.call(this, ...args) :
true
),
},
hooks: {
afterRead: [
({ siblingData }) => {
return siblingData?.parameters?.[(f as any).name] || undefined
}
],
beforeChange: [
({ siblingData, value }) => {
if (!siblingData.parameters) {siblingData.parameters = {}}
siblingData.parameters[(f as any).name] = value
return undefined // Virtual field, don't store directly
}
]
},
virtual: true,
} as Field)))
// Note: Custom trigger fields from trigger-helpers already have unique names
// We just need to pass them through without modification
...(triggers || []).flatMap(t => (t.inputs || []))
]
},
{