@capillarytech/creatives-library 7.14.28 → 7.14.29

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "7.14.28",
4
+ "version": "7.14.29",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",
package/services/api.js CHANGED
@@ -318,6 +318,7 @@ export const uploadFile = ({file, assetType, fileParams, mode, wechatParams, wha
318
318
  data.append('source', whatsappParams.source);
319
319
  data.append('wabaId', whatsappParams.wabaId);
320
320
  data.append('accessToken', whatsappParams.accessToken);
321
+ data.append('hostName', whatsappParams.hostName);
321
322
  }
322
323
  const url = `${API_ENDPOINT}/assets/${assetType}`;
323
324
  // return API.post(url, data, true);
@@ -476,9 +477,12 @@ export const checkBulkDuplicates = (data) => {
476
477
  return request(url, getAPICallObject('POST', data));
477
478
  };
478
479
 
479
- export const createWhatsappTemplate = ({ payload }) => {
480
+ export const createWhatsappTemplate = ({gupshupMediaFile, payload }) => {
481
+ const data = new FormData();
482
+ data.append('gupshupMediaFile', gupshupMediaFile);
483
+ data.append('payload', JSON.stringify(payload));
480
484
  const url = `${API_ENDPOINT}/templates/WHATSAPP`;
481
- return request(url, getAPICallObject('POST', payload));
485
+ return request(url, getAPICallObject('POST', data, true));
482
486
  };
483
487
 
484
488
  export const getSenderDetails = (channel, orgUnitId) => {
@@ -29,7 +29,7 @@ export const TWILIO_URL_OPTIONS = [
29
29
  },
30
30
  ];
31
31
 
32
- export const KARIX_URL_OPTIONS = [
32
+ export const KARIX_GUPSHUP_URL_OPTIONS = [
33
33
  {
34
34
  value: STATIC_URL,
35
35
  label: <FormattedMessage {...messages.ctaWebsiteTypeStatic} />,
@@ -27,7 +27,7 @@ import {
27
27
  BTN_MAX_LENGTH,
28
28
  PHONE_NUMBER_MAX_LENGTH,
29
29
  TWILIO_URL_OPTIONS,
30
- KARIX_URL_OPTIONS,
30
+ KARIX_GUPSHUP_URL_OPTIONS,
31
31
  URL_MAX_LENGTH,
32
32
  PHONE_NUMBER,
33
33
  WEBSITE,
@@ -36,7 +36,7 @@ import {
36
36
  } from './constants';
37
37
  import {
38
38
  INITIAL_CTA_DATA,
39
- HOST_KARIX,
39
+ HOST_TWILIO,
40
40
  } from '../../v2Containers/Whatsapp/constants';
41
41
 
42
42
  export const CapWhatsappCTA = (props) => {
@@ -359,9 +359,9 @@ export const CapWhatsappCTA = (props) => {
359
359
  <CapSelect
360
360
  id="whatsapp-cta-url-type"
361
361
  options={
362
- hostName === HOST_KARIX
363
- ? KARIX_URL_OPTIONS
364
- : TWILIO_URL_OPTIONS
362
+ hostName === HOST_TWILIO
363
+ ? TWILIO_URL_OPTIONS
364
+ : KARIX_GUPSHUP_URL_OPTIONS
365
365
  }
366
366
  onChange={(value) => onUrlTypeChange(value, index)}
367
367
  value={urlType}
@@ -104,7 +104,7 @@ describe('Test SlideBoxContent container', () => {
104
104
  expect(getCreativesData).toHaveBeenCalledTimes(2);
105
105
  });
106
106
 
107
- it.only('It should clear templateData, on channel change.', async () => {
107
+ it('It should clear templateData, on channel change.', async () => {
108
108
  renderFunction(
109
109
  'WHATSAPP',
110
110
  'editTemplate',
@@ -616,14 +616,14 @@
616
616
  text-overflow: ellipsis;
617
617
  }
618
618
 
619
- .whatsapp-message-with-image {
619
+ .whatsapp-message-with-media {
620
620
  display: -webkit-box;
621
621
  -webkit-line-clamp: 3;
622
622
  -webkit-box-orient: vertical;
623
623
  overflow: hidden;
624
624
  }
625
625
 
626
- .whatsapp-message-without-image {
626
+ .whatsapp-message-without-media {
627
627
  display: -webkit-box;
628
628
  -webkit-line-clamp: 10;
629
629
  -webkit-box-orient: vertical;
@@ -93,12 +93,13 @@ import {
93
93
  import { MAX_WHATSAPP_TEMPLATES, WARNING_WHATSAPP_TEMPLATES } from './constants';
94
94
  import {
95
95
  TWILIO_CATEGORY_OPTIONS,
96
- KARIX_CATEGORY_OPTIONS,
96
+ KARIX_GUPSHUP_CATEGORY_OPTIONS,
97
97
  STATUS_OPTIONS,
98
98
  CATEGORY as WHATSAPP_CATEGORY,
99
99
  STATUS as WHATSAPP_STATUS,
100
100
  WHATSAPP_STATUSES,
101
- HOST_KARIX,
101
+ HOST_TWILIO,
102
+ HOST_GUPSHUP,
102
103
  } from '../Whatsapp/constants';
103
104
  import { getWhatsappContent, getWhatsappStatus, getWhatsappCategory, getWhatsappCta } from '../Whatsapp/utils';
104
105
  import { getRCSContent } from '../Rcs/utils';
@@ -113,7 +114,7 @@ import pushIllustration from '../Assets/images/pushIllustration.svg';
113
114
  import whatsappIllustration from '../Assets/images/whatsappIllustration.png';
114
115
  import rcsIllustration from '../Assets/images/rcsIllustration.png';
115
116
 
116
- import { CAP_SPACE_16, CAP_SPACE_44 } from '@capillarytech/cap-ui-library/styled/variables';
117
+ import { CAP_SPACE_16 } from '@capillarytech/cap-ui-library/styled/variables';
117
118
  import { GA } from '@capillarytech/cap-ui-utils';
118
119
  const { timeTracker } = GA;
119
120
  const {CapCustomCardList} = CapCustomCard;
@@ -911,7 +912,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
911
912
  } = {},
912
913
  } = {},
913
914
  } = template;
914
- if (this.props.isFullMode && !this.props.isDltFromRcs && !(this.state.channel.toUpperCase() === WHATSAPP && status === WHATSAPP_STATUSES.approved)) {
915
+ if (this.props.isFullMode && !this.props.isDltFromRcs && !(this.state.channel.toUpperCase() === WHATSAPP && status === WHATSAPP_STATUSES.approved) && !(this.state.hostName === HOST_GUPSHUP)) {
915
916
  templateData.extra.push(<CapDropdown
916
917
  overlay={
917
918
  <CapMenu>
@@ -1094,8 +1095,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1094
1095
  <span
1095
1096
  className={`${
1096
1097
  (whatsappImageSrc || whatsappVideoPreviewImg || docPreview)
1097
- ? 'whatsapp-message-with-image'
1098
- : 'whatsapp-message-without-image'
1098
+ ? 'whatsapp-message-with-media'
1099
+ : 'whatsapp-message-without-media'
1099
1100
  }`}
1100
1101
  >
1101
1102
  {templateMsg}
@@ -2552,9 +2553,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2552
2553
  }
2553
2554
  <CapSelectFilter
2554
2555
  placement="bottomLeft"
2555
- data={this.state.hostName === HOST_KARIX
2556
- ? KARIX_CATEGORY_OPTIONS
2557
- : TWILIO_CATEGORY_OPTIONS}
2556
+ data={this.state.hostName === HOST_TWILIO
2557
+ ? TWILIO_CATEGORY_OPTIONS
2558
+ : KARIX_GUPSHUP_CATEGORY_OPTIONS}
2558
2559
  onSelect={this.setWhatsappCategory}
2559
2560
  selectedValue={this.state.selectedWhatsappCategory}
2560
2561
  placeholder="Category"
@@ -788,7 +788,7 @@ exports[`Test Templates container Test max templates exceeded 1`] = `
788
788
  />
789
789
 
790
790
  <span
791
- className="whatsapp-message-with-image"
791
+ className="whatsapp-message-with-media"
792
792
  >
793
793
  <CapLabel
794
794
  type="label9"
@@ -1223,7 +1223,7 @@ exports[`Test Templates container Test max templates not exceeded 1`] = `
1223
1223
  />
1224
1224
 
1225
1225
  <span
1226
- className="whatsapp-message-with-image"
1226
+ className="whatsapp-message-with-media"
1227
1227
  >
1228
1228
  <CapLabel
1229
1229
  type="label9"
@@ -1658,7 +1658,7 @@ exports[`Test Templates container Test max templates warning 1`] = `
1658
1658
  />
1659
1659
 
1660
1660
  <span
1661
- className="whatsapp-message-with-image"
1661
+ className="whatsapp-message-with-media"
1662
1662
  >
1663
1663
  <CapLabel
1664
1664
  type="label9"
@@ -8,9 +8,10 @@ import {
8
8
  CLEAR_WHATSAPP_ASSET,
9
9
  } from './constants';
10
10
 
11
- export function createWhatsappTemplate(payload, callback) {
11
+ export function createWhatsappTemplate(gupshupMediaFile, payload, callback) {
12
12
  return {
13
13
  type: TEMPLATE_CREATE_REQUEST,
14
+ gupshupMediaFile,
14
15
  payload,
15
16
  callback,
16
17
  };
@@ -43,7 +43,7 @@ export const WHATSAPP_CATEGORIES = {
43
43
  otp: 'OTP',
44
44
  };
45
45
 
46
- export const KARIX_CATEGORY_OPTIONS = [
46
+ export const KARIX_GUPSHUP_CATEGORY_OPTIONS = [
47
47
  {
48
48
  key: 'transactional',
49
49
  value: WHATSAPP_CATEGORIES.transactional,
@@ -186,6 +186,7 @@ export const WHATSAPP_VIDEO_SIZE = 16000000; // 16MB
186
186
  export const WHATSAPP_DOCUMENT_SIZE = 16000000; // 16MB
187
187
  export const HOST_TWILIO = 'twiliowhatsapptrans';
188
188
  export const HOST_KARIX = 'karixwhatsappbulk';
189
+ export const HOST_GUPSHUP = 'gupshupwhatsappbulk';
189
190
  export const SIZE_UNITS = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
190
191
  export const DOCUMENT_FORMAT = 'PDF';
191
192
  export const DOCUMENT_SIZE = '16 MB';
@@ -44,7 +44,7 @@ import {
44
44
  TEMPLATE_MESSAGE_MAX_LENGTH,
45
45
  WHATSAPP,
46
46
  TWILIO_CATEGORY_OPTIONS,
47
- KARIX_CATEGORY_OPTIONS,
47
+ KARIX_GUPSHUP_CATEGORY_OPTIONS,
48
48
  LANGUAGE_OPTIONS,
49
49
  WHATSAPP_STATUSES,
50
50
  TAG,
@@ -142,6 +142,7 @@ export const Whatsapp = (props) => {
142
142
  const [whatsappDocParams, setWhatsappDocParams] = useState({});
143
143
  const [karixFileHandle, setKarixFileHandle] = useState('');
144
144
  const [assetList, updateAssetList] = useState([]);
145
+ const [gupshupMediaFile, setGupshupMediaFile] = useState();
145
146
  //for edit only
146
147
  const [isEditFlow, setEditFlow] = useState(false);
147
148
  const [templateDate, setTemplateDate] = useState('');
@@ -466,7 +467,7 @@ export const Whatsapp = (props) => {
466
467
  </CapRow>
467
468
  );
468
469
 
469
- const karixCategoryOptions = KARIX_CATEGORY_OPTIONS.map((option) => ({
470
+ const karixGupshupCategoryOptions = KARIX_GUPSHUP_CATEGORY_OPTIONS.map((option) => ({
470
471
  value: option.value,
471
472
  label: renderTemplateCategoryLabel(option.tooltipLabel, option.label),
472
473
  }));
@@ -707,12 +708,16 @@ export const Whatsapp = (props) => {
707
708
  </>
708
709
  );
709
710
 
710
- const uploadWhatsappImage = (file, type, fileParams) => {
711
+ const uploadWhatsappAsset = (file, type, fileParams) => {
711
712
  const whatsappParams = {
712
713
  source: WHATSAPP.toLowerCase(),
713
714
  wabaId: accountId,
714
715
  accessToken,
716
+ hostName: host,
715
717
  };
718
+ if (isFullMode && !isEditFlow && host !== HOST_KARIX) {
719
+ setGupshupMediaFile(file);
720
+ }
716
721
  actions.uploadWhatsappAsset(file, type, fileParams, 0, whatsappParams);
717
722
  };
718
723
 
@@ -732,12 +737,12 @@ export const Whatsapp = (props) => {
732
737
 
733
738
  const setUpdateWhatsappVideoSrc = useCallback(
734
739
  (index, data) => {
735
- const {videoSrc = '', previewUrl = ''} = data;
740
+ const { videoSrc = '', previewUrl = '', fileHandle = '' } = data;
736
741
  setWhatsappVideoSrcAndPreview({
737
742
  whatsappVideoSrc: videoSrc,
738
743
  whatsappVideoPreviewImg: previewUrl,
739
744
  });
740
- setKarixFileHandle(data?.fileHandle);
745
+ setKarixFileHandle(fileHandle);
741
746
  updateAssetList(data);
742
747
  actions.clearWhatsappAsset(0);
743
748
  },
@@ -763,7 +768,7 @@ export const Whatsapp = (props) => {
763
768
  style={{ paddingTop: '20px' }}
764
769
  allowedExtensionsRegex={ALLOWED_IMAGE_EXTENSIONS_REGEX}
765
770
  imgSize={WHATSAPP_IMG_SIZE}
766
- uploadAsset={uploadWhatsappImage}
771
+ uploadAsset={uploadWhatsappAsset}
767
772
  isFullMode={isFullMode}
768
773
  imageSrc={whatsappImageSrc}
769
774
  updateImageSrc={setUpdateWhatsappImageSrc}
@@ -782,7 +787,7 @@ export const Whatsapp = (props) => {
782
787
  allowedExtensionsRegex={ALLOWED_EXTENSIONS_VIDEO_REGEX}
783
788
  videoSize={WHATSAPP_VIDEO_SIZE}
784
789
  isFullMode={isFullMode}
785
- uploadAsset={uploadWhatsappImage}
790
+ uploadAsset={uploadWhatsappAsset}
786
791
  uploadedAssetList={assetList}
787
792
  onVideoUploadUpdateAssestList={setUpdateWhatsappVideoSrc}
788
793
  videoData={editData}
@@ -800,7 +805,7 @@ export const Whatsapp = (props) => {
800
805
  <CapDocumentUpload
801
806
  allowedExtensionsRegex={ALLOWED_EXTENSIONS_DOCUMENT_REGEX}
802
807
  documentSize={WHATSAPP_DOCUMENT_SIZE}
803
- uploadAsset={uploadWhatsappImage}
808
+ uploadAsset={uploadWhatsappAsset}
804
809
  isFullMode={isFullMode}
805
810
  documentSrc={whatsappDocSource}
806
811
  updateDocumentSrc={setUpdateWhatsappDocSrc}
@@ -1030,7 +1035,7 @@ export const Whatsapp = (props) => {
1030
1035
 
1031
1036
  const createApprovalHandler = () => {
1032
1037
  setSpin(true);
1033
- actions.createWhatsappTemplate(createPayload(), (resp, errorMessage) => {
1038
+ actions.createWhatsappTemplate(gupshupMediaFile, createPayload(), (resp, errorMessage) => {
1034
1039
  actionCallback({ resp, errorMessage });
1035
1040
  if (!errorMessage) {
1036
1041
  onCreateComplete();
@@ -1073,7 +1078,7 @@ export const Whatsapp = (props) => {
1073
1078
  return true;
1074
1079
  }
1075
1080
  //if media type is image, video or document and the mediaType file is not uploaded
1076
- if ( !isMediaTypeText && karixFileHandle === '') {
1081
+ if (!isMediaTypeText && host === HOST_KARIX && karixFileHandle === '') {
1077
1082
  return true;
1078
1083
  }
1079
1084
  //cta
@@ -1152,7 +1157,7 @@ export const Whatsapp = (props) => {
1152
1157
  <CapSelect
1153
1158
  id="select-whatsapp-category"
1154
1159
  options={
1155
- host === HOST_KARIX ? karixCategoryOptions : twilioCategoryOptions
1160
+ host === HOST_KARIX ? karixGupshupCategoryOptions : twilioCategoryOptions
1156
1161
  }
1157
1162
  onChange={onTemplateCategoryChange}
1158
1163
  value={templateCategory}
@@ -36,10 +36,10 @@ function* watchUploadWhatsappAsset() {
36
36
  yield cancel(watcher);
37
37
  }
38
38
 
39
- export function* sendForApprovalCreate({ payload, callback }) {
39
+ export function* sendForApprovalCreate({ gupshupMediaFile, payload, callback }) {
40
40
  let errorMsg;
41
41
  try {
42
- const result = yield call(Api.createWhatsappTemplate, { payload });
42
+ const result = yield call(Api.createWhatsappTemplate, { gupshupMediaFile, payload });
43
43
  if (result?.status?.code && result.status.code >= 400) {
44
44
  errorMsg = result?.message || result.status.code;
45
45
  throw errorMsg;
@@ -397484,6 +397484,7 @@ exports[`Creatives Whatsapp test2/> set all valid values and send for approval 2
397484
397484
  "createWhatsappTemplate": [MockFunction] {
397485
397485
  "calls": Array [
397486
397486
  Array [
397487
+ undefined,
397487
397488
  Object {
397488
397489
  "name": "template_name",
397489
397490
  "type": "WHATSAPP",
@@ -417931,6 +417932,7 @@ exports[`Creatives Whatsapp test2/> set all valid values and send for approval 3
417931
417932
  "createWhatsappTemplate": [MockFunction] {
417932
417933
  "calls": Array [
417933
417934
  Array [
417935
+ undefined,
417934
417936
  Object {
417935
417937
  "name": "template_name",
417936
417938
  "type": "WHATSAPP",
@@ -306,7 +306,7 @@ describe('Creatives Whatsapp test2/>', () => {
306
306
  constants.INITIAL_CTA_DATA = [];
307
307
  renderHelper({});
308
308
  let event = { target: { value: 'template_name' } };
309
- createWhatsappTemplate.mockImplementation((obj, callback) => {
309
+ createWhatsappTemplate.mockImplementation((undefined, obj, callback) => {
310
310
  callback();
311
311
  });
312
312
 
@@ -356,7 +356,7 @@ describe('Creatives Whatsapp test2/>', () => {
356
356
  ];
357
357
  renderHelper({});
358
358
  let event = { target: { value: 'template_name' } };
359
- createWhatsappTemplate.mockImplementation((obj, callback) => {
359
+ createWhatsappTemplate.mockImplementation((undefined, obj, callback) => {
360
360
  callback();
361
361
  });
362
362
 
@@ -416,7 +416,7 @@ describe('Creatives Whatsapp test2/>', () => {
416
416
  ];
417
417
  renderHelper({});
418
418
  let event = { target: { value: 'template_name' } };
419
- createWhatsappTemplate.mockImplementation((obj, callback) => {
419
+ createWhatsappTemplate.mockImplementation((undefined, obj, callback) => {
420
420
  callback();
421
421
  });
422
422
 
@@ -8,13 +8,13 @@ import { WHATSAPP } from '../CreativesContainer/constants';
8
8
  import {
9
9
  STATUS_OPTIONS,
10
10
  TWILIO_CATEGORY_OPTIONS,
11
- KARIX_CATEGORY_OPTIONS,
11
+ KARIX_GUPSHUP_CATEGORY_OPTIONS,
12
12
  WHATSAPP_STATUSES,
13
13
  PHONE_NUMBER,
14
14
  NONE,
15
15
  CTA,
16
16
  WHATSAPP_MEDIA_TYPES,
17
- HOST_KARIX,
17
+ HOST_TWILIO,
18
18
  SIZE_UNITS,
19
19
  } from '../Whatsapp/constants';
20
20
  import './styles.scss';
@@ -142,15 +142,13 @@ export const getWhatsappCta = (template) => {
142
142
  return renderArray;
143
143
  };
144
144
 
145
- export const getWhatsappCategory = (category, hostName) => {
146
- return (
147
- hostName === HOST_KARIX ? KARIX_CATEGORY_OPTIONS : TWILIO_CATEGORY_OPTIONS
145
+ export const getWhatsappCategory = (category, hostName) => (
146
+ hostName === HOST_TWILIO ? TWILIO_CATEGORY_OPTIONS : KARIX_GUPSHUP_CATEGORY_OPTIONS
148
147
  ).find((obj) => obj.value === category);
149
- };
150
148
 
151
149
  export const getWhatsappStatus = (status) => {
152
150
  if ([WHATSAPP_STATUSES.pending, WHATSAPP_STATUSES.unsubmitted].includes(status)) {
153
151
  status = WHATSAPP_STATUSES.awaitingApproval;
154
152
  }
155
153
  return STATUS_OPTIONS.find((obj) => obj.value === status);
156
- }
154
+ };