@capillarytech/creatives-library 7.14.10 → 7.14.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.
@@ -58,6 +58,7 @@ import {
58
58
  INITIAL_CTA_DATA,
59
59
  ALLOWED_IMAGE_EXTENSIONS_REGEX,
60
60
  WHATSAPP_IMG_SIZE,
61
+ HOST_TWILIO,
61
62
  HOST_KARIX,
62
63
  ALLOWED_EXTENSIONS_VIDEO_REGEX,
63
64
  ALLOWED_EXTENSIONS_DOCUMENT_REGEX,
@@ -131,8 +132,10 @@ export const Whatsapp = (props) => {
131
132
  const [spin, setSpin] = useState(false);
132
133
  const [unsubscribeRequired, setUnsubscribeRequired] = useState(false);
133
134
  const [whatsappImageSrc, setWhatsappImageSrc] = useState('');
134
- const [whatsappVideoSrc, setWhatsappVideoSrc] = useState('');
135
- const [whatsappVideoPreviewImg, setWhatsappVideoPreviewImg] = useState('');
135
+ const [whatsappVideoSrcAndPreview, setWhatsappVideoSrcAndPreview] = useState({
136
+ whatsappVideoSrc: '',
137
+ whatsappVideoPreviewImg: '',
138
+ });
136
139
  const [whatsappDocSource, setWhatsappDocSource] = useState('');
137
140
  const [whatsappDocParams, setWhatsappDocParams] = useState({});
138
141
  const [karixFileHandle, setKarixFileHandle] = useState('');
@@ -239,7 +242,10 @@ export const Whatsapp = (props) => {
239
242
  setTemplateLanguage(languages[0]?.language);
240
243
  setTemplateMediaType(mediaType);
241
244
  setWhatsappImageSrc(imageUrl);
242
- setWhatsappVideoSrc(videoUrl);
245
+ setWhatsappVideoSrcAndPreview({
246
+ whatsappVideoSrc: videoUrl,
247
+ whatsappVideoPreviewImg: videoPreviewImg,
248
+ });
243
249
  setWhatsappDocSource(documentUrl);
244
250
  setWhatsappDocParams(whatsappDocParams);
245
251
  updateAssetList({
@@ -248,7 +254,6 @@ export const Whatsapp = (props) => {
248
254
  videoSrc: videoUrl,
249
255
  fileHandle: karixFileHandle,
250
256
  });
251
- setWhatsappVideoPreviewImg(videoPreviewImg);
252
257
  setKarixFileHandle(karixFileHandle);
253
258
  setButtonType(btnType);
254
259
  if (btnType === WHATSAPP_BUTTON_TYPES.CTA && buttons.length > 0) {
@@ -478,7 +483,7 @@ export const Whatsapp = (props) => {
478
483
  label: (
479
484
  <CapTooltip
480
485
  title={
481
- host !== HOST_KARIX
486
+ host === HOST_TWILIO
482
487
  ? formatMessage(messages.disabledFeatureTooltip)
483
488
  : ''
484
489
  }
@@ -486,35 +491,35 @@ export const Whatsapp = (props) => {
486
491
  {formatMessage(messages.mediaImage)}
487
492
  </CapTooltip>
488
493
  ),
489
- disabled: host !== HOST_KARIX,
494
+ disabled: host === HOST_TWILIO,
490
495
  },
491
496
  {
492
497
  value: WHATSAPP_MEDIA_TYPES.VIDEO,
493
498
  label: (
494
499
  <CapTooltip
495
500
  title={
496
- host !== HOST_KARIX
501
+ host === HOST_TWILIO
497
502
  ? formatMessage(messages.disabledFeatureTooltip)
498
503
  : ''
499
504
  }>
500
505
  {formatMessage(messages.mediaVideo)}
501
506
  </CapTooltip>
502
507
  ),
503
- disabled: host !== HOST_KARIX,
508
+ disabled: host === HOST_TWILIO,
504
509
  },
505
510
  {
506
511
  value: WHATSAPP_MEDIA_TYPES.DOCUMENT,
507
512
  label: (
508
513
  <CapTooltip
509
514
  title={
510
- host !== HOST_KARIX
515
+ host === HOST_TWILIO
511
516
  ? formatMessage(messages.disabledFeatureTooltip)
512
517
  : ''
513
518
  }>
514
519
  {formatMessage(messages.mediaDocument)}
515
520
  </CapTooltip>
516
521
  ),
517
- disabled: host !== HOST_KARIX,
522
+ disabled: host === HOST_TWILIO,
518
523
  },
519
524
  ];
520
525
 
@@ -724,13 +729,15 @@ export const Whatsapp = (props) => {
724
729
 
725
730
  const setUpdateWhatsappVideoSrc = useCallback(
726
731
  (index, data) => {
727
- setWhatsappVideoSrc(data?.videoSrc);
732
+ setWhatsappVideoSrcAndPreview({
733
+ whatsappVideoSrc: data?.videoSrc,
734
+ whatsappVideoPreviewImg: data?.previewUrl,
735
+ });
728
736
  setKarixFileHandle(data?.fileHandle);
729
- setWhatsappVideoPreviewImg(data?.previewUrl);
730
737
  updateAssetList(data);
731
738
  actions.clearWhatsappAsset(0);
732
739
  },
733
- [whatsappVideoSrc],
740
+ [whatsappVideoSrcAndPreview?.whatsappVideoSrc],
734
741
  );
735
742
 
736
743
  const setUpdateWhatsappDocSrc = useCallback(
@@ -777,6 +784,7 @@ export const Whatsapp = (props) => {
777
784
  videoData={editData}
778
785
  className="cap-custom-video-upload"
779
786
  channel={WHATSAPP}
787
+ errorMessage={formatMessage(messages.videoErrorMessage)}
780
788
  />
781
789
  );
782
790
  const docPreview = ( whatsappDocSource !== '' &&
@@ -799,6 +807,8 @@ export const Whatsapp = (props) => {
799
807
  setWhatsappDocParams={setWhatsappDocParams}
800
808
  channel={WHATSAPP}
801
809
  docPreview={docPreview}
810
+ supportedMaxSize={'16 MB'}
811
+ supportedFormat={'PDF'}
802
812
  />
803
813
  );
804
814
 
@@ -938,49 +948,63 @@ export const Whatsapp = (props) => {
938
948
  };
939
949
  });
940
950
 
941
- const createPayload = () => ({
942
- name: templateName,
943
- versions: {
944
- base: {
945
- content: {
946
- whatsapp: {
947
- category: templateCategory,
948
- languages: [
949
- {
950
- language: templateLanguage,
951
- content: getPayloadContent(),
952
- },
953
- ],
954
- ...(isBtnTypeCta && {
955
- buttonType,
956
- buttons: getCtaPayload(),
957
- }),
958
- mediaType: templateMediaType,
959
- ...(isMediaTypeImage && {
960
- imageUrl: getCdnUrl({url: whatsappImageSrc, channelName: 'WHATSAPP' }),
961
- karixFileHandle,
962
- }),
963
- ...(isMediaTypeVideo && {
964
- videoUrl: getCdnUrl({url: whatsappVideoSrc, channelName: 'WHATSAPP'}),
965
- karixFileHandle,
966
- videoPreviewImg: getCdnUrl({url: whatsappVideoPreviewImg, channelName: 'WHATSAPP'}),
967
- }),
968
- ...(isMediaTypeDoc && {
969
- documentUrl: getCdnUrl({url: whatsappDocSource, channelName: 'WHATSAPP'}),
970
- whatsappDocParams,
971
- karixFileHandle,
972
- }),
973
- varMapped: !isFullMode ? varMap : {},
974
- templateEditor: !isFullMode && tempMsgArray.join(''),
975
- accountId,
976
- accessToken,
977
- hostName: host,
951
+ const createPayload = () => {
952
+ let mediaParams = {};
953
+ switch (templateMediaType) {
954
+ case WHATSAPP_MEDIA_TYPES.IMAGE:
955
+ mediaParams = {
956
+ imageUrl: getCdnUrl({url: whatsappImageSrc, channelName: WHATSAPP }),
957
+ karixFileHandle,
958
+ };
959
+ break;
960
+ case WHATSAPP_MEDIA_TYPES.VIDEO:
961
+ mediaParams = {
962
+ videoUrl: getCdnUrl({url: whatsappVideoSrcAndPreview?.whatsappVideoSrc, channelName: WHATSAPP }),
963
+ videoPreviewImg: getCdnUrl({url: whatsappVideoSrcAndPreview?.whatsappVideoPreviewImg, channelName: WHATSAPP}),
964
+ karixFileHandle,
965
+ };
966
+ break;
967
+ case WHATSAPP_MEDIA_TYPES.DOCUMENT:
968
+ mediaParams = {
969
+ documentUrl: getCdnUrl({url: whatsappDocSource, channelName: WHATSAPP}),
970
+ whatsappDocParams,
971
+ karixFileHandle,
972
+ };
973
+ break;
974
+ default:
975
+ break;
976
+ }
977
+ return ({
978
+ name: templateName,
979
+ versions: {
980
+ base: {
981
+ content: {
982
+ whatsapp: {
983
+ category: templateCategory,
984
+ languages: [
985
+ {
986
+ language: templateLanguage,
987
+ content: getPayloadContent(),
988
+ },
989
+ ],
990
+ ...(isBtnTypeCta && {
991
+ buttonType,
992
+ buttons: getCtaPayload(),
993
+ }),
994
+ mediaType: templateMediaType,
995
+ ...mediaParams,
996
+ varMapped: !isFullMode ? varMap : {},
997
+ templateEditor: !isFullMode && tempMsgArray.join(''),
998
+ accountId,
999
+ accessToken,
1000
+ hostName: host,
1001
+ },
978
1002
  },
979
1003
  },
980
1004
  },
981
- },
982
- type: WHATSAPP,
983
- });
1005
+ type: WHATSAPP,
1006
+ });
1007
+ };
984
1008
 
985
1009
  const actionCallback = ({ errorMessage }) => {
986
1010
  if (!errorMessage) {
@@ -1077,6 +1101,14 @@ export const Whatsapp = (props) => {
1077
1101
  </>
1078
1102
  );
1079
1103
 
1104
+ const renderMediaComponent = () => (
1105
+ <>
1106
+ {isMediaTypeImage && renderImageComponent()}
1107
+ {isMediaTypeVideo && renderVideoComonent()}
1108
+ {isMediaTypeDoc && renderDocumentComponent()}
1109
+ </>
1110
+ );
1111
+
1080
1112
  const createModeContent = (
1081
1113
  <>
1082
1114
  {/* template name */}
@@ -1128,9 +1160,7 @@ export const Whatsapp = (props) => {
1128
1160
  />
1129
1161
  {/* template media type */}
1130
1162
  {renderMediaSection()}
1131
- {isMediaTypeImage && renderImageComponent()}
1132
- {isMediaTypeVideo && renderVideoComonent()}
1133
- {isMediaTypeDoc && renderDocumentComponent()}
1163
+ {renderMediaComponent()}
1134
1164
  {/* template message create flow */}
1135
1165
  <CapHeader
1136
1166
  className={`${isMediaTypeImage ? 'whatsapp-heading-spacing' : ''}`}
@@ -1363,10 +1393,7 @@ export const Whatsapp = (props) => {
1363
1393
  {/* template media type */}
1364
1394
  {renderLabel('mediaLabel')}
1365
1395
  <CapLabel type="label15">{capitalizeString(templateMediaType)}</CapLabel>
1366
- {isMediaTypeImage && renderImageComponent()}
1367
- {isMediaTypeVideo && renderVideoComonent()}
1368
- {isMediaTypeDoc && renderDocumentComponent()}
1369
-
1396
+ {renderMediaComponent()}
1370
1397
  <CapRow className="whatsapp-render-heading">
1371
1398
  <CapHeader
1372
1399
  title={
@@ -1450,19 +1477,27 @@ export const Whatsapp = (props) => {
1450
1477
  )}
1451
1478
  </>
1452
1479
  );
1480
+ let mediaPreview = {};
1481
+ switch (templateMediaType) {
1482
+ case WHATSAPP_MEDIA_TYPES.IMAGE:
1483
+ mediaPreview = {whatsappImageSrc};
1484
+ break;
1485
+ case WHATSAPP_MEDIA_TYPES.VIDEO:
1486
+ mediaPreview = {
1487
+ whatsappVideoPreviewImg: whatsappVideoSrcAndPreview?.whatsappVideoPreviewImg,
1488
+ };
1489
+ break;
1490
+ case WHATSAPP_MEDIA_TYPES.DOCUMENT:
1491
+ mediaPreview = {docPreview};
1492
+ break;
1493
+ default:
1494
+ break;
1495
+ }
1453
1496
  return (
1454
1497
  <TemplatePreview
1455
1498
  channel={WHATSAPP}
1456
1499
  content={{
1457
- ...(isMediaTypeImage && {
1458
- whatsappImageSrc,
1459
- }),
1460
- ...(isMediaTypeVideo && {
1461
- whatsappVideoPreviewImg,
1462
- }),
1463
- ...(isMediaTypeDoc && {
1464
- docPreview,
1465
- }),
1500
+ ...mediaPreview,
1466
1501
  templateMsg,
1467
1502
  ...(isBtnTypeCta && {
1468
1503
  ctaData,
@@ -296,6 +296,10 @@ export default defineMessages({
296
296
  id: `${prefix}.optional`,
297
297
  defaultMessage: '(Optional)',
298
298
  },
299
+ videoErrorMessage: {
300
+ id: `${prefix}.videoErrorMessage`,
301
+ defaultMessage: 'Please upload the video with allowed file extension, size, dimension and aspect ratio',
302
+ },
299
303
 
300
304
  afrikaans: {
301
305
  id: `${prefix}.afrikaans`,
@@ -1,3 +1,4 @@
1
+ @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
1
2
  .pdf-img-box {
2
3
  width: 162px;
3
4
  height: 80px;
@@ -9,7 +10,7 @@
9
10
  .pdf-label {
10
11
  width: 162px;
11
12
  height: 44px;
12
- background-color: #F4F5F7;
13
+ background-color: $CAP_G09;
13
14
  display: flex;
14
15
  .cap-image-v2 {
15
16
  margin: 6px 4px;
@@ -20,7 +21,7 @@
20
21
  margin: 8px 4px;
21
22
  max-width: 114px;
22
23
  .pdf-info-sec {
23
- color: #5f6d85;
24
+ color: $CAP_G04;
24
25
  font-size: 8px;
25
26
  font-weight: 400;
26
27
  line-height: 12px;