@capillarytech/creatives-library 8.0.264 → 8.0.265

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 (158) 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/tagValidations.js +1 -2
  6. package/utils/tests/transformerUtils.test.js +0 -297
  7. package/utils/transformerUtils.js +0 -40
  8. package/v2Components/CapImageUpload/constants.js +0 -2
  9. package/v2Components/CapImageUpload/index.js +16 -65
  10. package/v2Components/CapImageUpload/index.scss +1 -4
  11. package/v2Components/CapImageUpload/messages.js +1 -5
  12. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +2 -2
  13. package/v2Components/FormBuilder/index.js +8 -8
  14. package/v2Containers/App/constants.js +0 -5
  15. package/v2Containers/CreativesContainer/SlideBoxContent.js +2 -57
  16. package/v2Containers/CreativesContainer/SlideBoxHeader.js +0 -1
  17. package/v2Containers/CreativesContainer/constants.js +0 -3
  18. package/v2Containers/CreativesContainer/index.js +0 -168
  19. package/v2Containers/CreativesContainer/messages.js +0 -4
  20. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
  21. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -304
  22. package/v2Containers/Email/index.js +7 -3
  23. package/v2Containers/FTP/index.js +1 -1
  24. package/v2Containers/InApp/index.js +0 -1
  25. package/v2Containers/Line/Container/Text/index.js +0 -1
  26. package/v2Containers/MobilePushNew/index.js +0 -1
  27. package/v2Containers/Rcs/index.js +0 -3
  28. package/v2Containers/SmsTrai/Edit/index.js +0 -1
  29. package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
  30. package/v2Containers/Templates/_templates.scss +0 -205
  31. package/v2Containers/Templates/actions.js +1 -2
  32. package/v2Containers/Templates/constants.js +0 -1
  33. package/v2Containers/Templates/index.js +34 -274
  34. package/v2Containers/Templates/messages.js +0 -24
  35. package/v2Containers/Templates/reducer.js +0 -2
  36. package/v2Containers/Templates/tests/index.test.js +0 -10
  37. package/v2Containers/TemplatesV2/index.js +7 -15
  38. package/v2Containers/TemplatesV2/messages.js +0 -4
  39. package/v2Containers/Viber/index.js +0 -1
  40. package/v2Containers/Whatsapp/index.js +0 -1
  41. package/v2Containers/Zalo/index.js +0 -1
  42. package/v2Containers/Zalo/tests/index.test.js +5 -1
  43. package/utils/imageUrlUpload.js +0 -141
  44. package/v2Components/CapImageUrlUpload/constants.js +0 -26
  45. package/v2Components/CapImageUrlUpload/index.js +0 -365
  46. package/v2Components/CapImageUrlUpload/index.scss +0 -35
  47. package/v2Components/CapImageUrlUpload/messages.js +0 -47
  48. package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
  49. package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
  50. package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
  51. package/v2Containers/WebPush/Create/components/ButtonList.js +0 -145
  52. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -164
  53. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -463
  54. package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
  55. package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
  56. package/v2Containers/WebPush/Create/components/MediaSection.js +0 -142
  57. package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
  58. package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
  59. package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
  60. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
  61. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
  62. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
  63. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
  64. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -86
  65. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
  66. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
  67. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
  68. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
  69. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
  70. package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
  71. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
  72. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
  73. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -633
  74. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
  75. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
  76. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -78
  77. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -138
  78. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
  79. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
  80. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
  81. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
  82. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
  83. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
  84. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
  85. package/v2Containers/WebPush/Create/index.js +0 -1148
  86. package/v2Containers/WebPush/Create/index.scss +0 -134
  87. package/v2Containers/WebPush/Create/messages.js +0 -211
  88. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
  89. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
  90. package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
  91. package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
  92. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -25
  93. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -155
  94. package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
  95. package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
  96. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +0 -9
  97. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
  98. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  99. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  100. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
  101. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
  102. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +0 -9
  103. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
  104. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
  105. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
  106. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +0 -9
  107. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
  108. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -51
  109. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -145
  110. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
  111. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
  112. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
  113. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
  114. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
  115. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
  116. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -85
  117. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
  118. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
  119. package/v2Containers/WebPush/Create/preview/constants.js +0 -637
  120. package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
  121. package/v2Containers/WebPush/Create/preview/preview.scss +0 -358
  122. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
  123. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
  124. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
  125. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
  126. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -47
  127. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
  128. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
  129. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
  130. package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -207
  131. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
  132. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
  133. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
  134. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
  135. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
  136. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
  137. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
  138. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
  139. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
  140. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
  141. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
  142. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -129
  143. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
  144. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
  145. package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
  146. package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
  147. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
  148. package/v2Containers/WebPush/Create/utils/validation.js +0 -76
  149. package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
  150. package/v2Containers/WebPush/actions.js +0 -60
  151. package/v2Containers/WebPush/constants.js +0 -132
  152. package/v2Containers/WebPush/index.js +0 -2
  153. package/v2Containers/WebPush/reducer.js +0 -104
  154. package/v2Containers/WebPush/sagas.js +0 -119
  155. package/v2Containers/WebPush/selectors.js +0 -65
  156. package/v2Containers/WebPush/tests/reducer.test.js +0 -863
  157. package/v2Containers/WebPush/tests/sagas.test.js +0 -566
  158. package/v2Containers/WebPush/tests/selectors.test.js +0 -960
@@ -51,7 +51,6 @@ export const EXTENDED_TAG = 'ExtendedTagMessage';
51
51
  export const BADGES_UI_ENABLED = 'BADGES_UI_ENABLED';
52
52
  export const JP_LOCALE_HIDE_FEATURE = 'JP_LOCALE_HIDE_FEATURE';
53
53
  export const ENABLE_WECHAT = 'ENABLE_WECHAT';
54
- export const ENABLE_WEBPUSH = 'ENABLE_WEBPUSH';
55
54
  export const ENABLE_CUSTOMER_BARCODE_TAG = 'ENABLE_CUSTOMER_BARCODE_TAG';
56
55
  export const EMAIL_UNSUBSCRIBE_TAG_MANDATORY = 'EMAIL_UNSUBSCRIBE_TAG_MANDATORY';
57
56
  export const ENABLE_AI_SUGGESTIONS = 'ENABLE_AI_SUGGESTIONS';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "8.0.264",
4
+ "version": "8.0.265",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",
package/services/api.js CHANGED
@@ -287,11 +287,6 @@ export const createMobilePushTemplateV2 = (template) => {
287
287
  return request(url, getAPICallObject('POST', template));
288
288
  };
289
289
 
290
- export const createWebPushTemplate = (template) => {
291
- const url = `${API_ENDPOINT}/templates/WEBPUSH`;
292
- return request(url, getAPICallObject('POST', template));
293
- };
294
-
295
290
  export const duplicateTemplate = ({id, channel}) => {
296
291
  const url = `${API_ENDPOINT}/templates/duplicate/${id}/${channel}`;
297
292
  return request(url, getAPICallObject('GET'));
package/utils/common.js CHANGED
@@ -21,7 +21,6 @@ import {
21
21
  EMAIL_UNSUBSCRIBE_TAG_MANDATORY,
22
22
  BADGES_ISSUE,
23
23
  ENABLE_WECHAT,
24
- ENABLE_WEBPUSH,
25
24
  LIQUID_SUPPORT,
26
25
  ENABLE_NEW_MPUSH
27
26
  } from '../constants/unified';
@@ -117,11 +116,6 @@ export const hasWechatFeatureEnabled = Auth.hasFeatureAccess.bind(
117
116
  ENABLE_WECHAT,
118
117
  );
119
118
 
120
- export const hasWebPushFeatureEnabled = Auth.hasFeatureAccess.bind(
121
- null,
122
- ENABLE_WEBPUSH,
123
- );
124
-
125
119
  export const hasCustomerBarcodeFeatureEnabled = Auth.hasFeatureAccess.bind(
126
120
  null,
127
121
  ENABLE_CUSTOMER_BARCODE_TAG,
@@ -187,7 +187,6 @@ export const validateTags = ({
187
187
  location,
188
188
  tagModule,
189
189
  eventContextTags,
190
- isFullMode,
191
190
  }) => {
192
191
  const tags = tagsParam;
193
192
  const injectedTags = transformInjectedTags(injectedTagsParams);
@@ -201,7 +200,7 @@ export const validateTags = ({
201
200
  unsupportedTags: [],
202
201
  isBraceError: false,
203
202
  };
204
- if (tags && tags.length && !isFullMode) {
203
+ if (tags && tags.length) {
205
204
  lodashForEach(tags, ({
206
205
  definition: {
207
206
  supportedModules,
@@ -15,7 +15,6 @@ import {
15
15
  RCS,
16
16
  LINE,
17
17
  VIBER,
18
- WEBPUSH,
19
18
  } from "../../v2Containers/CreativesContainer/constants";
20
19
 
21
20
  describe("transformerUtils", () => {
@@ -1183,302 +1182,6 @@ describe("transformerUtils", () => {
1183
1182
  });
1184
1183
  });
1185
1184
 
1186
- describe("WebPush payload transformation", () => {
1187
- it("should transform WebPush data correctly with minimal data", () => {
1188
- const mockData = {
1189
- channel: WEBPUSH,
1190
- messageSubject: "test webpush notification"
1191
- };
1192
-
1193
- const result = transformChannelPayload(mockData);
1194
-
1195
- expect(result.centralCommsPayload).toBeDefined();
1196
- expect(result.centralCommsPayload.channel).toEqual(WEBPUSH);
1197
- expect(result.centralCommsPayload.webpushMessageContent.messageSubject).toEqual(
1198
- "test webpush notification"
1199
- );
1200
- expect(result.centralCommsPayload.clientName).toEqual("VENENO");
1201
- });
1202
-
1203
- it("should transform WebPush data with all options", () => {
1204
- const mockData = {
1205
- channel: WEBPUSH,
1206
- messageSubject: "test webpush notification",
1207
- messageContent: {
1208
- content: {
1209
- accountId: 12345,
1210
- content: {
1211
- title: "WebPush Title",
1212
- message: "WebPush Message",
1213
- iconImageUrl: "https://example.com/icon.png",
1214
- cta: {
1215
- actionLink: "https://example.com/action",
1216
- actionText: "Click Here"
1217
- },
1218
- expandableDetails: {
1219
- style: "BIG_TEXT",
1220
- message: "Expanded Message"
1221
- }
1222
- },
1223
- offers: [
1224
- { id: "offer-1", title: "Offer 1" },
1225
- { id: "offer-2", title: "Offer 2" }
1226
- ]
1227
- }
1228
- }
1229
- };
1230
-
1231
- const options = {
1232
- loyaltyMetaData: {
1233
- actionId: "action-123",
1234
- ouId: 456,
1235
- clientName: "TestClient",
1236
- module: "TestModule",
1237
- transformedMessageDetails: {
1238
- webpushDeliverySettings: {
1239
- sendDate: "2023-01-01",
1240
- priority: "HIGH"
1241
- }
1242
- }
1243
- }
1244
- };
1245
-
1246
- const result = transformChannelPayload(mockData, options);
1247
-
1248
- // Check base payload
1249
- expect(result.centralCommsPayload.sourceEntityId).toEqual("action-123");
1250
- expect(result.centralCommsPayload.ouId).toEqual(456);
1251
- expect(result.centralCommsPayload.clientName).toEqual("TestClient");
1252
- expect(result.centralCommsPayload.module).toEqual("TestModule");
1253
-
1254
- // Check WebPush-specific content
1255
- expect(result.centralCommsPayload.webpushMessageContent.channel).toEqual(WEBPUSH);
1256
- expect(result.centralCommsPayload.webpushMessageContent.accountId).toEqual(12345);
1257
- expect(result.centralCommsPayload.webpushMessageContent.messageSubject).toEqual(
1258
- "test webpush notification"
1259
- );
1260
- expect(result.centralCommsPayload.webpushMessageContent.content.title).toEqual(
1261
- "WebPush Title"
1262
- );
1263
- expect(result.centralCommsPayload.webpushMessageContent.content.message).toEqual(
1264
- "WebPush Message"
1265
- );
1266
- expect(result.centralCommsPayload.webpushMessageContent.content.iconImageUrl).toEqual(
1267
- "https://example.com/icon.png"
1268
- );
1269
- expect(result.centralCommsPayload.webpushMessageContent.content.cta).toEqual({
1270
- actionLink: "https://example.com/action",
1271
- actionText: "Click Here"
1272
- });
1273
- expect(result.centralCommsPayload.webpushMessageContent.content.expandableDetails).toEqual({
1274
- style: "BIG_TEXT",
1275
- message: "Expanded Message"
1276
- });
1277
- expect(result.centralCommsPayload.webpushMessageContent.offers).toEqual([
1278
- { id: "offer-1", title: "Offer 1" },
1279
- { id: "offer-2", title: "Offer 2" }
1280
- ]);
1281
-
1282
- // Check delivery settings
1283
- expect(result.centralCommsPayload.webpushDeliverySettings).toEqual({
1284
- sendDate: "2023-01-01",
1285
- priority: "HIGH"
1286
- });
1287
- });
1288
-
1289
- it("should handle missing messageContent structure", () => {
1290
- const mockData = {
1291
- channel: WEBPUSH,
1292
- messageSubject: "test webpush notification"
1293
- };
1294
-
1295
- const result = transformChannelPayload(mockData);
1296
-
1297
- expect(result.centralCommsPayload.webpushMessageContent.accountId).toEqual(0);
1298
- expect(result.centralCommsPayload.webpushMessageContent.content.title).toEqual("");
1299
- expect(result.centralCommsPayload.webpushMessageContent.content.message).toEqual("");
1300
- expect(result.centralCommsPayload.webpushMessageContent.offers).toEqual([]);
1301
- });
1302
-
1303
- it("should handle missing content properties", () => {
1304
- const mockData = {
1305
- channel: WEBPUSH,
1306
- messageSubject: "test webpush notification",
1307
- messageContent: {
1308
- content: {
1309
- accountId: 12345,
1310
- content: {}
1311
- }
1312
- }
1313
- };
1314
-
1315
- const result = transformChannelPayload(mockData);
1316
-
1317
- expect(result.centralCommsPayload.webpushMessageContent.accountId).toEqual(12345);
1318
- expect(result.centralCommsPayload.webpushMessageContent.content.title).toEqual("");
1319
- expect(result.centralCommsPayload.webpushMessageContent.content.message).toEqual("");
1320
- expect(result.centralCommsPayload.webpushMessageContent.content.iconImageUrl).toBeUndefined();
1321
- expect(result.centralCommsPayload.webpushMessageContent.content.cta).toBeUndefined();
1322
- expect(result.centralCommsPayload.webpushMessageContent.content.expandableDetails).toBeUndefined();
1323
- });
1324
-
1325
- it("should conditionally include iconImageUrl only when present", () => {
1326
- const mockDataWithoutIcon = {
1327
- channel: WEBPUSH,
1328
- messageSubject: "test",
1329
- messageContent: {
1330
- content: {
1331
- content: {
1332
- title: "Title",
1333
- message: "Message"
1334
- }
1335
- }
1336
- }
1337
- };
1338
-
1339
- const resultWithoutIcon = transformChannelPayload(mockDataWithoutIcon);
1340
- expect(resultWithoutIcon.centralCommsPayload.webpushMessageContent.content.iconImageUrl).toBeUndefined();
1341
-
1342
- const mockDataWithIcon = {
1343
- channel: WEBPUSH,
1344
- messageSubject: "test",
1345
- messageContent: {
1346
- content: {
1347
- content: {
1348
- title: "Title",
1349
- message: "Message",
1350
- iconImageUrl: "https://example.com/icon.png"
1351
- }
1352
- }
1353
- }
1354
- };
1355
-
1356
- const resultWithIcon = transformChannelPayload(mockDataWithIcon);
1357
- expect(resultWithIcon.centralCommsPayload.webpushMessageContent.content.iconImageUrl).toEqual(
1358
- "https://example.com/icon.png"
1359
- );
1360
- });
1361
-
1362
- it("should conditionally include cta only when present", () => {
1363
- const mockDataWithoutCta = {
1364
- channel: WEBPUSH,
1365
- messageSubject: "test",
1366
- messageContent: {
1367
- content: {
1368
- content: {
1369
- title: "Title",
1370
- message: "Message"
1371
- }
1372
- }
1373
- }
1374
- };
1375
-
1376
- const resultWithoutCta = transformChannelPayload(mockDataWithoutCta);
1377
- expect(resultWithoutCta.centralCommsPayload.webpushMessageContent.content.cta).toBeUndefined();
1378
-
1379
- const mockDataWithCta = {
1380
- channel: WEBPUSH,
1381
- messageSubject: "test",
1382
- messageContent: {
1383
- content: {
1384
- content: {
1385
- title: "Title",
1386
- message: "Message",
1387
- cta: {
1388
- actionLink: "https://example.com",
1389
- actionText: "Click"
1390
- }
1391
- }
1392
- }
1393
- }
1394
- };
1395
-
1396
- const resultWithCta = transformChannelPayload(mockDataWithCta);
1397
- expect(resultWithCta.centralCommsPayload.webpushMessageContent.content.cta).toEqual({
1398
- actionLink: "https://example.com",
1399
- actionText: "Click"
1400
- });
1401
- });
1402
-
1403
- it("should conditionally include expandableDetails only when present", () => {
1404
- const mockDataWithoutExpandable = {
1405
- channel: WEBPUSH,
1406
- messageSubject: "test",
1407
- messageContent: {
1408
- content: {
1409
- content: {
1410
- title: "Title",
1411
- message: "Message"
1412
- }
1413
- }
1414
- }
1415
- };
1416
-
1417
- const resultWithoutExpandable = transformChannelPayload(mockDataWithoutExpandable);
1418
- expect(resultWithoutExpandable.centralCommsPayload.webpushMessageContent.content.expandableDetails).toBeUndefined();
1419
-
1420
- const mockDataWithExpandable = {
1421
- channel: WEBPUSH,
1422
- messageSubject: "test",
1423
- messageContent: {
1424
- content: {
1425
- content: {
1426
- title: "Title",
1427
- message: "Message",
1428
- expandableDetails: {
1429
- style: "BIG_TEXT",
1430
- message: "Expanded"
1431
- }
1432
- }
1433
- }
1434
- }
1435
- };
1436
-
1437
- const resultWithExpandable = transformChannelPayload(mockDataWithExpandable);
1438
- expect(resultWithExpandable.centralCommsPayload.webpushMessageContent.content.expandableDetails).toEqual({
1439
- style: "BIG_TEXT",
1440
- message: "Expanded"
1441
- });
1442
- });
1443
-
1444
- it("should handle undefined webpushDeliverySettings", () => {
1445
- const mockData = {
1446
- channel: WEBPUSH,
1447
- messageSubject: "test webpush notification"
1448
- };
1449
-
1450
- const options = {
1451
- loyaltyMetaData: {
1452
- transformedMessageDetails: {}
1453
- }
1454
- };
1455
-
1456
- const result = transformChannelPayload(mockData, options);
1457
-
1458
- expect(result.centralCommsPayload.webpushDeliverySettings).toEqual({});
1459
- });
1460
-
1461
- it("should handle empty offers array", () => {
1462
- const mockData = {
1463
- channel: WEBPUSH,
1464
- messageSubject: "test",
1465
- messageContent: {
1466
- content: {
1467
- content: {
1468
- title: "Title",
1469
- message: "Message"
1470
- },
1471
- offers: []
1472
- }
1473
- }
1474
- };
1475
-
1476
- const result = transformChannelPayload(mockData);
1477
-
1478
- expect(result.centralCommsPayload.webpushMessageContent.offers).toEqual([]);
1479
- });
1480
- });
1481
-
1482
1185
  describe("getTemplateDiffState", () => {
1483
1186
  it("should return false for unsupported channel", () => {
1484
1187
  const result = getTemplateDiffState("UNSUPPORTED_CHANNEL", {}, {});
@@ -10,7 +10,6 @@ import {
10
10
  RCS,
11
11
  LINE,
12
12
  VIBER,
13
- WEBPUSH,
14
13
  EMF,
15
14
  VENENO,
16
15
  TEXT,
@@ -64,8 +63,6 @@ export const transformChannelPayload = (data, options = {}) => {
64
63
  return transformLinePayload(data, options);
65
64
  case VIBER:
66
65
  return transformViberPayload(data, options);
67
- case WEBPUSH:
68
- return transformWebpushPayload(data, options);
69
66
  default:
70
67
  return data; // Return unchanged for unsupported channels
71
68
  }
@@ -320,43 +317,6 @@ const transformViberPayload = (viberData, options = {}) => {
320
317
  return payload;
321
318
  };
322
319
 
323
- /**
324
- * Transforms WebPush data to the required payload format
325
- * @param {Object} webpushData - Current WebPush data
326
- * @param {Object} options - Additional options (ouId, sourceEntityId, etc.)
327
- * @returns {Object} - Transformed WebPush payload
328
- */
329
- const transformWebpushPayload = (webpushData, options = {}) => {
330
- const { loyaltyMetaData = {} } = options;
331
- const { transformedMessageDetails = {} } = loyaltyMetaData;
332
- const { webpushDeliverySettings = {} } = transformedMessageDetails || {};
333
-
334
- // Get base payload structure
335
- const payload = createBasePayload(WEBPUSH, loyaltyMetaData);
336
-
337
- // Extract webpush content from messageContent.content.content structure
338
- const webpushContent = webpushData?.messageContent?.content?.content || {};
339
- const accountId = webpushData?.messageContent?.content?.accountId || 0;
340
-
341
- // Add WebPush-specific properties
342
- payload.centralCommsPayload.webpushMessageContent = {
343
- channel: WEBPUSH,
344
- accountId,
345
- content: {
346
- title: webpushContent?.title || '',
347
- message: webpushContent?.message || '',
348
- ...(webpushContent?.iconImageUrl && { iconImageUrl: webpushContent.iconImageUrl }),
349
- ...(webpushContent?.cta && { cta: webpushContent.cta }),
350
- ...(webpushContent?.expandableDetails && { expandableDetails: webpushContent.expandableDetails }),
351
- },
352
- messageSubject: webpushData?.messageSubject || "",
353
- offers: webpushData?.messageContent?.content?.offers || [],
354
- };
355
- payload.centralCommsPayload.webpushDeliverySettings = webpushDeliverySettings;
356
-
357
- return payload;
358
- };
359
-
360
320
  // Checks if the template has changed
361
321
  export const getTemplateDiffState = (channel, oldData, newData) => {
362
322
  switch (channel.toUpperCase()) {
@@ -4,6 +4,4 @@ export const MAX_SUPPORTED_IMAGE_SIZE = {
4
4
  INAPP: 5,
5
5
  WHATSAPP: 5,
6
6
  MOBILEPUSH: 2,
7
- WEBPUSH: 5,
8
- WEBPUSH_BRAND_ICON: 1
9
7
  };
@@ -17,18 +17,17 @@ import {
17
17
  CapImage,
18
18
  CapError,
19
19
  } from '@capillarytech/cap-ui-library';
20
- import { injectIntl, FormattedMessage, intlShape } from 'react-intl';
20
+ import { injectIntl, FormattedMessage, intlShape} from 'react-intl';
21
21
  import { isEmpty, get } from 'lodash';
22
22
  import './index.scss';
23
23
  import Gallery from '../../v2Containers/Assets/Gallery';
24
24
  import { MAX_SUPPORTED_IMAGE_SIZE } from './constants';
25
25
  import {
26
- FACEBOOK, INAPP, RCS, WHATSAPP, VIBER, WEBPUSH, WEBPUSH_BRAND_ICON
26
+ FACEBOOK, INAPP, RCS, WHATSAPP, VIBER,
27
27
  } from "../../v2Containers/CreativesContainer/constants";
28
28
 
29
29
  import messages from './messages';
30
30
  import { MOBILEPUSH } from '../CapVideoUpload/constants';
31
- import { CAP_SPACE_16 } from '@capillarytech/cap-ui-library/styled/variables';
32
31
  function CapImageUpload(props) {
33
32
  const {
34
33
  intl,
@@ -51,8 +50,6 @@ function CapImageUpload(props) {
51
50
  channelSpecificStyle,
52
51
  showReUploadButton = true,
53
52
  disableAutoRestore = false, // New prop to disable automatic restoration
54
- recommendedDimensions, // Array of {width, height} objects for recommended dimensions
55
- disabled = false,
56
53
  } = props;
57
54
  const {
58
55
  formatMessage,
@@ -75,7 +72,7 @@ function CapImageUpload(props) {
75
72
  const [isImageError, updateImageErrorMessage] = useState(false);
76
73
  const [isDrawerRequired, updateDrawerRequirement] = useState(false);
77
74
 
78
- const { CapHeadingSpan } = CapHeading;
75
+ const {CapHeadingSpan} = CapHeading;
79
76
  const ImageComponent = useCallback(
80
77
  () => (
81
78
  <>
@@ -94,7 +91,7 @@ function CapImageUpload(props) {
94
91
 
95
92
  const WithLabel = LabelHOC(ImageComponent);
96
93
 
97
- const uploadImages = useCallback((e, { files }) => {
94
+ const uploadImages = useCallback((e, {files}) => {
98
95
  if (e) {
99
96
  e.preventDefault();
100
97
  }
@@ -112,13 +109,13 @@ function CapImageUpload(props) {
112
109
  height: img.height,
113
110
  error: file && (file.size / (1e+6) > 5), // Checking if file exists and its size is greater than 5MB (5 * 10^6 bytes)
114
111
  };
115
- submitAction({ file, type: 'image', fileParams }, incorrectFile);
112
+ submitAction({file, type: 'image', fileParams}, incorrectFile);
116
113
  };
117
114
  img.onerror = () => {
118
115
  const fileParams = {
119
116
  error: true,
120
117
  };
121
- submitAction({ fileParams }, incorrectFile);
118
+ submitAction({fileParams}, incorrectFile);
122
119
  };
123
120
  if (e) {
124
121
  const event = e;
@@ -126,7 +123,7 @@ function CapImageUpload(props) {
126
123
  }
127
124
  }, []);
128
125
 
129
- const rcsValidation = useCallback((incorrectFile, data, size, height, width, error) => {
126
+ const rcsValidation = useCallback((incorrectFile, data, size, height, width, error) => {
130
127
  if (incorrectFile || size < minImgSize || size > imgSize || height !== imgHeight || width !== imgWidth || error) {
131
128
  updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
132
129
  } else {
@@ -149,19 +146,6 @@ function CapImageUpload(props) {
149
146
  const { height, width, error } = fileParams || {};
150
147
  if (channel === RCS) {
151
148
  rcsValidation(incorrectFile, data, size, height, width, error);
152
- } else if ([WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel)) {
153
- // For WEBPUSH, only validate file extension, size, and format - no dimension validation
154
- if (incorrectFile || size > imgSize || error) {
155
- updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
156
- } else {
157
- updateImageErrorMessage('');
158
- uploadAsset(
159
- data.file,
160
- data.type,
161
- data.fileParams,
162
- index,
163
- );
164
- }
165
149
  } else if (incorrectFile || size > imgSize || height > imgHeight || width > imgWidth || error) {
166
150
  updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
167
151
  } else {
@@ -176,7 +160,7 @@ function CapImageUpload(props) {
176
160
  }, [isImageError]);
177
161
 
178
162
  const capUploaderCustomRequest = useCallback((uploadData) => {
179
- uploadImages(undefined, { files: [uploadData.file] });
163
+ uploadImages(undefined, {files: [uploadData.file]});
180
164
  }, [uploadImages]);
181
165
 
182
166
  const setDrawerVisibility = useCallback((drawervisibleFlag) => updateDrawerRequirement(drawervisibleFlag), [isDrawerRequired]);
@@ -197,27 +181,19 @@ function CapImageUpload(props) {
197
181
  secure_file_path: image, width, height, file_size: size,
198
182
  } = get(imageTemplate, 'metaInfo', {});
199
183
  updateDrawerRequirement(false);
200
- // For WEBPUSH, skip dimension validation - only check extension, size
201
- if ([WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel)) {
202
- if (!allowedExtensionsRegex.test(image) || size > imgSize) {
203
- updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
204
- } else {
205
- updateImageErrorMessage('');
206
- updateImageSrc(image);
207
- }
208
- } else if (!allowedExtensionsRegex.test(image) || height > imgHeight || width > imgWidth || size > imgSize) {
184
+ if (!allowedExtensionsRegex.test(image) || height > imgHeight || width > imgWidth || size > imgSize ) {
209
185
  updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
210
186
  } else {
211
187
  updateImageErrorMessage('');
212
188
  updateImageSrc(image);
213
189
  }
214
- }, [isImageError, isDrawerRequired, channel, allowedExtensionsRegex, imgSize, formatMessage]);
190
+ }, [isImageError, isDrawerRequired]);
215
191
 
216
192
  const getGalleryDrawerContent = useCallback(() => {
217
193
  const locationGallery = {
218
194
  pathname: `/assets`,
219
195
  search: '',
220
- query: !isFullMode ? { type: 'embedded', module: 'library' } : {},
196
+ query: !isFullMode ? {type: 'embedded', module: 'library'} : {},
221
197
  };
222
198
  return (
223
199
  <>
@@ -254,7 +230,6 @@ function CapImageUpload(props) {
254
230
  customRequest={capUploaderCustomRequest}
255
231
  className="form-builder-dragger grey-background"
256
232
  showUploadList={!isImageError}
257
- disabled={disabled}
258
233
  >
259
234
  <CapHeading className="dragger-title" type="h7">
260
235
  <FormattedMessage {...messages.dragAndDrop} />
@@ -262,7 +237,7 @@ function CapImageUpload(props) {
262
237
  <CapHeading className="dragger-or" type="label6">
263
238
  <FormattedMessage {...messages.or} />
264
239
  </CapHeading>
265
- <CapButton className="dragger-button upload-image" type="secondary" disabled={disabled} tabIndex={disabled ? -1 : undefined}>
240
+ <CapButton className="dragger-button upload-image" type="secondary">
266
241
  <FormattedMessage {...messages.uploadComputer} />
267
242
  </CapButton>
268
243
  {channel !== WHATSAPP && (
@@ -270,8 +245,6 @@ function CapImageUpload(props) {
270
245
  className="dragger-button gallery-select"
271
246
  type="secondary"
272
247
  onClick={onGalleryClick}
273
- disabled={disabled}
274
- tabIndex={disabled ? -1 : undefined}
275
248
  >
276
249
  <FormattedMessage {...messages.uploadGallery} />
277
250
  </CapButton>
@@ -289,15 +262,13 @@ function CapImageUpload(props) {
289
262
  className="dragger-button re-upload"
290
263
  type="flat"
291
264
  onClick={onReUpload}
292
- style={channelSpecificStyle ? { marginTop: `-${CAP_SPACE_16}` } : {}}
293
- disabled={disabled}
294
- tabIndex={disabled ? -1 : undefined}
265
+ style={channelSpecificStyle ? { marginTop: '-16px'} : {}}
295
266
  >
296
267
  <FormattedMessage {...messages.imageReUpload} />
297
268
  </CapButton>
298
269
  );
299
270
  }
300
- }, [isImageError, imageSrc, disabled, showReUploadButton, channel, channelSpecificStyle, capUploaderCustomRequest, onGalleryClick, onReUpload]);
271
+ }, [isImageError, imageSrc]);
301
272
 
302
273
  return (
303
274
  <div style={style} className="cap-custom-image-upload">
@@ -314,8 +285,6 @@ function CapImageUpload(props) {
314
285
  type="file"
315
286
  onChange={(e) => uploadImages(e, { files: e.target.files })}
316
287
  accept={supportedExtensions || "image/*"}
317
- disabled={disabled}
318
- tabIndex={disabled ? -1 : undefined}
319
288
  />
320
289
  {getImageSection()}
321
290
  <CapDrawer
@@ -336,18 +305,7 @@ function CapImageUpload(props) {
336
305
  )}
337
306
  {![WHATSAPP, INAPP].includes(channel) && (
338
307
  <CapHeadingSpan type="label2" className="image-dimension">
339
- {[WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel) && recommendedDimensions?.length ? (
340
- <FormattedMessage
341
- {...messages.recommendedDimensions}
342
- values={{
343
- dimensions: recommendedDimensions
344
- .map((dim) => `${dim.width} x ${dim.height}px`)
345
- .join(', '),
346
- }}
347
- />
348
- ) : (
349
- <FormattedMessage {...messages.imageDimenstionDescription} values={{ width: imgWidth, height: imgHeight }} />
350
- )}
308
+ <FormattedMessage {...messages.imageDimenstionDescription} values={{ width: imgWidth, height: imgHeight }} />
351
309
  </CapHeadingSpan>
352
310
  )}
353
311
  {channel === FACEBOOK && (
@@ -370,7 +328,7 @@ function CapImageUpload(props) {
370
328
  getImageSizeLabel()
371
329
  )
372
330
  )}
373
- {[VIBER, INAPP, MOBILEPUSH, WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel) && getImageSizeLabel()}
331
+ {[VIBER, INAPP, MOBILEPUSH].includes(channel) && getImageSizeLabel()}
374
332
  <CapHeadingSpan type="label2" className="image-format">
375
333
  {channel === INAPP ? <FormattedMessage {...messages.format2} /> : <FormattedMessage {...messages.format} />}
376
334
  </CapHeadingSpan>
@@ -399,13 +357,6 @@ CapImageUpload.propTypes = {
399
357
  channel: PropTypes.string,
400
358
  channelSpecificStyle: PropTypes.bool,
401
359
  disableAutoRestore: PropTypes.bool,
402
- recommendedDimensions: PropTypes.arrayOf(
403
- PropTypes.shape({
404
- width: PropTypes.number.isRequired,
405
- height: PropTypes.number.isRequired,
406
- })
407
- ),
408
- disabled: PropTypes.bool,
409
360
  };
410
361
 
411
362
  export default injectIntl(CapImageUpload);
@@ -19,8 +19,5 @@ $classPrefix: cap-custom-image-upload;
19
19
  }
20
20
  .upload-image-error{
21
21
  margin-top: $CAP_SPACE_04;
22
- }
23
- .ant-upload-list-item{
24
- height: 1.65rem;
25
- }
22
+ }
26
23
  }