@capillarytech/creatives-library 8.0.266 → 8.0.267

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.
Files changed (147) hide show
  1. package/constants/unified.js +0 -1
  2. package/package.json +1 -1
  3. package/services/api.js +0 -5
  4. package/utils/common.js +0 -6
  5. package/utils/tests/transformerUtils.test.js +0 -297
  6. package/utils/transformerUtils.js +0 -40
  7. package/v2Components/CapImageUpload/constants.js +0 -2
  8. package/v2Components/CapImageUpload/index.js +16 -65
  9. package/v2Components/CapImageUpload/index.scss +1 -4
  10. package/v2Components/CapImageUpload/messages.js +1 -5
  11. package/v2Components/CommonTestAndPreview/index.js +15 -4
  12. package/v2Containers/App/constants.js +0 -5
  13. package/v2Containers/CreativesContainer/SlideBoxContent.js +2 -57
  14. package/v2Containers/CreativesContainer/SlideBoxHeader.js +0 -1
  15. package/v2Containers/CreativesContainer/constants.js +0 -3
  16. package/v2Containers/CreativesContainer/index.js +0 -168
  17. package/v2Containers/CreativesContainer/messages.js +0 -4
  18. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
  19. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -304
  20. package/v2Containers/SmsTrai/Edit/index.js +12 -1
  21. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +648 -36
  22. package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
  23. package/v2Containers/Templates/_templates.scss +0 -205
  24. package/v2Containers/Templates/actions.js +1 -2
  25. package/v2Containers/Templates/constants.js +0 -1
  26. package/v2Containers/Templates/index.js +34 -274
  27. package/v2Containers/Templates/messages.js +0 -24
  28. package/v2Containers/Templates/reducer.js +0 -2
  29. package/v2Containers/Templates/tests/index.test.js +0 -10
  30. package/v2Containers/TemplatesV2/index.js +7 -15
  31. package/v2Containers/TemplatesV2/messages.js +0 -4
  32. package/utils/imageUrlUpload.js +0 -141
  33. package/v2Components/CapImageUrlUpload/constants.js +0 -26
  34. package/v2Components/CapImageUrlUpload/index.js +0 -365
  35. package/v2Components/CapImageUrlUpload/index.scss +0 -35
  36. package/v2Components/CapImageUrlUpload/messages.js +0 -47
  37. package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
  38. package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
  39. package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
  40. package/v2Containers/WebPush/Create/components/ButtonList.js +0 -145
  41. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -164
  42. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -463
  43. package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
  44. package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
  45. package/v2Containers/WebPush/Create/components/MediaSection.js +0 -142
  46. package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
  47. package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
  48. package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
  49. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
  50. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
  51. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
  52. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
  53. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -86
  54. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
  55. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
  56. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
  57. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
  58. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
  59. package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
  60. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
  61. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
  62. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -633
  63. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
  64. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
  65. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -78
  66. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -138
  67. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
  68. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
  69. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
  70. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
  71. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
  72. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
  73. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
  74. package/v2Containers/WebPush/Create/index.js +0 -1148
  75. package/v2Containers/WebPush/Create/index.scss +0 -134
  76. package/v2Containers/WebPush/Create/messages.js +0 -211
  77. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
  78. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
  79. package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
  80. package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
  81. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -25
  82. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -156
  83. package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
  84. package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
  85. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +0 -9
  86. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
  87. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  88. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  89. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
  90. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
  91. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +0 -9
  92. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
  93. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
  94. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
  95. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +0 -9
  96. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
  97. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -51
  98. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -145
  99. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
  100. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
  101. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
  102. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
  103. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
  104. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
  105. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -85
  106. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
  107. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
  108. package/v2Containers/WebPush/Create/preview/constants.js +0 -637
  109. package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
  110. package/v2Containers/WebPush/Create/preview/preview.scss +0 -358
  111. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
  112. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
  113. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
  114. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
  115. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -47
  116. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
  117. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
  118. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
  119. package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -207
  120. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
  121. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
  122. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
  123. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
  124. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -906
  125. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
  126. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
  127. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
  128. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
  129. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
  130. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
  131. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -129
  132. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
  133. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
  134. package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
  135. package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
  136. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
  137. package/v2Containers/WebPush/Create/utils/validation.js +0 -75
  138. package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
  139. package/v2Containers/WebPush/actions.js +0 -60
  140. package/v2Containers/WebPush/constants.js +0 -132
  141. package/v2Containers/WebPush/index.js +0 -2
  142. package/v2Containers/WebPush/reducer.js +0 -104
  143. package/v2Containers/WebPush/sagas.js +0 -119
  144. package/v2Containers/WebPush/selectors.js +0 -65
  145. package/v2Containers/WebPush/tests/reducer.test.js +0 -863
  146. package/v2Containers/WebPush/tests/sagas.test.js +0 -566
  147. package/v2Containers/WebPush/tests/selectors.test.js +0 -960
@@ -495,19 +495,28 @@ const CommonTestAndPreview = (props) => {
495
495
 
496
496
  case CHANNELS.SMS: {
497
497
  // Extract SMS message from content
498
- // For SMS, contentStr should contain the message text
499
- const message = contentStr || formDataObj?.['sms-editor'] || formDataObj?.[0]?.['sms-editor'] || '';
498
+ const message = contentStr || formDataObj?.['sms-editor'] || formDataObj?.[0]?.['sms-editor'] || formDataObj?.messageBody || '';
500
499
 
501
500
  // Resolve tags in message if custom values are provided
502
501
  const resolvedMessage = customValuesObj && Object.keys(customValuesObj).length > 0
503
502
  ? resolveTagsInText(message, customValuesObj)
504
503
  : message;
505
504
 
506
- return {
505
+ const baseData = formDataObj?.base || formDataObj?.[0]?.base || formDataObj?.[0] || {};
506
+ const templateId = formDataObj?.templateConfigs?.templateId || formDataObj?.template_id || formDataObj?.templateId || baseData?.template_id || '';
507
+ const templateRaw = formDataObj?.templateConfigs?.template || baseData?.['sms-editor'] || baseData?.['updated-sms-editor'] || '';
508
+ const templateContent = Array.isArray(templateRaw) ? templateRaw.join('') : (templateRaw || '');
509
+
510
+ const smsPayload = {
507
511
  ...basePayload,
508
512
  smsMessageContent: {
509
513
  message: resolvedMessage,
510
- templateConfigs: {},
514
+ ...(templateId && {
515
+ templateConfigs: {
516
+ templateId,
517
+ ...(templateContent && { template: templateContent }),
518
+ },
519
+ }),
511
520
  },
512
521
  smsDeliverySettings: {
513
522
  channelSettings: {
@@ -521,6 +530,8 @@ const CommonTestAndPreview = (props) => {
521
530
  },
522
531
  },
523
532
  };
533
+
534
+ return smsPayload;
524
535
  }
525
536
 
526
537
  case CHANNELS.WHATSAPP: {
@@ -40,7 +40,6 @@ 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';
44
43
 
45
44
  export const CREATE = 'create';
46
45
  export const EDIT = 'edit';
@@ -55,7 +54,6 @@ export const EMAIL = 'email';
55
54
  export const ASSETS = 'assets';
56
55
  export const ZALO = 'zalo';
57
56
  export const INAPP = 'inapp';
58
- export const WEBPUSH = 'webpush';
59
57
 
60
58
  export const JP_LOCALE_HIDE_FEATURE = 'JP_LOCALE_HIDE_FEATURE';
61
59
 
@@ -67,7 +65,6 @@ export const TRACK_EDIT_IMAGE = 'editImage';
67
65
  export const TRACK_EDIT_LINE = 'editLine';
68
66
  export const TRACK_EDIT_VIBER = 'editViber';
69
67
  export const TRACK_EDIT_FACEBOOK = 'editFacebook';
70
- export const TRACK_EDIT_WEBPUSH = 'editWebPush';
71
68
 
72
69
  export const CHANNEL_CREATE_TRACK_MAPPING = {
73
70
  sms: TRACK_CREATE_SMS,
@@ -78,7 +75,6 @@ export const CHANNEL_CREATE_TRACK_MAPPING = {
78
75
  line: TRACK_CREATE_LINE,
79
76
  viber: TRACK_CREATE_VIBER,
80
77
  facebook: TRACK_CREATE_FACEBOOK,
81
- webpush: TRACK_CREATE_WEBPUSH,
82
78
  };
83
79
 
84
80
  export const CHANNEL_EDIT_TRACK_MAPPING = {
@@ -90,7 +86,6 @@ export const CHANNEL_EDIT_TRACK_MAPPING = {
90
86
  line: TRACK_EDIT_LINE,
91
87
  viber: TRACK_EDIT_VIBER,
92
88
  facebook: TRACK_EDIT_FACEBOOK,
93
- webpush: TRACK_EDIT_WEBPUSH,
94
89
  };
95
90
  export const GTM_TRACKING_ID = 'UA-110024621-2';
96
91
  export const BEE_PLUGIN = 'BEE_PLUGIN';
@@ -28,10 +28,6 @@ import { getWhatsappContent } from '../Whatsapp/utils';
28
28
  import * as commonUtil from '../../utils/common';
29
29
  import Zalo from '../Zalo';
30
30
  import MobilePushNew from '../MobilePushNew';
31
- import WebPush from '../WebPush';
32
- import DevicePreviewContent from '../WebPush/Create/preview/DevicePreviewContent';
33
- import { LAYOUT_MODE } from '../WebPush/Create/preview/constants';
34
- import { WEBPUSH_CONTENT_FIELDS, WEBPUSH_TEMPLATE_PATHS } from '../WebPush/constants';
35
31
  const CreativesWrapper = styled.div`
36
32
  .ant-popover,
37
33
  .ant-notification,
@@ -133,7 +129,6 @@ export function SlideBoxContent(props) {
133
129
  onValidationFail,
134
130
  channelsToHide,
135
131
  forwardedTags,
136
- supportedTags = [],
137
132
  selectedOfferDetails,
138
133
  channelsToDisable,
139
134
  weChatTemplateType,
@@ -205,7 +200,6 @@ export function SlideBoxContent(props) {
205
200
  const isCreateRcs = isCreate && channel === constants.RCS;
206
201
  const isCreateMPush = isCreate && channel === constants.MOBILE_PUSH;
207
202
  const isCreateCallTask = isCreate && channel === constants.CALL_TASK;
208
- const isCreateWebPush = isCreate && channel === constants.WEBPUSH;
209
203
  let isEditSms = false;
210
204
  let isEditEmailWithId = false;
211
205
  let isEmailEditWithContent = false;
@@ -213,14 +207,12 @@ export function SlideBoxContent(props) {
213
207
  let isEmailPreview = false;
214
208
  let isMpushPreview = false;
215
209
  let isInappPreview = false;
216
- let isWebPushPreview = false;
217
210
  let isEditCallTask = false;
218
211
  let isEditMPush = false;
219
212
  let isEditFacebook = false;
220
213
  let isEditFTP = false;
221
214
  let isEditWhatsapp = false;
222
215
  let isEditInApp = false;
223
- let isEditWebPush = false;
224
216
  let isEditRcs = false;
225
217
  let isEditZalo = false;
226
218
  const isEmailCreate = isCreate && channel === constants.EMAIL;
@@ -234,12 +226,10 @@ export function SlideBoxContent(props) {
234
226
  isEditFacebook = isEdit && channel === constants.FACEBOOK;
235
227
  isEditWhatsapp = isEdit && channel === constants.WHATSAPP;
236
228
  isEditRcs = isEdit && channel === constants.RCS;
237
- isEditWebPush = isEdit && channel === constants.WEBPUSH;
238
229
  isPreview = slidBoxContent === 'preview' && [constants.SMS, constants.LINE, constants.WHATSAPP, constants.FACEBOOK, constants.VIBER, constants.RCS].includes(channel);
239
230
  isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
240
231
  isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
241
232
  isInappPreview = slidBoxContent === 'preview' && channel === constants.INAPP;
242
- isWebPushPreview = slidBoxContent === 'preview' && channel === constants.WEBPUSH;
243
233
  isEditFTP = isEdit && [constants.NO_COMMUNICATION, constants.FTP].includes(channel);
244
234
  isEditZalo = isEdit && channel?.toUpperCase() === constants.ZALO;
245
235
  isEditInApp = isEdit && channel === constants.INAPP;
@@ -487,30 +477,8 @@ export function SlideBoxContent(props) {
487
477
  templateData={templateData}
488
478
  channel={channel}
489
479
  forwardedTags={forwardedTags}
490
- />
480
+ />
491
481
  )}
492
- {isWebPushPreview && (() => {
493
- const webpushContent = get(templateData, WEBPUSH_TEMPLATE_PATHS.CONTENT, {});
494
- const notificationTitle = webpushContent?.[WEBPUSH_CONTENT_FIELDS.TITLE] || '';
495
- const notificationBody = webpushContent?.[WEBPUSH_CONTENT_FIELDS.MESSAGE] || '';
496
- const imageSrc = webpushContent?.[WEBPUSH_CONTENT_FIELDS.IMAGE] || '';
497
- const brandIconSrc = webpushContent?.[WEBPUSH_CONTENT_FIELDS.BRAND_ICON] || '';
498
- // Extract URL from onClickAction or use empty string
499
- const url = webpushContent?.[WEBPUSH_CONTENT_FIELDS.ON_CLICK_ACTION]?.url || '';
500
-
501
- return (
502
- <div className="webpush-preview-container">
503
- <DevicePreviewContent
504
- notificationTitle={notificationTitle}
505
- notificationBody={notificationBody}
506
- url={url}
507
- imageSrc={imageSrc}
508
- brandIconSrc={brandIconSrc}
509
- layoutMode={LAYOUT_MODE.COMPACT}
510
- />
511
- </div>
512
- );
513
- })()}
514
482
 
515
483
  {
516
484
  (currentChannel === constants.WECHAT && !!slidBoxContent) && <WechatWrapper
@@ -1046,28 +1014,6 @@ export function SlideBoxContent(props) {
1046
1014
  />
1047
1015
  )}
1048
1016
 
1049
- {(isCreateWebPush || isEditWebPush) && (
1050
- <WebPush
1051
- isFullMode={isFullMode}
1052
- handleClose={handleClose}
1053
- onCreateComplete={onCreateComplete}
1054
- getFormData={getFormData}
1055
- isGetFormData={isGetFormData}
1056
- templateData={isEditWebPush ? templateData : undefined}
1057
- creativesMode={creativesMode}
1058
- params={isEditWebPush && templateData ? { id: templateData._id } : undefined}
1059
- location={{
1060
- pathname: isEditWebPush ? '/webpush/edit' : '/webpush/create',
1061
- query,
1062
- search: '',
1063
- }}
1064
- getDefaultTags={type}
1065
- forwardedTags={forwardedTags}
1066
- supportedTags={supportedTags}
1067
- selectedOfferDetails={selectedOfferDetails}
1068
- eventContextTags={eventContextTags}
1069
- />
1070
- )}
1071
1017
  {isCreateRcs && (<Rcs
1072
1018
  {...rcsCommonProps}
1073
1019
  showLiquidErrorInFooter={showLiquidErrorInFooter}
@@ -1130,7 +1076,6 @@ SlideBoxContent.propTypes = {
1130
1076
  onValidationFail: PropTypes.func,
1131
1077
  channelsToHide: PropTypes.array,
1132
1078
  forwardedTags: PropTypes.object,
1133
- supportedTags: PropTypes.array,
1134
1079
  selectedOfferDetails: PropTypes.array,
1135
1080
  channelsToDisable: PropTypes.array,
1136
1081
  weChatTemplateType: PropTypes.string,
@@ -1146,7 +1091,7 @@ SlideBoxContent.propTypes = {
1146
1091
  onFTPSubmit: PropTypes.func,
1147
1092
  messageStrategy: PropTypes.string,
1148
1093
  fbAdManager: PropTypes.string,
1149
- showDisabledFBInfo: PropTypes.bool,
1094
+ showDisabledFBInfo: PropTypes.boolean,
1150
1095
  orgUnitId: PropTypes.any,
1151
1096
  smsRegister: PropTypes.any,
1152
1097
  getCmsTemplatesInProgress: PropTypes.bool,
@@ -71,7 +71,6 @@ export function SlideBoxHeader(props) {
71
71
  rcs: <FormattedMessage {...messages.rcsCreative} />,
72
72
  zalo: <FormattedMessage {...messages.zaloTemplate} />,
73
73
  viber: <FormattedMessage {...messages.viberTemplate} />,
74
- webpush: <FormattedMessage {...messages.webPushTemplate} />,
75
74
  };
76
75
  return labels[currentChannel.toLowerCase()];
77
76
  };
@@ -21,8 +21,6 @@ export const PUSH = "PUSH";
21
21
  export const RCS = "RCS";
22
22
  export const ZALO = "ZALO";
23
23
  export const INAPP = "INAPP";
24
- export const WEBPUSH = "WEBPUSH";
25
- export const WEBPUSH_BRAND_ICON = "WEBPUSH_BRAND_ICON";
26
24
  export const PREVIEW = "preview";
27
25
  export const EDIT_TEMPLATE = "editTemplate";
28
26
  export const JOURNEY = "journey";
@@ -50,4 +48,3 @@ export const BIG_TEXT = "BIG_TEXT";
50
48
  export const GENERIC = "GENERIC";
51
49
  export const LIQUID_ERROR_MSG = "LIQUID_ERROR_MSG";
52
50
  export const STANDARD_ERROR_MSG = "STANDARD_ERROR_MSG";
53
- export const COMMON_CHANNELS = ['sms', 'email', 'wechat', 'mobilepush', 'webpush', 'line', 'viber', 'facebook', 'call_task', 'ftp', 'assets'];
@@ -42,7 +42,6 @@ import { makeSelectFetchingCmsData } from '../Email/selectors';
42
42
  import {
43
43
  IMAGE as LINE_IMAGE, IMAGE_MAP, IMAGE_CAROUSEL, VIDEO as LINE_VIDEO, TEMPLATE, STICKER,
44
44
  } from '../Line/Container/constants';
45
- import {EXTERNAL_URL, SITE_URL, WEBPUSH_MEDIA_TYPES} from '../WebPush/constants';
46
45
  import { IMAGE, VIDEO } from '../Facebook/Advertisement/constant';
47
46
  import {RCS_STATUSES} from '../Rcs/constants';
48
47
  import { CREATIVE } from '../Facebook/constants';
@@ -709,73 +708,6 @@ export class Creatives extends React.Component {
709
708
  };
710
709
  break;
711
710
  }
712
- case constants.WEBPUSH: {
713
- // Convert from campaign format (messageContent.content.content) to creatives format
714
- const webpushContent = get(templateData, 'content', {});
715
- const accountId = get(templateData, 'accountId');
716
- const {
717
- title,
718
- message,
719
- iconImageUrl: brandIcon = "",
720
- cta,
721
- expandableDetails
722
- } = webpushContent || {};
723
-
724
- // Map cta to onClickAction
725
- let onClickAction = null;
726
- if (cta) {
727
- if (cta?.type === EXTERNAL_URL) {
728
- onClickAction = {
729
- type: URL,
730
- url: cta?.actionLink || '',
731
- };
732
- } else {
733
- onClickAction = {
734
- type: cta?.type || SITE_URL,
735
- };
736
- }
737
- }
738
-
739
- // Map expandableDetails.ctas to ctas array
740
- let ctas = [];
741
- if (expandableDetails?.ctas && expandableDetails?.ctas?.length > 0) {
742
- ctas = expandableDetails?.ctas?.map((ctaItem) => ({
743
- actionText: ctaItem?.title || ctaItem?.actionText || '',
744
- type: URL,
745
- actionLink: ctaItem?.actionLink || '',
746
- }));
747
- }
748
-
749
- // Map expandableDetails.media to image if present
750
- let image = null;
751
- if (expandableDetails?.media && expandableDetails?.media?.length > 0) {
752
- const firstMedia = expandableDetails?.media[0];
753
- if (firstMedia?.type === WEBPUSH_MEDIA_TYPES.IMAGE && firstMedia?.url) {
754
- image = firstMedia?.url;
755
- }
756
- }
757
-
758
- creativesTemplateData = {
759
- type: channel,
760
- name: templateData?.messageSubject,
761
- versions: {
762
- base: {
763
- content: {
764
- webpush: {
765
- title: title || '',
766
- message: message || '',
767
- ...(brandIcon && { brandIcon }),
768
- ...(onClickAction && { onClickAction }),
769
- ...(ctas.length > 0 && { ctas }),
770
- ...(image && { image, mediaType: IMAGE }),
771
- },
772
- },
773
- },
774
- },
775
- definition: { accountId },
776
- };
777
- break;
778
- }
779
711
  default:
780
712
  break;
781
713
  }
@@ -1190,105 +1122,6 @@ export class Creatives extends React.Component {
1190
1122
  }
1191
1123
  }
1192
1124
  break;
1193
- case constants.WEBPUSH: {
1194
- if (template.value) {
1195
- const channelTemplate = template.value;
1196
- const accountId = get(channelTemplate, 'definition.accountId');
1197
- const webpushContent = get(channelTemplate, 'versions.base.content.webpush', {});
1198
- const {
1199
- title,
1200
- message,
1201
- brandIcon,
1202
- iconImageUrl: templateImageUrl ,
1203
- onClickAction,
1204
- ctas: templateCtas,
1205
- cta: templateCta,
1206
- expandableDetails: templateExpandableDetails,
1207
- image
1208
- } = webpushContent || {};
1209
-
1210
- const iconImageUrl = brandIcon || templateImageUrl || '';
1211
-
1212
- // Map onClickAction to cta
1213
- let cta = null;
1214
- if (onClickAction) {
1215
- if (onClickAction?.type === URL) {
1216
- cta = {
1217
- type: EXTERNAL_URL,
1218
- actionLink: onClickAction?.url || '',
1219
- };
1220
- } else {
1221
- cta = {
1222
- type: onClickAction?.type || SITE_URL,
1223
- actionLink: onClickAction?.url || '',
1224
- };
1225
- }
1226
- } else if (templateCta) {
1227
- // Fallback to cta if onClickAction is not present
1228
- cta = {
1229
- type: templateCta?.type || EXTERNAL_URL,
1230
- actionLink: templateCta?.actionLink || '',
1231
- };
1232
- }
1233
-
1234
- // Map ctas array to expandableDetails.ctas
1235
- let expandableDetails = null;
1236
- const hasCtas = templateCtas && templateCtas.length > 0;
1237
- const hasImage = image;
1238
-
1239
- if (hasCtas || hasImage) {
1240
- expandableDetails = {
1241
- media: [],
1242
- ctas: [],
1243
- };
1244
-
1245
- // Map image to expandableDetails.media
1246
- if (hasImage) {
1247
- expandableDetails.media = [{
1248
- url: image,
1249
- type: IMAGE,
1250
- }];
1251
- }
1252
-
1253
- // Map ctas array to expandableDetails.ctas
1254
- if (hasCtas) {
1255
- expandableDetails.ctas = templateCtas.map((ctaItem) => ({
1256
- type: ctaItem?.type === URL ? EXTERNAL_URL : ctaItem?.type,
1257
- action: ctaItem?.action || '',
1258
- title: ctaItem?.actionText || ctaItem?.title || '',
1259
- actionLink: ctaItem?.actionLink || '',
1260
- }));
1261
- }
1262
- } else if (templateExpandableDetails) {
1263
- // If expandableDetails already exists, use it
1264
- expandableDetails = {
1265
- media: templateExpandableDetails?.media || [],
1266
- ctas: templateExpandableDetails?.ctas || [],
1267
- };
1268
- }
1269
-
1270
- // Convert from creatives format to campaign format
1271
- templateData = {
1272
- channel,
1273
- messageContent: {
1274
- content: {
1275
- channel: constants.WEBPUSH,
1276
- accountId,
1277
- content: {
1278
- title: title || '',
1279
- message: message || '',
1280
- ...(iconImageUrl && { iconImageUrl }),
1281
- ...(cta && { cta }),
1282
- ...(expandableDetails && { expandableDetails }),
1283
- },
1284
- messageSubject: channelTemplate?.name ? channelTemplate.name : 'messageSubject',
1285
- offers: [],
1286
- },
1287
- },
1288
- };
1289
- }
1290
- break;
1291
- }
1292
1125
  default:
1293
1126
  break;
1294
1127
  }
@@ -1340,7 +1173,6 @@ export class Creatives extends React.Component {
1340
1173
  case constants.SMS:
1341
1174
  case constants.WECHAT:
1342
1175
  case constants.VIBER:
1343
- case constants.WEBPUSH:
1344
1176
  break;
1345
1177
  case constants.EMAIL:
1346
1178
  gtmDetails = {
@@ -338,10 +338,6 @@ export default defineMessages({
338
338
  id: `${scope}.rcsCreative`,
339
339
  defaultMessage: `RCS creative`,
340
340
  },
341
- "webPushTemplate": {
342
- id: `${scope}.webPushTemplate`,
343
- defaultMessage: `Web Push Template`,
344
- },
345
341
  "templateNameEmpty": {
346
342
  id: `${scope}.templateNameEmpty`,
347
343
  defaultMessage: `Template name cannot be empty`
@@ -24,24 +24,6 @@ jest.mock('../../../v2Components/FormBuilder', () => ({
24
24
  ),
25
25
  }));
26
26
 
27
- jest.mock('../../WebPush/Create/preview/DevicePreviewContent', () => ({
28
- __esModule: true,
29
- default: (props) => (
30
- <div className="DevicePreviewContent-mock" {...props}>
31
- DevicePreviewContent
32
- </div>
33
- ),
34
- }));
35
-
36
- jest.mock('../../WebPush', () => ({
37
- __esModule: true,
38
- default: (props) => (
39
- <div className="WebPush-mock" {...props}>
40
- WebPush
41
- </div>
42
- ),
43
- }));
44
-
45
27
  describe('Test SlideBoxContent container', () => {
46
28
  const onCreateComplete = jest.fn();
47
29
  let renderedComponent;
@@ -718,196 +700,4 @@ describe('Test SlideBoxContent container', () => {
718
700
  expect(renderedComponent).toMatchSnapshot();
719
701
  });
720
702
  });
721
-
722
- describe('WebPush channel functionality', () => {
723
- it('Should render correct component for webpush channel create mode', () => {
724
- renderFunction('WEBPUSH', 'createTemplate', { mode: 'create' });
725
- expect(renderedComponent).toMatchSnapshot();
726
- });
727
-
728
- it('Should render correct component for webpush channel edit mode', () => {
729
- const webpushEditTemplateData = {
730
- type: 'WEBPUSH',
731
- _id: '123',
732
- versions: {
733
- base: {
734
- content: {
735
- webpush: {
736
- title: 'Test Title',
737
- message: 'Test Message',
738
- }
739
- }
740
- }
741
- }
742
- };
743
- renderFunction('WEBPUSH', 'editTemplate', webpushEditTemplateData);
744
- expect(renderedComponent).toMatchSnapshot();
745
- });
746
-
747
- it('Should render correct component for webpush channel preview mode with all fields', () => {
748
- const webpushPreviewTemplateData = {
749
- type: 'WEBPUSH',
750
- versions: {
751
- base: {
752
- content: {
753
- webpush: {
754
- title: 'Test Notification Title',
755
- message: 'Test notification body text',
756
- image: 'https://example.com/image.jpg',
757
- brandIcon: 'https://example.com/brand-icon.png',
758
- onClickAction: {
759
- url: 'https://example.com'
760
- }
761
- }
762
- }
763
- }
764
- }
765
- };
766
- renderFunction('WEBPUSH', 'preview', webpushPreviewTemplateData);
767
- expect(renderedComponent).toMatchSnapshot();
768
- });
769
-
770
- it('Should render correct component for webpush channel preview mode with minimal fields', () => {
771
- const webpushPreviewTemplateData = {
772
- type: 'WEBPUSH',
773
- versions: {
774
- base: {
775
- content: {
776
- webpush: {
777
- title: 'Test Title',
778
- message: 'Test Message'
779
- }
780
- }
781
- }
782
- }
783
- };
784
- renderFunction('WEBPUSH', 'preview', webpushPreviewTemplateData);
785
- expect(renderedComponent).toMatchSnapshot();
786
- });
787
-
788
- it('Should render correct component for webpush channel preview mode with empty fields', () => {
789
- const webpushPreviewTemplateData = {
790
- type: 'WEBPUSH',
791
- versions: {
792
- base: {
793
- content: {
794
- webpush: {}
795
- }
796
- }
797
- }
798
- };
799
- renderFunction('WEBPUSH', 'preview', webpushPreviewTemplateData);
800
- expect(renderedComponent).toMatchSnapshot();
801
- });
802
-
803
- it('Should render correct component for webpush channel preview mode with missing onClickAction url', () => {
804
- const webpushPreviewTemplateData = {
805
- type: 'WEBPUSH',
806
- versions: {
807
- base: {
808
- content: {
809
- webpush: {
810
- title: 'Test Title',
811
- message: 'Test Message',
812
- onClickAction: {}
813
- }
814
- }
815
- }
816
- }
817
- };
818
- renderFunction('WEBPUSH', 'preview', webpushPreviewTemplateData);
819
- expect(renderedComponent).toMatchSnapshot();
820
- });
821
-
822
- it('Should render correct component for webpush channel preview mode with null onClickAction', () => {
823
- const webpushPreviewTemplateData = {
824
- type: 'WEBPUSH',
825
- versions: {
826
- base: {
827
- content: {
828
- webpush: {
829
- title: 'Test Title',
830
- message: 'Test Message',
831
- onClickAction: null
832
- }
833
- }
834
- }
835
- }
836
- };
837
- renderFunction('WEBPUSH', 'preview', webpushPreviewTemplateData);
838
- expect(renderedComponent).toMatchSnapshot();
839
- });
840
-
841
- it('Should handle supportedTags prop in webpush create mode', () => {
842
- renderFunction('WEBPUSH', 'createTemplate', { mode: 'create' }, {
843
- supportedTags: ['tag1', 'tag2']
844
- });
845
- expect(renderedComponent).toMatchSnapshot();
846
- });
847
-
848
- it('Should handle supportedTags prop in webpush edit mode', () => {
849
- const webpushEditTemplateData = {
850
- type: 'WEBPUSH',
851
- _id: '123',
852
- versions: {
853
- base: {
854
- content: {
855
- webpush: {
856
- title: 'Test Title',
857
- message: 'Test Message',
858
- }
859
- }
860
- }
861
- }
862
- };
863
- renderFunction('WEBPUSH', 'editTemplate', webpushEditTemplateData, {
864
- supportedTags: ['tag1', 'tag2']
865
- });
866
- expect(renderedComponent).toMatchSnapshot();
867
- });
868
-
869
- it('Should handle webpush create mode with all props', () => {
870
- renderFunction('WEBPUSH', 'createTemplate', { mode: 'create' }, {
871
- isFullMode: true,
872
- handleClose: jest.fn(),
873
- onCreateComplete: jest.fn(),
874
- creativesMode: 'test',
875
- getDefaultTags: 'outbound',
876
- forwardedTags: {},
877
- supportedTags: ['tag1'],
878
- selectedOfferDetails: [],
879
- eventContextTags: {}
880
- });
881
- expect(renderedComponent).toMatchSnapshot();
882
- });
883
-
884
- it('Should handle webpush edit mode with all props', () => {
885
- const webpushEditTemplateData = {
886
- type: 'WEBPUSH',
887
- _id: '123',
888
- versions: {
889
- base: {
890
- content: {
891
- webpush: {
892
- title: 'Test Title',
893
- message: 'Test Message',
894
- }
895
- }
896
- }
897
- }
898
- };
899
- renderFunction('WEBPUSH', 'editTemplate', webpushEditTemplateData, {
900
- isFullMode: true,
901
- handleClose: jest.fn(),
902
- onCreateComplete: jest.fn(),
903
- creativesMode: 'test',
904
- getDefaultTags: 'outbound',
905
- forwardedTags: {},
906
- supportedTags: ['tag1'],
907
- selectedOfferDetails: [],
908
- eventContextTags: {}
909
- });
910
- expect(renderedComponent).toMatchSnapshot();
911
- });
912
- });
913
703
  });