@capillarytech/creatives-library 8.0.242-alpha.1 → 8.0.242-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/Android.png +0 -0
- package/assets/iOS.png +0 -0
- package/config/app.js +1 -1
- package/constants/unified.js +2 -2
- package/initialReducer.js +0 -2
- package/package.json +1 -1
- package/services/api.js +5 -10
- package/services/tests/api.test.js +0 -18
- package/translations/en.json +4 -3
- package/utils/common.js +6 -5
- package/utils/commonUtils.js +1 -14
- package/utils/imageUrlUpload.js +141 -0
- package/utils/tests/commonUtil.test.js +0 -224
- package/utils/transformTemplateConfig.js +10 -0
- package/v2Components/CapDeviceContent/index.js +56 -61
- package/v2Components/CapImageUpload/constants.js +2 -0
- package/v2Components/CapImageUpload/index.js +65 -16
- package/v2Components/CapImageUpload/index.scss +4 -1
- package/v2Components/CapImageUpload/messages.js +5 -1
- package/v2Components/CapImageUrlUpload/constants.js +26 -0
- package/v2Components/CapImageUrlUpload/index.js +365 -0
- package/v2Components/CapImageUrlUpload/index.scss +35 -0
- package/v2Components/CapImageUrlUpload/messages.js +47 -0
- package/v2Components/CapTagList/index.js +1 -6
- package/v2Components/CapTagListWithInput/index.js +1 -5
- package/v2Components/CapTagListWithInput/messages.js +1 -1
- package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
- package/v2Components/ErrorInfoNote/index.js +72 -412
- package/v2Components/ErrorInfoNote/messages.js +0 -22
- package/v2Components/ErrorInfoNote/style.scss +2 -279
- package/v2Components/HtmlEditor/HTMLEditor.js +89 -210
- package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1132
- package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +12 -17
- package/v2Components/HtmlEditor/_htmlEditor.scss +23 -8
- package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
- package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -13
- package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +139 -148
- package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
- package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
- package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
- package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -1
- package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
- package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
- package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
- package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
- package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
- package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
- package/v2Components/HtmlEditor/components/PreviewPane/index.js +11 -10
- package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +62 -87
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
- package/v2Components/HtmlEditor/constants.js +20 -29
- package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
- package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
- package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
- package/v2Components/HtmlEditor/index.js +1 -1
- package/v2Components/HtmlEditor/messages.js +85 -95
- package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +101 -99
- package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
- package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -34
- package/v2Components/MobilePushPreviewV2/index.js +7 -32
- package/v2Components/TemplatePreview/_templatePreview.scss +24 -44
- package/v2Components/TemplatePreview/index.js +32 -47
- package/v2Components/TemplatePreview/messages.js +0 -4
- package/v2Components/TestAndPreviewSlidebox/index.js +25 -31
- package/v2Containers/App/constants.js +5 -0
- package/v2Containers/BeeEditor/index.js +80 -82
- package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +4 -3
- package/v2Containers/CreativesContainer/SlideBoxContent.js +118 -148
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +3 -9
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -2
- package/v2Containers/CreativesContainer/constants.js +2 -1
- package/v2Containers/CreativesContainer/index.js +41 -173
- package/v2Containers/CreativesContainer/messages.js +4 -4
- package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +210 -0
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +354 -38
- package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -36
- package/v2Containers/Email/actions.js +0 -7
- package/v2Containers/Email/constants.js +1 -5
- package/v2Containers/Email/index.js +0 -13
- package/v2Containers/Email/messages.js +0 -32
- package/v2Containers/Email/reducer.js +1 -12
- package/v2Containers/Email/sagas.js +6 -41
- package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
- package/v2Containers/EmailWrapper/components/EmailWrapperView.js +7 -193
- package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
- package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
- package/v2Containers/EmailWrapper/constants.js +0 -2
- package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +67 -436
- package/v2Containers/EmailWrapper/index.js +23 -99
- package/v2Containers/EmailWrapper/messages.js +1 -61
- package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +1 -26
- package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -111
- package/v2Containers/InApp/actions.js +0 -7
- package/v2Containers/InApp/constants.js +4 -20
- package/v2Containers/InApp/index.js +357 -800
- package/v2Containers/InApp/index.scss +3 -4
- package/v2Containers/InApp/messages.js +3 -7
- package/v2Containers/InApp/reducer.js +3 -21
- package/v2Containers/InApp/sagas.js +9 -29
- package/v2Containers/InApp/selectors.js +5 -25
- package/v2Containers/InApp/tests/index.test.js +50 -154
- package/v2Containers/InApp/tests/reducer.test.js +0 -34
- package/v2Containers/InApp/tests/sagas.test.js +9 -61
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +12 -12
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +8 -8
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +100 -77
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +72 -63
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +184 -150
- package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +16 -12
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +32 -28
- package/v2Containers/TagList/index.js +1 -67
- package/v2Containers/Templates/ChannelTypeIllustration.js +13 -1
- package/v2Containers/Templates/_templates.scss +202 -56
- package/v2Containers/Templates/actions.js +2 -1
- package/v2Containers/Templates/constants.js +1 -0
- package/v2Containers/Templates/index.js +278 -128
- package/v2Containers/Templates/messages.js +24 -4
- package/v2Containers/Templates/reducer.js +2 -0
- package/v2Containers/Templates/tests/index.test.js +10 -0
- package/v2Containers/TemplatesV2/index.js +8 -1
- package/v2Containers/TemplatesV2/messages.js +4 -0
- package/v2Containers/WebPush/Create/components/BrandIconSection.js +108 -0
- package/v2Containers/WebPush/Create/components/ButtonForm.js +172 -0
- package/v2Containers/WebPush/Create/components/ButtonItem.js +101 -0
- package/v2Containers/WebPush/Create/components/ButtonList.js +145 -0
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +164 -0
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +463 -0
- package/v2Containers/WebPush/Create/components/FormActions.js +54 -0
- package/v2Containers/WebPush/Create/components/FormActions.test.js +163 -0
- package/v2Containers/WebPush/Create/components/MediaSection.js +142 -0
- package/v2Containers/WebPush/Create/components/MediaSection.test.js +341 -0
- package/v2Containers/WebPush/Create/components/MessageSection.js +103 -0
- package/v2Containers/WebPush/Create/components/MessageSection.test.js +268 -0
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +87 -0
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +210 -0
- package/v2Containers/WebPush/Create/components/TemplateNameSection.js +54 -0
- package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +143 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +86 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +16 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +41 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +54 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +37 -0
- package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +21 -0
- package/v2Containers/WebPush/Create/components/_buttons.scss +246 -0
- package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +554 -0
- package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +607 -0
- package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +633 -0
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +666 -0
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +74 -0
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +78 -0
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +138 -0
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +406 -0
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +30 -0
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +151 -0
- package/v2Containers/WebPush/Create/hooks/useImageUpload.js +104 -0
- package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +538 -0
- package/v2Containers/WebPush/Create/hooks/useTagManagement.js +122 -0
- package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +633 -0
- package/v2Containers/WebPush/Create/index.js +1056 -0
- package/v2Containers/WebPush/Create/index.scss +134 -0
- package/v2Containers/WebPush/Create/messages.js +203 -0
- package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +228 -0
- package/v2Containers/WebPush/Create/preview/NotificationContainer.js +294 -0
- package/v2Containers/WebPush/Create/preview/PreviewContent.js +90 -0
- package/v2Containers/WebPush/Create/preview/PreviewControls.js +305 -0
- package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +23 -0
- package/v2Containers/WebPush/Create/preview/WebPushPreview.js +150 -0
- package/v2Containers/WebPush/Create/preview/assets/Light.svg +53 -0
- package/v2Containers/WebPush/Create/preview/assets/Top.svg +5 -0
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +106 -0
- package/v2Containers/WebPush/Create/preview/assets/iOS.svg +26 -0
- package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +18 -0
- package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +29 -0
- package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +9 -0
- package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +9 -0
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +47 -0
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +141 -0
- package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +45 -0
- package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +68 -0
- package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +61 -0
- package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +99 -0
- package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +733 -0
- package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +571 -0
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +81 -0
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +81 -0
- package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +50 -0
- package/v2Containers/WebPush/Create/preview/constants.js +637 -0
- package/v2Containers/WebPush/Create/preview/notification-container.scss +79 -0
- package/v2Containers/WebPush/Create/preview/preview.scss +351 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +370 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +12 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +12 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +12 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +47 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +11 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +11 -0
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +11 -0
- package/v2Containers/WebPush/Create/preview/styles/_base.scss +207 -0
- package/v2Containers/WebPush/Create/preview/styles/_ios.scss +153 -0
- package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +107 -0
- package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +101 -0
- package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +229 -0
- package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +909 -0
- package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +1081 -0
- package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +723 -0
- package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +943 -0
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +131 -0
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +112 -0
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +144 -0
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +129 -0
- package/v2Containers/WebPush/Create/utils/payloadBuilder.js +94 -0
- package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +390 -0
- package/v2Containers/WebPush/Create/utils/previewUtils.js +89 -0
- package/v2Containers/WebPush/Create/utils/urlValidation.js +115 -0
- package/v2Containers/WebPush/Create/utils/urlValidation.test.js +449 -0
- package/v2Containers/WebPush/Create/utils/validation.js +75 -0
- package/v2Containers/WebPush/Create/utils/validation.test.js +283 -0
- package/v2Containers/WebPush/actions.js +60 -0
- package/v2Containers/WebPush/constants.js +128 -0
- package/v2Containers/WebPush/index.js +2 -0
- package/v2Containers/WebPush/reducer.js +104 -0
- package/v2Containers/WebPush/sagas.js +119 -0
- package/v2Containers/WebPush/selectors.js +65 -0
- package/v2Containers/WebPush/tests/reducer.test.js +863 -0
- package/v2Containers/WebPush/tests/sagas.test.js +566 -0
- package/v2Containers/WebPush/tests/selectors.test.js +843 -0
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +528 -431
- package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
- package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -362
- package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
- package/v2Containers/BeePopupEditor/constants.js +0 -10
- package/v2Containers/BeePopupEditor/index.js +0 -193
- package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
- package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1045
- package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
- package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
- package/v2Containers/InApp/tests/selectors.test.js +0 -612
- package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -162
- package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
- package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -9
- package/v2Containers/InAppWrapper/constants.js +0 -16
- package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
- package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
- package/v2Containers/InAppWrapper/index.js +0 -148
- package/v2Containers/InAppWrapper/messages.js +0 -49
- package/v2Containers/InappAdvance/index.js +0 -1099
- package/v2Containers/InappAdvance/index.scss +0 -10
- package/v2Containers/InappAdvance/tests/index.test.js +0 -448
|
@@ -26,17 +26,8 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
|
|
|
26
26
|
this.getPreview = this.getPreview.bind(this);
|
|
27
27
|
this.setContent = this.setContent.bind(this);
|
|
28
28
|
this.goToDuplicate = this.goToDuplicate.bind(this);
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
let hasAndroid;
|
|
32
|
-
let hasIos;
|
|
33
|
-
if (channel === INAPP.toUpperCase()) {
|
|
34
|
-
hasAndroid = get(templateData, 'versions.base.content.ANDROID') || get(templateData, 'androidContent');
|
|
35
|
-
hasIos = get(templateData, 'versions.base.content.IOS') || get(templateData, 'iosContent');
|
|
36
|
-
} else {
|
|
37
|
-
hasAndroid = get(templateData, 'versions.base.ANDROID') || get(templateData, 'androidContent.title');
|
|
38
|
-
hasIos = get(templateData, 'versions.base.IOS') || get(templateData, 'iosContent.title');
|
|
39
|
-
}
|
|
29
|
+
const hasAndroid = get(props, 'templateData.versions.base.ANDROID') || get(props, 'templateData.androidContent.title');
|
|
30
|
+
const hasIos = get(props, 'templateData.versions.base.IOS') || get(props, 'templateData.iosContent.title');
|
|
40
31
|
let device = "android";
|
|
41
32
|
if (hasAndroid) {
|
|
42
33
|
device = 'android';
|
|
@@ -54,17 +45,6 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
|
|
|
54
45
|
if (channel === INAPP.toUpperCase()) {
|
|
55
46
|
const androidContent = get(templateData, 'versions.base.content.ANDROID') || get(templateData, 'androidContent');
|
|
56
47
|
const iosContent = get(templateData, 'versions.base.content.IOS') || get(templateData, 'iosContent');
|
|
57
|
-
const isBeeFreeTemplate = get(androidContent, 'isBEEeditor') || get(iosContent, 'isBEEeditor');
|
|
58
|
-
if (isBeeFreeTemplate) {
|
|
59
|
-
// Normalize device to 'android' or 'ios' for comparison
|
|
60
|
-
const normalizedDevice = device === 'iphone' ? 'ios' : device?.toLowerCase();
|
|
61
|
-
const isAndroid = normalizedDevice === ANDROID.toLowerCase();
|
|
62
|
-
content = {
|
|
63
|
-
inAppPreviewContent: isAndroid ? androidContent?.beeHtml : iosContent?.beeHtml,
|
|
64
|
-
isBeeFreeTemplate: true,
|
|
65
|
-
};
|
|
66
|
-
return content;
|
|
67
|
-
}
|
|
68
48
|
const androidPreviewContent = {
|
|
69
49
|
templateTitle: androidContent?.title,
|
|
70
50
|
templateMsg: androidContent?.message,
|
|
@@ -77,12 +57,9 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
|
|
|
77
57
|
mediaPreview: { inAppImageSrcIos: iosContent?.expandableDetails?.image },
|
|
78
58
|
ctaData: getCtaObject(iosContent?.expandableDetails?.ctas),
|
|
79
59
|
};
|
|
80
|
-
// Normalize device to 'android' or 'ios' for comparison
|
|
81
|
-
const normalizedDevice = device === 'iphone' ? 'ios' : device?.toLowerCase();
|
|
82
|
-
const isAndroid = normalizedDevice === ANDROID.toLowerCase();
|
|
83
60
|
content = {
|
|
84
|
-
inAppPreviewContent:
|
|
85
|
-
templateLayoutType:
|
|
61
|
+
inAppPreviewContent: device === ANDROID.toLowerCase() ? androidPreviewContent : iosPreviewContent,
|
|
62
|
+
templateLayoutType: device === ANDROID.toLowerCase() ? androidContent?.bodyType : iosContent?.bodyType,
|
|
86
63
|
};
|
|
87
64
|
} else if (channel === MOBILE_PUSH) {
|
|
88
65
|
const androidContent = get(templateData, 'versions.base.ANDROID') || get(templateData, 'androidContent');
|
|
@@ -148,9 +125,7 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
|
|
|
148
125
|
}
|
|
149
126
|
|
|
150
127
|
getPreview(device) {
|
|
151
|
-
|
|
152
|
-
const normalizedDevice = device === 'iphone' ? 'ios' : device?.toLowerCase();
|
|
153
|
-
const deviceParam = normalizedDevice === ANDROID.toLowerCase() ? ANDROID : IOS;
|
|
128
|
+
const deviceParam = device === ANDROID.toLowerCase() ? ANDROID : IOS;
|
|
154
129
|
return (
|
|
155
130
|
<TemplatePreview
|
|
156
131
|
device={this.props.channel === INAPP.toUpperCase() ? deviceParam : device}
|
|
@@ -184,8 +159,8 @@ class MobilePushPreviewV2 extends React.Component { // eslint-disable-line react
|
|
|
184
159
|
hasAndroid = get(templateData, 'versions.base.ANDROID') || get(templateData, 'androidContent.title');
|
|
185
160
|
hasIos = get(templateData, 'versions.base.IOS') || get(templateData, 'iosContent.title');
|
|
186
161
|
} else if (this.props.channel === INAPP.toUpperCase()) {
|
|
187
|
-
hasAndroid = get(templateData, 'versions.base.content.ANDROID') || get(templateData, 'androidContent');
|
|
188
|
-
hasIos = get(templateData, 'versions.base.content.IOS') || get(templateData, 'iosContent');
|
|
162
|
+
hasAndroid = get(templateData, 'versions.base.content.ANDROID') || get(templateData, 'androidContent.title');
|
|
163
|
+
hasIos = get(templateData, 'versions.base.content.IOS') || get(templateData, 'iosContent.title');
|
|
189
164
|
}
|
|
190
165
|
const hasBothAndroidAndIos = hasAndroid && hasIos;
|
|
191
166
|
return (
|
|
@@ -16,11 +16,10 @@
|
|
|
16
16
|
&.mobilepush
|
|
17
17
|
|
|
18
18
|
.inapp-message-container-POPUP-ANDROID {
|
|
19
|
-
background-color: $CAP_WHITE;
|
|
20
19
|
position: absolute;
|
|
21
|
-
top:
|
|
20
|
+
top: 20%;
|
|
22
21
|
display: flex;
|
|
23
|
-
width:
|
|
22
|
+
width: 200px;
|
|
24
23
|
left: 28%;
|
|
25
24
|
|
|
26
25
|
.inapp-title-POPUP-ANDROID {
|
|
@@ -60,10 +59,10 @@
|
|
|
60
59
|
.inapp-message-container-HEADER-ANDROID {
|
|
61
60
|
position: absolute;
|
|
62
61
|
display: flex;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
// bottom: 19.4rem;
|
|
63
|
+
width: 200px;
|
|
64
|
+
left: 28%;
|
|
65
|
+
top: 20px;
|
|
67
66
|
|
|
68
67
|
.inapp-title-HEADER-ANDROID {
|
|
69
68
|
left: 34%;
|
|
@@ -130,24 +129,22 @@
|
|
|
130
129
|
|
|
131
130
|
|
|
132
131
|
.inapp-message-container-FOOTER-ANDROID {
|
|
133
|
-
background-color: $CAP_WHITE;
|
|
134
132
|
position: absolute;
|
|
135
133
|
display: flex;
|
|
136
134
|
justify-content: center;
|
|
137
|
-
bottom:
|
|
138
|
-
width:
|
|
139
|
-
left:
|
|
140
|
-
background-color: $CAP_WHITE;
|
|
135
|
+
bottom: 1.5%;
|
|
136
|
+
width: 200px;
|
|
137
|
+
left: 28%;
|
|
141
138
|
|
|
142
139
|
.inapp-title-FOOTER-ANDROID {
|
|
143
|
-
width:
|
|
140
|
+
width: 90px;
|
|
144
141
|
height: 12px;
|
|
145
142
|
text-align: left;
|
|
146
143
|
left: 34%;
|
|
147
144
|
justify-content: center;
|
|
148
145
|
position: relative;
|
|
149
146
|
right: 33%;
|
|
150
|
-
bottom: -
|
|
147
|
+
bottom: -22px;
|
|
151
148
|
font-size: 10px;
|
|
152
149
|
text-overflow: ellipsis;
|
|
153
150
|
overflow: hidden;
|
|
@@ -204,12 +201,10 @@
|
|
|
204
201
|
}
|
|
205
202
|
|
|
206
203
|
.inapp-message-container-FULLSCREEN-ANDROID {
|
|
207
|
-
background-color: $CAP_WHITE;
|
|
208
204
|
position: absolute;
|
|
209
205
|
top: 10%;
|
|
210
206
|
display: flex;
|
|
211
|
-
left:
|
|
212
|
-
width: 16.643rem;
|
|
207
|
+
left: 29%;
|
|
213
208
|
.inapp-title-FULLSCREEN-ANDROID {
|
|
214
209
|
text-overflow: ellipsis;
|
|
215
210
|
overflow: hidden;
|
|
@@ -243,11 +238,10 @@
|
|
|
243
238
|
}
|
|
244
239
|
|
|
245
240
|
.inapp-message-container-POPUP-iOS {
|
|
246
|
-
background-color: $CAP_WHITE;
|
|
247
241
|
position: absolute;
|
|
248
|
-
top:
|
|
242
|
+
top: 20%;
|
|
249
243
|
display: flex;
|
|
250
|
-
width:
|
|
244
|
+
width: 200px;
|
|
251
245
|
left: 28%;
|
|
252
246
|
|
|
253
247
|
.inapp-title-POPUP-iOS {
|
|
@@ -284,19 +278,18 @@
|
|
|
284
278
|
}
|
|
285
279
|
|
|
286
280
|
.inapp-message-container-HEADER-iOS {
|
|
287
|
-
background-color: $CAP_WHITE;
|
|
288
281
|
position: absolute;
|
|
289
282
|
display: flex;
|
|
290
|
-
width:
|
|
291
|
-
left:
|
|
292
|
-
top:
|
|
283
|
+
width: 200px;
|
|
284
|
+
left: 28%;
|
|
285
|
+
top: 3%;
|
|
293
286
|
|
|
294
287
|
.inapp-title-HEADER-iOS {
|
|
295
288
|
left: 34%;
|
|
296
289
|
top: 15%;
|
|
297
290
|
position: relative;
|
|
298
291
|
font-size: 10px;
|
|
299
|
-
width:
|
|
292
|
+
width: 90px;
|
|
300
293
|
height: 12px;
|
|
301
294
|
text-overflow: ellipsis;
|
|
302
295
|
overflow: hidden;
|
|
@@ -307,7 +300,7 @@
|
|
|
307
300
|
|
|
308
301
|
.without-image-title-HEADER-ios {
|
|
309
302
|
left: 26%;
|
|
310
|
-
top:
|
|
303
|
+
top: 18px;
|
|
311
304
|
text-align: center;
|
|
312
305
|
}
|
|
313
306
|
|
|
@@ -337,7 +330,7 @@
|
|
|
337
330
|
.without-image-content-HEADER-ios {
|
|
338
331
|
width: 92%;
|
|
339
332
|
left: 6%;
|
|
340
|
-
top:
|
|
333
|
+
top: 21px;
|
|
341
334
|
}
|
|
342
335
|
|
|
343
336
|
.inapp-button-HEADER-iOS {
|
|
@@ -354,14 +347,12 @@
|
|
|
354
347
|
}
|
|
355
348
|
|
|
356
349
|
.inapp-message-container-FOOTER-iOS {
|
|
357
|
-
background-color: $CAP_WHITE;
|
|
358
350
|
position: absolute;
|
|
359
351
|
display: flex;
|
|
360
352
|
justify-content: center;
|
|
361
|
-
width:
|
|
362
|
-
left:
|
|
363
|
-
top:
|
|
364
|
-
bottom: 3.5%;
|
|
353
|
+
width: 200px;
|
|
354
|
+
left: 28%;
|
|
355
|
+
top: 75%;
|
|
365
356
|
|
|
366
357
|
.inapp-title-FOOTER-iOS {
|
|
367
358
|
width: 90px;
|
|
@@ -429,12 +420,10 @@
|
|
|
429
420
|
}
|
|
430
421
|
|
|
431
422
|
.inapp-message-container-FULLSCREEN-iOS {
|
|
432
|
-
background-color: $CAP_WHITE;
|
|
433
423
|
position: absolute;
|
|
434
424
|
top: 10%;
|
|
435
425
|
display: flex;
|
|
436
|
-
left:
|
|
437
|
-
width: 16.643rem;
|
|
426
|
+
left: 29%;
|
|
438
427
|
.inapp-title-FULLSCREEN-iOS {
|
|
439
428
|
text-overflow: ellipsis;
|
|
440
429
|
overflow: hidden;
|
|
@@ -466,15 +455,6 @@
|
|
|
466
455
|
bottom: -1%;
|
|
467
456
|
}
|
|
468
457
|
}
|
|
469
|
-
|
|
470
|
-
.inapp-message-container-MODAL-ANDROID, .inapp-message-container-MODAL-iOS {
|
|
471
|
-
background-color: $CAP_WHITE;
|
|
472
|
-
position: absolute;
|
|
473
|
-
top: 30%;
|
|
474
|
-
display: flex;
|
|
475
|
-
width: 14.286rem;
|
|
476
|
-
left: 28%;
|
|
477
|
-
}
|
|
478
458
|
}
|
|
479
459
|
|
|
480
460
|
|
|
@@ -37,8 +37,14 @@ import {
|
|
|
37
37
|
import { VIBER, FACEBOOK } from '../../v2Containers/App/constants';
|
|
38
38
|
import Carousel from '../Carousel';
|
|
39
39
|
import whatsappMobileAndroid from './assets/images/whatsapp_mobile_android.svg';
|
|
40
|
-
import
|
|
41
|
-
import
|
|
40
|
+
import inAppMobileAndroidModal from './assets/images/inapp_mobile_android_modal.svg';
|
|
41
|
+
import inAppMobileAndroidTop from './assets/images/inapp_mobile_android_top.svg';
|
|
42
|
+
import inAppMobileAndroidBottom from './assets/images/inapp_mobile_android_bottom.svg';
|
|
43
|
+
import inAppMobileAndroidFull from './assets/images/inapp_mobile_android_full.svg';
|
|
44
|
+
import inAppMobileIOSModal from './assets/images/inapp_mobile_ios_modal.svg';
|
|
45
|
+
import inAppMobileIOSTop from './assets/images/inapp_mobile_ios_top.svg';
|
|
46
|
+
import inAppMobileIOSBottom from './assets/images/inapp_mobile_ios_bottom.svg';
|
|
47
|
+
import inAppMobileIOSFull from './assets/images/inapp_mobile_ios_full.svg';
|
|
42
48
|
import whatsappImageEmptyPreview from './assets/images/empty_image_preview.svg';
|
|
43
49
|
import whatsappVideoEmptyPreview from './assets/images/empty_video_preview.svg';
|
|
44
50
|
import videoPlay from '../../assets/videoPlay.svg';
|
|
@@ -233,7 +239,7 @@ export class TemplatePreview extends React.Component { // eslint-disable-line re
|
|
|
233
239
|
} = this.props;
|
|
234
240
|
let content = channel && channel.toLowerCase() === 'sms' ? [this.props.content] : this.props.content;
|
|
235
241
|
const { formatMessage } = intl;
|
|
236
|
-
const { rcsPreviewContent, inAppPreviewContent, viberPreviewContent
|
|
242
|
+
const { rcsPreviewContent, inAppPreviewContent, viberPreviewContent } = content || {};
|
|
237
243
|
const { rcsImageSrc, rcsVideoSrc, rcsTitle, rcsDesc, rcsSuggestions } = rcsPreviewContent || {};
|
|
238
244
|
const {
|
|
239
245
|
videoParams,
|
|
@@ -241,11 +247,7 @@ export class TemplatePreview extends React.Component { // eslint-disable-line re
|
|
|
241
247
|
buttonText: viberButtonText,
|
|
242
248
|
messageContent: viberMessageContent,
|
|
243
249
|
} = viberPreviewContent || {};
|
|
244
|
-
let isHTMLContent = true;
|
|
245
250
|
const {mediaPreview = {}, templateTitle = "", templateMsg = "", ctaData} = inAppPreviewContent || {};
|
|
246
|
-
if(templateTitle !== undefined && ctaData !== undefined && templateMsg !== undefined) {
|
|
247
|
-
isHTMLContent = false;
|
|
248
|
-
}
|
|
249
251
|
let smsDetails = {};
|
|
250
252
|
// let smsText = '';
|
|
251
253
|
if (this.props.content && this.props.charCounterEnabled) {
|
|
@@ -462,9 +464,27 @@ export class TemplatePreview extends React.Component { // eslint-disable-line re
|
|
|
462
464
|
|
|
463
465
|
const getPreviewImage = () => {
|
|
464
466
|
if (this.props.device === ANDROID) {
|
|
465
|
-
|
|
467
|
+
switch (templateLayoutType) {
|
|
468
|
+
case INAPP_MESSAGE_LAYOUT_TYPES.MODAL:
|
|
469
|
+
return inAppMobileAndroidModal;
|
|
470
|
+
case INAPP_MESSAGE_LAYOUT_TYPES.TOPBANNER:
|
|
471
|
+
return inAppMobileAndroidTop;
|
|
472
|
+
case INAPP_MESSAGE_LAYOUT_TYPES.BOTTOMBANNER:
|
|
473
|
+
return inAppMobileAndroidBottom;
|
|
474
|
+
default:
|
|
475
|
+
return inAppMobileAndroidFull;
|
|
476
|
+
}
|
|
466
477
|
} else {
|
|
467
|
-
|
|
478
|
+
switch (templateLayoutType) {
|
|
479
|
+
case INAPP_MESSAGE_LAYOUT_TYPES.MODAL:
|
|
480
|
+
return inAppMobileIOSModal;
|
|
481
|
+
case INAPP_MESSAGE_LAYOUT_TYPES.TOPBANNER:
|
|
482
|
+
return inAppMobileIOSTop;
|
|
483
|
+
case INAPP_MESSAGE_LAYOUT_TYPES.BOTTOMBANNER:
|
|
484
|
+
return inAppMobileIOSBottom;
|
|
485
|
+
default:
|
|
486
|
+
return inAppMobileIOSFull;
|
|
487
|
+
}
|
|
468
488
|
}
|
|
469
489
|
};
|
|
470
490
|
|
|
@@ -1386,34 +1406,7 @@ export class TemplatePreview extends React.Component { // eslint-disable-line re
|
|
|
1386
1406
|
</div>
|
|
1387
1407
|
)}
|
|
1388
1408
|
{channel?.toUpperCase() === INAPP && (
|
|
1389
|
-
|
|
1390
|
-
<div className="shell-v2 align-center">
|
|
1391
|
-
<div style={{ position: 'relative', display: 'inline-block', width: '100%', height: '100%' }}>
|
|
1392
|
-
<CapImage
|
|
1393
|
-
className="preview-image"
|
|
1394
|
-
src={this.props.device === ANDROID ? inAppMobileDeviceAndroid : inAppMobileDeviceIos}
|
|
1395
|
-
alt={formatMessage(messages.previewGenerated)}
|
|
1396
|
-
/>
|
|
1397
|
-
<iframe
|
|
1398
|
-
srcDoc={inAppPreviewContent?.value}
|
|
1399
|
-
title={formatMessage(messages.inappPreview)}
|
|
1400
|
-
style={{
|
|
1401
|
-
position: 'absolute',
|
|
1402
|
-
top: '3rem',
|
|
1403
|
-
left: '5rem',
|
|
1404
|
-
width: '60%',
|
|
1405
|
-
height: '89%',
|
|
1406
|
-
zIndex: 1,
|
|
1407
|
-
pointerEvents: 'none',
|
|
1408
|
-
backgroundColor: 'white',
|
|
1409
|
-
borderRadius: `${CAP_SPACE_08}`,
|
|
1410
|
-
}}
|
|
1411
|
-
frameBorder="0"
|
|
1412
|
-
/>
|
|
1413
|
-
</div>
|
|
1414
|
-
</div>
|
|
1415
|
-
): (
|
|
1416
|
-
<div className="shell-v2 align-center">
|
|
1409
|
+
<div className="shell-v2 align-center">
|
|
1417
1410
|
<CapImage
|
|
1418
1411
|
className="preview-image"
|
|
1419
1412
|
src={getPreviewImage()}
|
|
@@ -1421,15 +1414,9 @@ export class TemplatePreview extends React.Component { // eslint-disable-line re
|
|
|
1421
1414
|
/>
|
|
1422
1415
|
<div className="preview-image">
|
|
1423
1416
|
<div
|
|
1424
|
-
className={`inapp-message-container-${templateLayoutType}-${device}
|
|
1417
|
+
className={`inapp-message-container-${templateLayoutType}-${device} sms`}
|
|
1425
1418
|
>
|
|
1426
|
-
|
|
1427
|
-
<div
|
|
1428
|
-
className="inapp-html-content"
|
|
1429
|
-
dangerouslySetInnerHTML={{ __html: templateMsg }}
|
|
1430
|
-
/>
|
|
1431
|
-
) : (
|
|
1432
|
-
<div className="preview-inapp-screen">
|
|
1419
|
+
<div className="preview-inapp-screen">
|
|
1433
1420
|
{
|
|
1434
1421
|
<CapLabel
|
|
1435
1422
|
type="label15"
|
|
@@ -1494,11 +1481,9 @@ export class TemplatePreview extends React.Component { // eslint-disable-line re
|
|
|
1494
1481
|
</CapButton>
|
|
1495
1482
|
)}
|
|
1496
1483
|
</div>
|
|
1497
|
-
)}
|
|
1498
1484
|
</div>
|
|
1499
1485
|
</div>
|
|
1500
1486
|
</div>
|
|
1501
|
-
)
|
|
1502
1487
|
)}
|
|
1503
1488
|
</CapRow>
|
|
1504
1489
|
</CapColumn>
|
|
@@ -94,8 +94,4 @@ export default defineMessages({
|
|
|
94
94
|
id: 'creatives.componentsV2.TemplatePreview.videoNotSupported',
|
|
95
95
|
defaultMessage: 'Your browser does not support the video tag.',
|
|
96
96
|
},
|
|
97
|
-
inappPreview: {
|
|
98
|
-
id: 'creatives.componentsV2.TemplatePreview.inappPreview',
|
|
99
|
-
defaultMessage: 'Inapp Preview',
|
|
100
|
-
},
|
|
101
97
|
});
|
|
@@ -92,12 +92,9 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
92
92
|
const activeTab = currentTabData?.activeTab;
|
|
93
93
|
const templateContent = currentTabData?.[activeTab]?.['template-content'];
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
const initialContent = templateContent || content;
|
|
97
|
-
|
|
98
|
-
if (initialContent) {
|
|
95
|
+
if (templateContent) {
|
|
99
96
|
return {
|
|
100
|
-
resolvedBody:
|
|
97
|
+
resolvedBody: templateContent,
|
|
101
98
|
resolvedTitle: formData['template-subject'] || ''
|
|
102
99
|
};
|
|
103
100
|
}
|
|
@@ -115,14 +112,14 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
115
112
|
const resolveTagsInText = (text, tagValues) => {
|
|
116
113
|
if (!text) return text;
|
|
117
114
|
let resolvedText = text;
|
|
118
|
-
|
|
115
|
+
|
|
119
116
|
// Replace each tag with its custom value
|
|
120
117
|
Object.keys(tagValues).forEach((tagPath) => {
|
|
121
118
|
const tagName = tagPath.split('.').pop(); // Get the actual tag name from the path
|
|
122
119
|
const tagRegex = new RegExp(`{{${tagName}}}`, 'g');
|
|
123
120
|
resolvedText = resolvedText.replace(tagRegex, tagValues[tagPath] || `{{${tagName}}}`);
|
|
124
121
|
});
|
|
125
|
-
|
|
122
|
+
|
|
126
123
|
return resolvedText;
|
|
127
124
|
};
|
|
128
125
|
|
|
@@ -131,7 +128,7 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
131
128
|
const currentTabData = formData[currentTab - 1];
|
|
132
129
|
const activeTab = currentTabData?.activeTab;
|
|
133
130
|
const isDragDrop = currentTabData?.[activeTab]?.is_drag_drop;
|
|
134
|
-
|
|
131
|
+
|
|
135
132
|
if (isDragDrop && beeContent) {
|
|
136
133
|
return beeContent; // Use BEE content if available
|
|
137
134
|
}
|
|
@@ -233,7 +230,7 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
233
230
|
actions.extractTagsRequested(formData['template-subject'] || '', payloadContent);
|
|
234
231
|
}
|
|
235
232
|
}
|
|
236
|
-
|
|
233
|
+
|
|
237
234
|
actions.fetchTestCustomersRequested();
|
|
238
235
|
actions.fetchTestGroupsRequested();
|
|
239
236
|
}
|
|
@@ -245,20 +242,17 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
245
242
|
const activeTab = currentTabData?.activeTab;
|
|
246
243
|
const isDragDrop = currentTabData?.[activeTab]?.is_drag_drop;
|
|
247
244
|
const templateContent = currentTabData?.[activeTab]?.['template-content'];
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
const contentToUse = templateContent || content;
|
|
251
|
-
|
|
252
|
-
if (contentToUse && (typeof contentToUse === 'string' && contentToUse.trim() !== '')) {
|
|
245
|
+
|
|
246
|
+
if (templateContent && templateContent.trim() !== '') {
|
|
253
247
|
// Common function to handle content update
|
|
254
|
-
const handleContentUpdate = (
|
|
248
|
+
const handleContentUpdate = (content) => {
|
|
255
249
|
setPreviewDataHtml({
|
|
256
|
-
resolvedBody:
|
|
250
|
+
resolvedBody: content,
|
|
257
251
|
resolvedTitle: formData['template-subject'] || ''
|
|
258
252
|
});
|
|
259
253
|
|
|
260
254
|
// Extract tags from content
|
|
261
|
-
const payloadContent = convert(
|
|
255
|
+
const payloadContent = convert(content, GLOBAL_CONVERT_OPTIONS);
|
|
262
256
|
actions.extractTagsRequested(formData['template-subject'] || '', payloadContent);
|
|
263
257
|
};
|
|
264
258
|
|
|
@@ -270,13 +264,13 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
270
264
|
handleContentUpdate(templateContent);
|
|
271
265
|
}
|
|
272
266
|
} else {
|
|
273
|
-
// For CKEditor
|
|
274
|
-
if (
|
|
275
|
-
handleContentUpdate(
|
|
267
|
+
// For CKEditor, only update if content changed
|
|
268
|
+
if (templateContent !== previewDataHtml?.resolvedBody) {
|
|
269
|
+
handleContentUpdate(templateContent);
|
|
276
270
|
}
|
|
277
271
|
}
|
|
278
272
|
}
|
|
279
|
-
}, [formData, currentTab
|
|
273
|
+
}, [formData, currentTab]);
|
|
280
274
|
|
|
281
275
|
// Cleanup effect to reset ref when slidebox closes
|
|
282
276
|
useEffect(() => {
|
|
@@ -372,10 +366,10 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
372
366
|
useEffect(() => {
|
|
373
367
|
if (selectedCustomer) {
|
|
374
368
|
setTagsExtracted(true); // Auto-open custom values editor
|
|
375
|
-
|
|
369
|
+
|
|
376
370
|
// Get all available tags
|
|
377
371
|
const allTags = [...requiredTags, ...optionalTags];
|
|
378
|
-
|
|
372
|
+
|
|
379
373
|
if (allTags.length > 0) {
|
|
380
374
|
const payload = {
|
|
381
375
|
channel: EMAIL,
|
|
@@ -397,7 +391,7 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
397
391
|
updatedValues[tag?.fullPath] = prefilledValues[tag?.fullPath] || '';
|
|
398
392
|
});
|
|
399
393
|
|
|
400
|
-
|
|
394
|
+
|
|
401
395
|
setCustomValues(updatedValues);
|
|
402
396
|
|
|
403
397
|
// Update preview with prefilled values
|
|
@@ -445,10 +439,10 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
445
439
|
setSelectedTestEntities([]);
|
|
446
440
|
setBeeContent('');
|
|
447
441
|
previousBeeContentRef.current = '';
|
|
448
|
-
|
|
442
|
+
|
|
449
443
|
// Clear any pending actions
|
|
450
444
|
actions.clearPrefilledValues();
|
|
451
|
-
|
|
445
|
+
|
|
452
446
|
// Call parent's onClose if provided
|
|
453
447
|
if (onClose) {
|
|
454
448
|
onClose();
|
|
@@ -463,7 +457,7 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
463
457
|
const handleCustomerSelect = (customer) => {
|
|
464
458
|
setSelectedCustomer(customer);
|
|
465
459
|
setTagsExtracted(true); // Auto-open custom values editor
|
|
466
|
-
|
|
460
|
+
|
|
467
461
|
// Clear any existing values while waiting for prefilled values
|
|
468
462
|
const emptyValues = {};
|
|
469
463
|
[...requiredTags, ...optionalTags].forEach((tag) => {
|
|
@@ -474,7 +468,7 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
474
468
|
|
|
475
469
|
const handleClearSelection = () => {
|
|
476
470
|
setSelectedCustomer(null);
|
|
477
|
-
|
|
471
|
+
|
|
478
472
|
// Initialize empty values for all tags
|
|
479
473
|
const emptyValues = {};
|
|
480
474
|
[...requiredTags, ...optionalTags].forEach((tag) => {
|
|
@@ -565,12 +559,12 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
565
559
|
const currentTabData = formData[currentTab - 1];
|
|
566
560
|
const activeTab = currentTabData?.activeTab;
|
|
567
561
|
const templateContent = currentTabData?.[activeTab]?.['template-content'];
|
|
568
|
-
|
|
562
|
+
|
|
569
563
|
// Check for personalization tags (excluding unsubscribe)
|
|
570
564
|
const content = templateContent || getCurrentContent;
|
|
571
565
|
const tags = content.match(/{{[^}]+}}/g) || [];
|
|
572
566
|
const hasPersonalizationTags = tags.some(tag => !tag.includes('unsubscribe'));
|
|
573
|
-
|
|
567
|
+
|
|
574
568
|
if (!hasPersonalizationTags && tags.length === 1 && tags[0].includes('unsubscribe')) {
|
|
575
569
|
// If only unsubscribe tag is present, show noTagsExtracted message
|
|
576
570
|
setTagsExtracted(false);
|
|
@@ -579,7 +573,7 @@ const TestAndPreviewSlidebox = (props) => {
|
|
|
579
573
|
setCustomValues({});
|
|
580
574
|
return;
|
|
581
575
|
}
|
|
582
|
-
|
|
576
|
+
|
|
583
577
|
// Extract tags
|
|
584
578
|
setTagsExtracted(true);
|
|
585
579
|
if (templateContent) {
|
|
@@ -40,6 +40,7 @@ export const TRACK_CREATE_IMAGE = 'createImage';
|
|
|
40
40
|
export const TRACK_CREATE_LINE = 'createLine';
|
|
41
41
|
export const TRACK_CREATE_VIBER = 'createViber';
|
|
42
42
|
export const TRACK_CREATE_FACEBOOK = 'createFacebook';
|
|
43
|
+
export const TRACK_CREATE_WEBPUSH = 'createWebPush';
|
|
43
44
|
|
|
44
45
|
export const CREATE = 'create';
|
|
45
46
|
export const EDIT = 'edit';
|
|
@@ -54,6 +55,7 @@ export const EMAIL = 'email';
|
|
|
54
55
|
export const ASSETS = 'assets';
|
|
55
56
|
export const ZALO = 'zalo';
|
|
56
57
|
export const INAPP = 'inapp';
|
|
58
|
+
export const WEBPUSH = 'webpush';
|
|
57
59
|
|
|
58
60
|
export const JP_LOCALE_HIDE_FEATURE = 'JP_LOCALE_HIDE_FEATURE';
|
|
59
61
|
|
|
@@ -65,6 +67,7 @@ export const TRACK_EDIT_IMAGE = 'editImage';
|
|
|
65
67
|
export const TRACK_EDIT_LINE = 'editLine';
|
|
66
68
|
export const TRACK_EDIT_VIBER = 'editViber';
|
|
67
69
|
export const TRACK_EDIT_FACEBOOK = 'editFacebook';
|
|
70
|
+
export const TRACK_EDIT_WEBPUSH = 'editWebPush';
|
|
68
71
|
|
|
69
72
|
export const CHANNEL_CREATE_TRACK_MAPPING = {
|
|
70
73
|
sms: TRACK_CREATE_SMS,
|
|
@@ -75,6 +78,7 @@ export const CHANNEL_CREATE_TRACK_MAPPING = {
|
|
|
75
78
|
line: TRACK_CREATE_LINE,
|
|
76
79
|
viber: TRACK_CREATE_VIBER,
|
|
77
80
|
facebook: TRACK_CREATE_FACEBOOK,
|
|
81
|
+
webpush: TRACK_CREATE_WEBPUSH,
|
|
78
82
|
};
|
|
79
83
|
|
|
80
84
|
export const CHANNEL_EDIT_TRACK_MAPPING = {
|
|
@@ -86,6 +90,7 @@ export const CHANNEL_EDIT_TRACK_MAPPING = {
|
|
|
86
90
|
line: TRACK_EDIT_LINE,
|
|
87
91
|
viber: TRACK_EDIT_VIBER,
|
|
88
92
|
facebook: TRACK_EDIT_FACEBOOK,
|
|
93
|
+
webpush: TRACK_EDIT_WEBPUSH,
|
|
89
94
|
};
|
|
90
95
|
export const GTM_TRACKING_ID = 'UA-110024621-2';
|
|
91
96
|
export const BEE_PLUGIN = 'BEE_PLUGIN';
|