[Bug] Fix broken variables for database event (#17526)

Fix https://github.com/twentyhq/twenty/issues/17524

Recent update meant to support variable with spaces and dots broken the
database event variables. Inserting a variable `My Name` will be
inserted as `{{trigger.[My Name]}}`

For example, for a database event, we send `trigger.properties.after.id`
instead of `id`.
With the new code, we will consider `properties.after.id` as a variable
to wrap in `[]`, giving `trigger.[properties.after.id]` which cannot be
resolve.

Let's only support variable with spaces. Removing the logic to wrap
variable with dots.
This commit is contained in:
Thomas Trompette
2026-01-28 18:05:59 +01:00
committed by GitHub
parent 3e9dda6761
commit 9672ca09a2
3 changed files with 2 additions and 25 deletions
@@ -176,7 +176,7 @@ export const WorkflowDropdownStepOutputItems = ({
updateStepFilter({
rawVariableName: getVariableTemplateFromPath({
stepId: step.id,
path: [...currentPath, 'id'],
path: [...currentPath, currentSubStep.object.fieldIdName ?? 'id'],
}),
isFullRecord: true,
});
@@ -12,10 +12,6 @@ describe('variable path utility functions', () => {
expect(needsEscaping('toto toto')).toBe(true);
});
it('should return true for keys with dots', () => {
expect(needsEscaping('key.with.dots')).toBe(true);
});
it('should return true for keys with brackets', () => {
expect(needsEscaping('key[0]')).toBe(true);
expect(needsEscaping('[key]')).toBe(true);
@@ -33,10 +29,6 @@ describe('variable path utility functions', () => {
expect(escapePathSegment('key with space')).toBe('[key with space]');
});
it('should wrap keys with dots in brackets', () => {
expect(escapePathSegment('key.with.dots')).toBe('[key.with.dots]');
});
it('should not modify simple keys', () => {
expect(escapePathSegment('simpleKey')).toBe('simpleKey');
});
@@ -55,12 +47,6 @@ describe('variable path utility functions', () => {
);
});
it('should escape segments with dots', () => {
expect(joinVariablePath(['step', 'key.with.dots'])).toBe(
'step.[key.with.dots]',
);
});
it('should handle mixed simple and special segments', () => {
expect(
joinVariablePath(['step', 'normal', 'has space', 'another']),
@@ -94,13 +80,6 @@ describe('variable path utility functions', () => {
]);
});
it('should parse path with bracketed segments containing dots', () => {
expect(parseVariablePath('step.[key.with.dots]')).toEqual([
'step',
'key.with.dots',
]);
});
it('should handle multiple bracketed segments', () => {
expect(
parseVariablePath('[first key].[second key].[third key]'),
@@ -131,7 +110,6 @@ describe('variable path utility functions', () => {
const paths = [
['step', 'field', 'value'],
['step', 'key with space', 'value'],
['step', 'key.with.dots'],
['step', 'normal', 'has space', 'another'],
];
@@ -1,6 +1,5 @@
// Characters that require bracket escaping in variable paths
// Spaces, dots, and brackets would break the dot-notation parsing
const SPECIAL_CHARS_REGEX = /[\s.[]/;
const SPECIAL_CHARS_REGEX = /[\s[]/;
export const needsEscaping = (key: string): boolean =>
SPECIAL_CHARS_REGEX.test(key);