From f1332ef942e007988ee759818865b0d3d4b3ecd6 Mon Sep 17 00:00:00 2001 From: Rup Sarmah <84681565+sarmah-rup@users.noreply.github.com> Date: Tue, 29 Sep 2026 19:20:18 +0530 Subject: [PATCH] fix: trim whitespace from contact variable fallbacks --- .../server/utils/contact-variable-replacement.ts | 3 ++- .../contact-variable-replacement.unit.test.ts | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/web/src/server/utils/contact-variable-replacement.ts b/apps/web/src/server/utils/contact-variable-replacement.ts index 4f37dc894..5ae2384ab 100644 --- a/apps/web/src/server/utils/contact-variable-replacement.ts +++ b/apps/web/src/server/utils/contact-variable-replacement.ts @@ -114,7 +114,8 @@ export function replaceContactVariables( return contactValue; } - return fallback ?? ""; + // The regex lets whitespace before `}}` fall into the fallback capture + return fallback?.trim() ?? ""; }, ); } diff --git a/apps/web/src/server/utils/contact-variable-replacement.unit.test.ts b/apps/web/src/server/utils/contact-variable-replacement.unit.test.ts index 7a2d1bb70..f4a98d078 100644 --- a/apps/web/src/server/utils/contact-variable-replacement.unit.test.ts +++ b/apps/web/src/server/utils/contact-variable-replacement.unit.test.ts @@ -49,6 +49,21 @@ describe("replaceContactVariables", () => { ).toBe("Welcome, you!"); }); + it("does not keep whitespace padding in the fallback value", () => { + const contact = { + ...baseContact, + firstName: null, + } satisfies Contact; + + expect( + replaceContactVariables( + "Hi {{ firstName, fallback= there }}, welcome!", + contact, + [...BUILT_IN_CONTACT_VARIABLES], + ), + ).toBe("Hi there, welcome!"); + }); + it("uses fallback values for nullable built-in variables", () => { const contact = { ...baseContact,