From 73261490021f0903281f55affca14d29ba58d63a Mon Sep 17 00:00:00 2001 From: arpandhakal Date: Fri, 5 Sep 2025 15:44:46 +0545 Subject: [PATCH] fix(OUT-2310): fixed javascript methods on undefined values like title and contents. Added some checks before proceeding with event handlers too --- src/app/client-preview/page.tsx | 2 +- src/app/components/EditorInterface.tsx | 2 +- src/components/autofillFields/AutofillFields.tsx | 2 +- .../tiptap/autofieldSelector/AutofillMenu.tsx | 9 +++++++++ .../autofieldSelector/autofillMenuSuggestion.ts | 5 ++++- src/components/tiptap/floatingMenu/FloatingMenu.tsx | 12 ++++++++++-- src/utils/customLabels.ts | 2 +- 7 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/app/client-preview/page.tsx b/src/app/client-preview/page.tsx index ca5387d8..e924a4e8 100644 --- a/src/app/client-preview/page.tsx +++ b/src/app/client-preview/page.tsx @@ -168,7 +168,7 @@ export default async function ClientPreviewPage({
diff --git a/src/app/components/EditorInterface.tsx b/src/app/components/EditorInterface.tsx index 9541990c..ed6ca96b 100644 --- a/src/app/components/EditorInterface.tsx +++ b/src/app/components/EditorInterface.tsx @@ -217,7 +217,7 @@ const EditorInterface = ({ if ( appState?.appState.originalTemplate?.replace(/\s/g, '') !== replaceCustomLabelsWithPlaceholders( - defaultState.replaceAll(' ', ''), + defaultState?.replaceAll(' ', ''), appState?.appState?.customLabels, ) || appState?.appState.bannerImgUrl !== defaultBannerImagePath || diff --git a/src/components/autofillFields/AutofillFields.tsx b/src/components/autofillFields/AutofillFields.tsx index 8d487fda..b3e199e2 100644 --- a/src/components/autofillFields/AutofillFields.tsx +++ b/src/components/autofillFields/AutofillFields.tsx @@ -113,7 +113,7 @@ const AutofillFields = () => { {/* edit mode */} {staticAutofillValues.map((el, key) => { - const labelText = el.replaceAll('{{', '').replaceAll('}}', '') + const labelText = el?.replaceAll('{{', '').replaceAll('}}', '') return ( { } const upHandler = () => { + if (props.items.length === 0) { + return + } setSelectedIndex( (selectedIndex + props.items.length - 1) % props.items.length, ) } const downHandler = () => { + if (props.items.length === 0) { + return + } setSelectedIndex((selectedIndex + 1) % props.items.length) } const enterHandler = () => { + if (props.items.length === 0) { + return + } selectItem(selectedIndex) } diff --git a/src/components/tiptap/autofieldSelector/autofillMenuSuggestion.ts b/src/components/tiptap/autofieldSelector/autofillMenuSuggestion.ts index 6640dd42..28728ad7 100644 --- a/src/components/tiptap/autofieldSelector/autofillMenuSuggestion.ts +++ b/src/components/tiptap/autofieldSelector/autofillMenuSuggestion.ts @@ -39,7 +39,10 @@ export const autofillMenuSuggestion = { .map((text) => prepareCustomLabel(text, appContextData?.customLabels)) .filter((item: any) => - item.toLowerCase().replaceAll('{{', '').startsWith(query.toLowerCase()), + item + .toLowerCase() + ?.replaceAll('{{', '') + .startsWith(query.toLowerCase()), ) .slice(0, 10) }, diff --git a/src/components/tiptap/floatingMenu/FloatingMenu.tsx b/src/components/tiptap/floatingMenu/FloatingMenu.tsx index 50aaf642..5ea2c64b 100644 --- a/src/components/tiptap/floatingMenu/FloatingMenu.tsx +++ b/src/components/tiptap/floatingMenu/FloatingMenu.tsx @@ -9,7 +9,6 @@ import { BulletListIcon, UploadIcon2, CalloutIcon, - LinkIcon, TableIcon, EmbedIcon, } from '@/icons' @@ -86,19 +85,28 @@ export const FloatingMenu = forwardRef((props: any, ref: any) => { } const upHandler = () => { + if (props.items.length === 0) { + return + } setSelectedIndex( (selectedIndex + props.items.length - 1) % props.items.length, ) } const downHandler = () => { + if (props.items.length === 0) { + return + } setSelectedIndex((selectedIndex + 1) % props.items.length) } const enterHandler = () => { + if (props.items.length === 0) { + return + } selectItem(selectedIndex) //handle link input here - if (props.items[0].title === 'Link') { + if (props.items[0]?.title === 'Link') { appState?.toggleShowLinkInput(true) } } diff --git a/src/utils/customLabels.ts b/src/utils/customLabels.ts index af9508d9..90596565 100644 --- a/src/utils/customLabels.ts +++ b/src/utils/customLabels.ts @@ -55,7 +55,7 @@ export const prepareCustomLabel = ( if (!opts?.isClientMode) { replacement = customLabels?.[key] || replacement } - result = result.replaceAll(placeholder, replacement.toLowerCase()) + result = result?.replaceAll(placeholder, replacement.toLowerCase()) } return result }