@capillarytech/creatives-library 7.11.8 → 7.11.10

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 (41) hide show
  1. package/config/app.js +1 -0
  2. package/index.js +6 -0
  3. package/package.json +1 -1
  4. package/routes.js +7 -2
  5. package/services/api.js +8 -2
  6. package/v2Components/CapImageUpload/index.js +24 -11
  7. package/v2Components/CapImageUpload/index.scss +12 -27
  8. package/v2Components/CapImageUpload/messages.js +9 -4
  9. package/v2Components/TemplatePreview/_templatePreview.scss +13 -0
  10. package/v2Components/TemplatePreview/index.js +41 -1
  11. package/v2Containers/App/constants.js +2 -1
  12. package/v2Containers/Assets/images/addCreativesIllustration.svg +30 -0
  13. package/v2Containers/Assets/images/rcsIllustration.png +0 -0
  14. package/v2Containers/Cap/messages.js +20 -1
  15. package/v2Containers/CreativesContainer/SlideBoxContent.js +57 -11
  16. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -0
  17. package/v2Containers/CreativesContainer/constants.js +1 -0
  18. package/v2Containers/CreativesContainer/messages.js +4 -0
  19. package/v2Containers/Facebook/Advertisement/index.js +4 -2
  20. package/v2Containers/Rcs/actions.js +29 -0
  21. package/v2Containers/Rcs/constants.js +38 -0
  22. package/v2Containers/Rcs/index.js +939 -0
  23. package/v2Containers/Rcs/index.scss +54 -0
  24. package/v2Containers/Rcs/messages.js +109 -0
  25. package/v2Containers/Rcs/reducer.js +72 -0
  26. package/v2Containers/Rcs/sagas.js +72 -0
  27. package/v2Containers/Rcs/selectors.js +8 -0
  28. package/v2Containers/Rcs/utils.js +37 -0
  29. package/v2Containers/Templates/_templates.scss +9 -1
  30. package/v2Containers/Templates/actions.js +2 -1
  31. package/v2Containers/Templates/constants.js +1 -0
  32. package/v2Containers/Templates/index.js +234 -174
  33. package/v2Containers/Templates/messages.js +20 -0
  34. package/v2Containers/Templates/reducer.js +2 -0
  35. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +520 -80
  36. package/v2Containers/TemplatesV2/index.js +2 -1
  37. package/v2Containers/TemplatesV2/messages.js +4 -0
  38. package/v2Containers/Whatsapp/index.js +4 -2
  39. package/v2Containers/Whatsapp/messages.js +0 -13
  40. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +13 -13
  41. package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +32 -26
@@ -70,6 +70,7 @@ import * as lineActions from '../Line/Container/actions';
70
70
  import * as viberActions from '../Viber/actions';
71
71
  import * as facebookActions from '../Facebook/actions';
72
72
  import * as whatsappActions from '../Whatsapp/actions';
73
+ import * as rcsActions from '../Rcs/actions';
73
74
  import CardGrid from '../../v2Components/CardGrid';
74
75
  import config from '../../config/app';
75
76
  import './_templates.scss';
@@ -97,7 +98,9 @@ import {
97
98
  WHATSAPP_STATUSES,
98
99
  } from '../Whatsapp/constants';
99
100
  import { getWhatsappContent, getWhatsappStatus, getWhatsappCategory } from '../Whatsapp/utils';
100
- import { MOBILE_PUSH, WECHAT, SMS, EMAIL, EBILL, LINE, VIBER, FACEBOOK, WHATSAPP } from '../CreativesContainer/constants';
101
+ import { getRCSContent } from '../Rcs/utils';
102
+
103
+ import { MOBILE_PUSH, WECHAT, SMS, EMAIL, EBILL, LINE, VIBER, FACEBOOK, WHATSAPP, RCS } from '../CreativesContainer/constants';
101
104
 
102
105
  import {CREATIVE} from '../Facebook/constants';
103
106
 
@@ -105,6 +108,8 @@ import emailIllustration from '../Assets/images/emailIllustration.svg';
105
108
  import smsIllustration from '../Assets/images/smsIllustration.svg';
106
109
  import pushIllustration from '../Assets/images/pushIllustration.svg';
107
110
  import whatsappIllustration from '../Assets/images/whatsappIllustration.png';
111
+ import rcsIllustration from '../Assets/images/rcsIllustration.png';
112
+
108
113
  import { CAP_SPACE_16, CAP_SPACE_44 } from '@capillarytech/cap-ui-library/styled/variables';
109
114
  import { GA } from '@capillarytech/cap-ui-utils';
110
115
  const { timeTracker } = GA;
@@ -144,10 +149,18 @@ const SMS_FILTERS = {
144
149
  };
145
150
 
146
151
  const WHATSAPP_LOWERCASE = WHATSAPP.toLowerCase();
152
+ const RCS_LOWERCASE = RCS.toLowerCase();
147
153
  const SMS_LOWERCASE = SMS.toLowerCase();
148
154
  const MOBILE_PUSH_LOWERCASE = MOBILE_PUSH.toLowerCase();
149
155
  const EBILL_LOWERCASE = EBILL.toLowerCase();
150
156
  const LINE_LOWERCASE = LINE.toLowerCase();
157
+ const duplicateEnum = {
158
+ sms: "smsActions",
159
+ line: "lineActions",
160
+ [VIBER_CHANNEL]: "viberActions",
161
+ [FACEBOOK_CHANNEL]: "facebookActions",
162
+ [RCS_LOWERCASE]: "rcsActions",
163
+ };
151
164
  export class Templates extends React.Component { // eslint-disable-line react/prefer-stateless-function
152
165
  constructor(props) {
153
166
  super(props);
@@ -177,7 +190,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
177
190
  lineFilter: LINE_FILTERS.ALL,
178
191
  smsFilter: SMS_FILTERS.ALL,
179
192
  selectedWhatsappStatus: '',
180
- selectedWhatsappCategory: ''
193
+ selectedWhatsappCategory: '',
181
194
  };
182
195
 
183
196
  this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
@@ -248,6 +261,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
248
261
  activeMode = ACCOUNT_SELECTION_MODE;
249
262
  this.props.actions.getWeCrmAccounts(channel);
250
263
  break;
264
+ case RCS:
265
+ channel = 'Rcs';
266
+ break;
251
267
  default:
252
268
  channel = '';
253
269
  }
@@ -278,7 +294,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
278
294
  if (this.props.location.query.type === 'embedded') {
279
295
  this.props.actions.resetAccount();
280
296
  }
281
- if (['line', VIBER_CHANNEL, FACEBOOK_CHANNEL, 'sms', 'email', 'ebill'].includes((this.state.channel || '').toLowerCase())) {
297
+ if (['line', VIBER_CHANNEL, FACEBOOK_CHANNEL, 'sms', 'email', 'ebill', RCS_LOWERCASE].includes((this.state.channel || '').toLowerCase())) {
282
298
  const queryParams = {
283
299
  // name: this.state.searchText,
284
300
  // sortBy: this.state.sortBy,
@@ -341,7 +357,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
341
357
  }
342
358
 
343
359
  this.setState({ channel }, () => {
344
- if (['line', VIBER_CHANNEL, FACEBOOK_CHANNEL, 'sms', 'email', 'ebill'].includes(this.state.channel.toLowerCase()) || (this.state.channel.toLowerCase() === 'wechat' && !isEmpty(nextProps.Templates.selectedWeChatAccount))) {
360
+ if (['line', VIBER_CHANNEL, FACEBOOK_CHANNEL, 'sms', 'email', 'ebill', RCS_LOWERCASE].includes(this.state.channel.toLowerCase()) || (this.state.channel.toLowerCase() === 'wechat' && !isEmpty(nextProps.Templates.selectedWeChatAccount))) {
345
361
  if (this.state.channel.toLowerCase() === 'wechat' && !isEmpty(nextProps.Templates.selectedWeChatAccount)) {
346
362
  params.wecrmId = (nextProps.Templates.selectedWeChatAccount.configs || {}).wecrm_app_id;
347
363
  params.wecrmToken = (nextProps.Templates.selectedWeChatAccount.configs || {}).wecrm_token;
@@ -404,12 +420,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
404
420
  });
405
421
  }
406
422
  }
407
- if ((this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === 'mobilepush') && isEmpty(nextProps.Templates.selectedWeChatAccount) && (this.props.location.query.type === 'embedded') && !this.isEnabledInLibraryModule("showAccountSelection")) {
423
+
424
+ if ((selectedChannel === 'wechat' || selectedChannel === 'mobilepush') && isEmpty(nextProps.Templates.selectedWeChatAccount) && (this.props.location.query.type === 'embedded') && !this.isEnabledInLibraryModule("showAccountSelection")) {
408
425
  let selectedAccount = '';
409
426
  if (isEmpty(nextProps.Templates.weCrmAccounts)) {
410
427
  return;
411
428
  }
412
- if (this.state.channel.toLowerCase() === 'wechat') {
429
+ if (selectedChannel === 'wechat') {
413
430
  forEach(nextProps.Templates.weCrmAccounts, (account) => {
414
431
  if (account.configs && account.configs.is_wecrm_enabled) {
415
432
  if (nextProps.location.query.source_account_id && account.sourceAccountIdentifier === nextProps.location.query.source_account_id) {
@@ -424,7 +441,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
424
441
  nextProps.actions.setWeChatAccount(selectedAccount);
425
442
  this.getAllTemplates({params});
426
443
  });
427
- } else if (this.state.channel.toLowerCase() === 'mobilepush' && (nextProps.location.query.account_id || nextProps.location.query.source_account_id)) {
444
+ } else if (selectedChannel === 'mobilepush' && (nextProps.location.query.account_id || nextProps.location.query.source_account_id)) {
428
445
  forEach(nextProps.Templates.weCrmAccounts, (account) => {
429
446
  if ((nextProps.location.query.account_id && account.id === Number(nextProps.location.query.account_id)) || (nextProps.location.query.source_account_id && account.sourceAccountIdentifier && account.sourceAccountIdentifier === nextProps.location.query.source_account_id)) {
430
447
  selectedAccount = account;
@@ -435,37 +452,38 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
435
452
  this.getAllTemplates({params});
436
453
  }
437
454
  }
438
- if ((this.state.channel || '').toLowerCase() === "mobilepush" && nextProps.CreateMobilePush && nextProps.CreateMobilePush.response && nextProps.CreateMobilePush.response.templateId && nextProps.CreateMobilePush.response.templateId !== '') {
455
+ if (selectedChannel === "mobilepush" && nextProps.CreateMobilePush && nextProps.CreateMobilePush.response && nextProps.CreateMobilePush.response.templateId && nextProps.CreateMobilePush.response.templateId !== '') {
439
456
 
440
457
  }
441
458
 
442
- if ((this.state.channel || '').toLowerCase() === "ebill" && nextProps.CreateEbill && nextProps.CreateEbill.createResponse && nextProps.CreateEbill.createResponse.templateId && nextProps.CreateEbill.createResponse.templateId !== '') {
459
+ if (selectedChannel === "ebill" && nextProps.CreateEbill && nextProps.CreateEbill.createResponse && nextProps.CreateEbill.createResponse.templateId && nextProps.CreateEbill.createResponse.templateId !== '') {
443
460
  const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
444
461
  CapNotification.success({key: 'duplicateSucess', message});
445
462
  this.getAllTemplates({params, resetPage: true});
446
463
  this.props.ebillActions.clearStoreValues();
447
464
  }
448
465
 
449
- if ((this.state.channel || '').toLowerCase() === "email" && nextProps.EmailCreate && nextProps.EmailCreate.duplicateResponse && nextProps.EmailCreate.duplicateResponse.templateId && nextProps.EmailCreate.duplicateResponse.templateId !== '') {
466
+ if (selectedChannel === "email" && nextProps.EmailCreate && nextProps.EmailCreate.duplicateResponse && nextProps.EmailCreate.duplicateResponse.templateId && nextProps.EmailCreate.duplicateResponse.templateId !== '') {
450
467
  const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
451
468
  CapNotification.success({key: 'duplicateSucess', message});
452
469
  this.getAllTemplates({params, resetPage: true});
453
470
  this.props.emailActions.clearStoreValues();
454
471
  }
455
472
 
456
- if ((this.state.channel || '').toLowerCase() === "line" && nextProps.Line && nextProps.Line.response && nextProps.Line.response.templateId && nextProps.Line.response.templateId !== '') {
473
+ if (selectedChannel === "line" && nextProps.Line && nextProps.Line.response && nextProps.Line.response.templateId && nextProps.Line.response.templateId !== '') {
457
474
  const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
458
475
  CapNotification.success({key: 'duplicateSuccess', message});
459
476
  this.getAllTemplates({params, resetPage: true});
460
477
  this.props.lineActions.clearCreateResponse();
461
478
  }
462
479
 
480
+
463
481
  if (nextProps.Create && this.props.Create && nextProps.Create.createTemplateError && !isEqual(nextProps.Create.createTemplateError, this.props.Create.createTemplateError)) {
464
482
  const message = this.props.intl.formatMessage(messages.somethingWentWrong);
465
483
  if ((this.state.channel || '').toLowerCase() !== "sms") {
466
484
  CapNotification.error({key: 'somethingWrong', message});
467
485
  }
468
- const { smsActions, mobilepushActions, ebillActions, lineActions, viberActions, facebookActions, whatsappActions } = this.props;
486
+ const { smsActions, mobilepushActions, ebillActions, lineActions, viberActions, facebookActions, whatsappActions, rcsActions } = this.props;
469
487
  switch (selectedChannel) {
470
488
  case SMS_LOWERCASE:
471
489
  smsActions.clearCreateResponse();
@@ -488,6 +506,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
488
506
  case WHATSAPP_LOWERCASE:
489
507
  whatsappActions.clearCreateResponse();
490
508
  break;
509
+ case RCS_LOWERCASE:
510
+ rcsActions.clearCreateResponse();
511
+ break;
491
512
  default:
492
513
  break;
493
514
  }
@@ -529,28 +550,30 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
529
550
  if (!isEmpty(nextProps.Templates.templateDetails) && !isEqual(nextProps.Templates.templateDetails, this.props.Templates.templateDetails)) {
530
551
  this.setState({previewTemplate: nextProps.Templates.templateDetails});
531
552
  }
553
+ const weCrmAccountsList = get(nextProps, `Templates.weCrmAccounts`, []);
554
+ const weCrmChannels = ['wechat', WHATSAPP_LOWERCASE];
532
555
 
533
- if (nextProps.Templates.weCrmAccounts !== undefined && nextProps.Templates.weCrmAccounts.length === 1 && this.state.defaultAccount && (['wechat', WHATSAPP_LOWERCASE].indexOf(this.state.channel.toLowerCase()) > -1 )) {
556
+ if (weCrmAccountsList.length === 1 && this.state.defaultAccount && (weCrmChannels.indexOf(selectedChannel) > -1)) {
534
557
  const paramsDefault = {
535
558
  name: this.state.searchText,
536
559
  sortBy: this.state.sortBy,
537
560
  };
538
- if (['wechat', WHATSAPP_LOWERCASE].includes(this.state.channel.toLowerCase())) {
539
- paramsDefault.wecrmId = nextProps.Templates.weCrmAccounts[0].configs.wecrm_app_id;
540
- paramsDefault.wecrmToken = nextProps.Templates.weCrmAccounts[0].configs.wecrm_token;
541
- paramsDefault.originalId = nextProps.Templates.weCrmAccounts[0].sourceAccountIdentifier;
542
- if (this.state.channel.toLowerCase() === WHATSAPP_LOWERCASE) {
561
+ if (weCrmChannels.includes(selectedChannel)) {
562
+ paramsDefault.wecrmId = weCrmAccountsList[0].configs.wecrm_app_id;
563
+ paramsDefault.wecrmToken = weCrmAccountsList[0].configs.wecrm_token;
564
+ paramsDefault.originalId = weCrmAccountsList[0].sourceAccountIdentifier;
565
+ if ([WHATSAPP_LOWERCASE].includes(selectedChannel)) {
543
566
  nextProps.actions.setChannelAccount(
544
- WHATSAPP,
545
- nextProps.Templates.weCrmAccounts[0],
567
+ selectedChannel.toUpperCase(),
568
+ weCrmAccountsList[0],
546
569
  );
547
570
  } else {
548
571
  nextProps.actions.setWeChatAccount(
549
- nextProps.Templates.weCrmAccounts[0],
572
+ weCrmAccountsList[0],
550
573
  );
551
574
  }
552
575
  }
553
- this.setState({defaultAccount: false, activeMode: TEMPLATES_MODE, selectedAccount: nextProps.Templates.weCrmAccounts[0].name });
576
+ this.setState({ defaultAccount: false, activeMode: TEMPLATES_MODE, selectedAccount: weCrmAccountsList[0].name });
554
577
  this.getAllTemplates({params: paramsDefault}, true);
555
578
  }
556
579
  }
@@ -570,12 +593,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
570
593
  name: this.state.searchText,
571
594
  sortBy: this.state.sortBy,
572
595
  };
573
- if (this.state.channel.toLowerCase() === 'wechat') {
596
+ const selectedChannel = this.state.channel.toLowerCase();
597
+ if (selectedChannel === 'wechat') {
574
598
  params.wecrmId = this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})].configs.wecrm_app_id;
575
599
  params.wecrmToken = this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})].configs.wecrm_token;
576
600
  this.props.actions.setWeChatAccount(this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})]);
577
601
  params.originalId = this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})].sourceAccountIdentifier;
578
- } else if (this.state.channel.toLowerCase() === 'mobilepush') {
602
+ } else if (selectedChannel === 'mobilepush') {
579
603
  this.props.actions.setWeChatAccount(this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})]);
580
604
  const account = this.props.Templates.weCrmAccounts[findIndex(this.props.Templates.weCrmAccounts, { name: value})];
581
605
  params.accountId = account.id;
@@ -588,10 +612,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
588
612
  } else {
589
613
  this.setState({selectedAccountError: false});
590
614
  }
591
- } else if (this.state.channel.toLowerCase() === LINE.toLowerCase()) {
592
- this.props.actions.setChannelAccount(LINE, this.props.Templates.weCrmAccounts.find((item) => item.name === this.state.selectedAccount));
593
- } else if (this.state.channel.toLowerCase() === WHATSAPP_LOWERCASE) {
594
- this.props.actions.setChannelAccount(WHATSAPP, this.props.Templates.weCrmAccounts.find((item) => item.name === this.state.selectedAccount));
615
+ } else if ([LINE.toLowerCase(), WHATSAPP_LOWERCASE, RCS_LOWERCASE].includes(selectedChannel)) {
616
+ this.props.actions.setChannelAccount(selectedChannel?.toUpperCase(), this.props.Templates.weCrmAccounts.find((item) => item.name === this.state.selectedAccount));
595
617
  }
596
618
 
597
619
  this.setState({activeMode: TEMPLATES_MODE});
@@ -743,13 +765,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
743
765
  }
744
766
 
745
767
  isStatusMatching = (status, selectedWhatsappStatus) => {
746
- if(this.props.isFullMode && selectedWhatsappStatus) {
768
+ if (this.props.isFullMode && selectedWhatsappStatus) {
747
769
  if ( [WHATSAPP_STATUSES.unsubmitted, WHATSAPP_STATUSES.pending].includes(status) ) {
748
770
  return selectedWhatsappStatus === WHATSAPP_STATUSES.awaitingApproval;
749
771
  }
750
- return selectedWhatsappStatus === status;
751
- }
752
- else if (!this.props.isFullMode){
772
+ return selectedWhatsappStatus === status;
773
+ } else if (!this.props.isFullMode) {
753
774
  return status === WHATSAPP_STATUSES.approved;
754
775
  }
755
776
  return true;
@@ -770,7 +791,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
770
791
  );
771
792
  });
772
793
  }
773
-
794
+
774
795
  filterSMSTemplates = (templates) => {
775
796
  const { smsFilter } = this.state;
776
797
  if (SMS_FILTERS.ALL === smsFilter) {
@@ -786,6 +807,43 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
786
807
  return messages.creativesTemplatesEdit;
787
808
  }
788
809
 
810
+ whatsappIllustrationText = (title, desc) =>
811
+ <CapHeader
812
+ title={
813
+ <CapHeading type="h3" className="channel-specific-illustration-text">
814
+ {this.props.intl.formatMessage(messages[title])}
815
+ </CapHeading>
816
+ }
817
+ description={
818
+ <CapLabel style={{ textAlign: "center" }}>
819
+ {this.props.intl.formatMessage(messages[desc])}
820
+ </CapLabel>
821
+ }
822
+ />
823
+
824
+ getSmsEmailIllustration = () =>
825
+ this.props.isDltFromRcs ? (
826
+ <CapHeader
827
+ title={
828
+ <CapHeading type="h3" className="channel-specific-illustration-text">
829
+ {this.props.intl.formatMessage(messages.rcsDltIllustrationTitle)}
830
+ </CapHeading>
831
+ }
832
+ description={
833
+ <CapLabel style={{ textAlign: 'center' }}>
834
+ {this.props.intl.formatMessage(messages.rcsDltIllustrationDesc)}
835
+ </CapLabel>
836
+ }
837
+ />
838
+ ) : (
839
+ <CapIllustration
840
+ buttonClassName={`create-new-${this.state.channel.toLowerCase()}`}
841
+ {...this.getChannelTypeIllustrationInfo(
842
+ this.state.channel.toUpperCase(),
843
+ )}
844
+ />
845
+ );
846
+
789
847
  getTemplateDataForGrid = ({templates, handlers, filterContent, channel, isLoading, loadingTip}) => {
790
848
  const currentChannel = channel.toUpperCase();
791
849
  const {channel: stateChannel} = this.state;
@@ -827,7 +885,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
827
885
  className={`view-${channelLowerCase}`}
828
886
  style={{marginRight: '16px'}}
829
887
  type="eye"
830
- onClick={() => { if (this.props.isFullMode) { handlers.handlePreviewClick(template); } else { this.props.handlePeviewTemplate(template); } }}
888
+ onClick={() => { if (!this.props.isFullMode || this.props.isDltFromRcs) { this.props.handlePeviewTemplate(template); } else { handlers.handlePreviewClick(template); } }}
831
889
  />,
832
890
  ],
833
891
  hoverOption: <CapButton className={this.props.isFullMode ? `edit-${channelLowerCase}` : `select-${channelLowerCase}`} onClick={(e) => handlers.handleEditClick(e, template, undefined, undefined, {account: this.state.selectedAccount})}>{hoverButtonText}</CapButton>,
@@ -844,7 +902,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
844
902
  } = {},
845
903
  } = {},
846
904
  } = template;
847
- if (this.props.isFullMode && !(this.state.channel.toUpperCase() === WHATSAPP && status === WHATSAPP_STATUSES.approved)) {
905
+ if (this.props.isFullMode && !this.props.isDltFromRcs && !(this.state.channel.toUpperCase() === WHATSAPP && status === WHATSAPP_STATUSES.approved)) {
848
906
  templateData.extra.push(<CapDropdown
849
907
  overlay={
850
908
  <CapMenu>
@@ -995,6 +1053,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
995
1053
 
996
1054
  templateData.content = getWhatsappContent(template).templateMsg;
997
1055
  break;
1056
+ case RCS: {
1057
+ templateData.title = template.name;
1058
+ templateData.content = getRCSContent(template);
1059
+ break;
1060
+ }
998
1061
  default:
999
1062
  templateData.content = "";
1000
1063
  }
@@ -1002,6 +1065,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1002
1065
  }) : [];
1003
1066
  const accountId = get(this.props, 'Templates.selectedWeChatAccount.uuid');
1004
1067
  const accounts = get(this.props, 'Templates.weCrmAccounts');
1068
+ const noWhatsappTemplates = this.isFullMode() && isEmpty(templates);
1069
+ const noFilteredWhatsappTemplates = this.isFullMode() && !isEmpty(templates) && isEmpty(filteredTemplates);
1070
+ const noApprovedWhatsappTemplates = !this.isFullMode() && isEmpty(filteredTemplates);
1071
+ const showWhatsappIllustration = !isEmpty(this.props.Templates.selectedWhatsappAccount) && [WHATSAPP_LOWERCASE].includes(channelLowerCase);
1072
+ const showRcsIllustration = channelLowerCase === RCS_LOWERCASE && isEmpty(templates);
1073
+ const noLoaderAndSearchText = isEmpty(this.state.searchText) && !isLoading;
1005
1074
  return (<div>
1006
1075
  {[WECHAT, MOBILE_PUSH].includes(currentChannel) && this.showAccountName()}
1007
1076
  {filterContent}
@@ -1018,7 +1087,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1018
1087
  fbType={"list"}
1019
1088
  />
1020
1089
  </div>)
1021
- : ['sms', "email"].includes(this.state.channel.toLowerCase()) && !isLoading && <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />
1090
+ : ['sms', "email"].includes(this.state.channel.toLowerCase()) && !isLoading && this.getSmsEmailIllustration()
1022
1091
  }
1023
1092
 
1024
1093
  {(this.state.selectedAccount === '' && isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") &&
@@ -1044,52 +1113,27 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1044
1113
  </div>
1045
1114
  )
1046
1115
  }
1047
- { !isEmpty(this.props.Templates.selectedWhatsappAccount) && [WHATSAPP_LOWERCASE].includes(this.state.channel.toLowerCase()) && this.state.selectedAccountError ?
1048
- <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
1049
- <CapHeading type="h6" >
1050
- {this.props.intl.formatMessage(messages.accountConfigError)}
1051
- <InlineDiv>
1052
- <CapLink title="here" style={{display: 'inline'}} onClick={() => { window.open(config.production.accountConfig`${accountId}`); }}/>
1053
- </InlineDiv>
1054
- </CapHeading>
1055
- </div> : (
1056
- [WHATSAPP_LOWERCASE].includes(this.state.channel.toLowerCase()) &&
1057
- isEmpty(this.state.searchText) &&
1058
- !isLoading &&
1116
+ {showWhatsappIllustration &&
1117
+ (
1118
+ noLoaderAndSearchText &&
1059
1119
  <div style={this.isFullMode() ? { height: "calc(100vh - 325px)", overflow: 'auto' } : {}}>
1060
- {this.isFullMode() && isEmpty(templates) && <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />}
1061
- {this.isFullMode() && !isEmpty(templates) && isEmpty(filteredTemplates) && <CapHeader
1062
- title={
1063
- <CapHeading type="h3" style={{ textAlign: "center", marginTop: CAP_SPACE_44 }}>
1064
- {this.props.intl.formatMessage(messages.noFilteredWhatsappTemplatesTitle)}
1065
- </CapHeading>
1066
- }
1067
- description={
1068
- <CapLabel style={{ textAlign: "center" }}>
1069
- {this.props.intl.formatMessage(messages.noFilteredWhatsappTemplatesDesc)}
1070
- </CapLabel>
1071
- }
1072
- />}
1073
- {!this.isFullMode() && isEmpty(filteredTemplates) && <CapHeader
1074
- title={
1075
- <CapHeading type="h3" style={{ textAlign: "center", marginTop: CAP_SPACE_44 }}>
1076
- {this.props.intl.formatMessage(messages.noApprovedWhatsappTemplatesTitle)}
1077
- </CapHeading>
1078
- }
1079
- description={
1080
- <CapLabel style={{ textAlign: "center" }}>
1081
- {this.props.intl.formatMessage(messages.noApprovedWhatsappTemplatesDesc)}
1082
- </CapLabel>
1083
- }
1084
- />}
1120
+ {noWhatsappTemplates && <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />}
1121
+ {noFilteredWhatsappTemplates && this.whatsappIllustrationText('noFilteredWhatsappTemplatesTitle', 'noFilteredWhatsappTemplatesDesc')}
1122
+ {noApprovedWhatsappTemplates && this.whatsappIllustrationText('noApprovedWhatsappTemplatesTitle', 'noApprovedWhatsappTemplatesDesc')}
1123
+ </div>
1124
+ )
1125
+ }
1126
+ {showRcsIllustration &&
1127
+ (
1128
+ noLoaderAndSearchText &&
1129
+ <div style={this.isFullMode() ? { height: "calc(100vh - 325px)", overflow: 'auto' } : {}}>
1130
+ <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />
1085
1131
  </div>
1086
1132
  )
1087
1133
  }
1088
1134
  </div>
1089
1135
  }
1090
-
1091
1136
  </CapSpin>
1092
-
1093
1137
  </div>);
1094
1138
  }
1095
1139
  filterLineTemplates = (templates) => {
@@ -1508,26 +1552,27 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1508
1552
  this.props.actions.deleteTemplate(this.state.channel.toUpperCase(), template._id);
1509
1553
  this.setState({actionTemplate: {}});
1510
1554
  }
1555
+ commonDuplicate(action, duplicateObj) {
1556
+ const params = {
1557
+ name: this.state.searchText,
1558
+ sortBy: this.state.sortBy,
1559
+ };
1560
+ this.props[action].createTemplate(duplicateObj, (response) => {
1561
+ if (response && response.templateId) {
1562
+ const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1563
+ CapNotification.success({key: 'duplicateSucess', message});
1564
+ this.getAllTemplates({params, resetPage: true});
1565
+ this.props[action].clearCreateResponse();
1566
+ }
1567
+ });
1568
+ }
1511
1569
 
1512
1570
  duplicateTemplate(template) {
1513
1571
  const duplicateObj = cloneDeep(template);
1514
1572
  duplicateObj.name = `Copy of ${template.name} ${moment().format('MM-DD-YYYY HH:mm:ss')}`;
1515
1573
  delete duplicateObj._id;
1516
- const params = {
1517
- name: this.state.searchText,
1518
- sortBy: this.state.sortBy,
1519
- };
1520
- if (this.state.channel.toLowerCase() === "sms") {
1521
- this.props.smsActions.createTemplate(duplicateObj, (response) => {
1522
- if (response && response.templateId) {
1523
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1524
- CapNotification.success({key: 'duplicateSucess', message});
1525
-
1526
- this.getAllTemplates({params, resetPage: true});
1527
- this.props.smsActions.clearCreateResponse();
1528
- }
1529
- });
1530
- } else if (this.state.channel.toLowerCase() === "mobilepush") {
1574
+
1575
+ if (this.state.channel.toLowerCase() === "mobilepush") {
1531
1576
  duplicateObj.definition.accountId = this.props.Templates.selectedWeChatAccount.id;
1532
1577
  this.props.mobilepushActions.createTemplate(duplicateObj, () => {
1533
1578
  const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
@@ -1539,33 +1584,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1539
1584
  this.props.ebillActions.createTemplate(duplicateObj);
1540
1585
  } else if (this.state.channel.toLowerCase() === "email") {
1541
1586
  this.props.emailActions.duplicateTemplate(template._id, "EMAIL");
1542
- } else if (this.state.channel.toLowerCase() === "line") {
1543
- this.props.lineActions.createTemplate(duplicateObj, (response) => {
1544
- if (response && response.templateId) {
1545
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1546
- CapNotification.success({key: 'duplicateSucess', message});
1547
- this.getAllTemplates({params, resetPage: true});
1548
- this.props.lineActions.clearCreateResponse();
1549
- }
1550
- });
1551
- } else if (this.state.channel.toLowerCase() === VIBER_CHANNEL) {
1552
- this.props.viberActions.createTemplate(duplicateObj, (response) => {
1553
- if (response && response.templateId) {
1554
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1555
- CapNotification.success({key: 'duplicateSucess', message});
1556
- this.getAllTemplates({params, resetPage: true});
1557
- this.props.viberActions.clearCreateResponse();
1558
- }
1559
- });
1560
- } else if (this.state.channel.toLowerCase() === FACEBOOK_CHANNEL) {
1561
- this.props.facebookActions.createTemplate(duplicateObj, (response) => {
1562
- if (response && response.templateId) {
1563
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1564
- CapNotification.success({key: 'duplicateSucess', message});
1565
- this.getAllTemplates({params, resetPage: true});
1566
- this.props.facebookActions.clearCreateResponse();
1567
- }
1568
- });
1587
+ } else if (["sms", "line", VIBER_CHANNEL, FACEBOOK_CHANNEL, RCS_LOWERCASE].includes(this.state.channel.toLowerCase())) {
1588
+ this.commonDuplicate(duplicateEnum[this.state.channel.toLowerCase()], duplicateObj);
1569
1589
  }
1570
1590
  }
1571
1591
 
@@ -1616,55 +1636,74 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1616
1636
  const module = this.props.location.query.module;
1617
1637
  const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : false;
1618
1638
  const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
1619
- let getQuery = "";
1639
+ const channelLowerCase = this.state.channel.toLowerCase();
1640
+ const channelUpperCase = this.state.channel.toUpperCase();
1641
+ let getQuery = type === 'embedded' ? { type: 'embedded', module, account_id: this.props.location.query.account_id } : { module };
1620
1642
  let pathName = path;
1621
1643
  e.stopPropagation();
1622
1644
 
1623
1645
  this.props.actions.resetTemplateData();
1624
- if (this.state.channel.toLowerCase() === 'sms') {
1625
- pathName = `/sms/edit/${id}`;
1626
- }
1627
- if (this.state.channel.toLowerCase() === 'mobilepush') {
1628
- pathName = `/mobilepush/edit/${id}`;
1629
- }
1630
- if (this.state.channel.toLowerCase() === 'email') {
1631
- pathName = `/email/edit/${id}`;
1632
- }
1633
- if (this.state.channel.toLowerCase() === 'email') {
1634
- getQuery = type === 'embedded' ? {type: 'embedded', module, isLanguageSupport, isEdmSupport} : {module, isEdmSupport};
1635
- } else {
1636
- getQuery = type === 'embedded' ? {type: 'embedded', module, account_id: this.props.location.query.account_id} : {module};
1637
- }
1638
- if (this.state.channel.toLowerCase() === 'ebill') {
1639
- pathName = `/ebill/edit/${id}`;
1640
- }
1641
- if (this.state.channel.toLowerCase() === 'line') {
1642
- const { messages } = template.versions.base.content;
1643
- const type = messages && messages[0] && messages[0].type;
1644
- pathName = `/line/edit/${id}/${type}`;
1645
- if (options && options.account) {
1646
- pathName += `/${options.account}`;
1646
+ switch (channelLowerCase) {
1647
+ case 'sms': {
1648
+ pathName = `/sms/edit/${id}`;
1649
+ break;
1647
1650
  }
1648
- }
1649
- if (this.state.channel.toLowerCase() === VIBER_CHANNEL) {
1650
- pathName = `/viber/edit/${id}/`;
1651
- }
1652
- if (this.state.channel.toLowerCase() === FACEBOOK_CHANNEL) {
1653
- pathName = `/facebook/edit/${id}/`;
1654
- }
1655
- if (this.state.channel.toUpperCase() === WECHAT) {
1656
- if (get(template, 'definition.msgcontent', '') === "RICH_MEDIA_WECHAT") {
1657
- pathName = `/wechat/richmedia/edit/${id}`;
1658
- } else {
1659
- pathName = `/wechat/edit/${id}`;
1651
+ case 'mobilepush': {
1652
+ pathName = `/mobilepush/edit/${id}`;
1653
+ break;
1654
+ }
1655
+ case 'email': {
1656
+ pathName = `/email/edit/${id}`;
1657
+ getQuery = type === 'embedded' ? { type: 'embedded', module, isLanguageSupport, isEdmSupport } : { module, isEdmSupport };
1658
+ break;
1660
1659
  }
1660
+ case 'ebill': {
1661
+ pathName = `/ebill/edit/${id}`;
1662
+ break;
1663
+ }
1664
+ case 'line': {
1665
+ const { messages } = template.versions.base.content;
1666
+ const type = messages && messages[0] && messages[0].type;
1667
+ pathName = `/line/edit/${id}/${type}`;
1668
+ if (options && options.account) {
1669
+ pathName += `/${options.account}`;
1670
+ }
1671
+ break;
1672
+ }
1673
+ case VIBER_CHANNEL: {
1674
+ pathName = `/viber/edit/${id}/`;
1675
+ break;
1676
+ }
1677
+ case FACEBOOK_CHANNEL: {
1678
+ pathName = `/facebook/edit/${id}/`;
1679
+ break;
1680
+ }
1681
+ default:
1682
+ break;
1661
1683
  }
1662
- if (this.state.channel.toUpperCase() === WHATSAPP) {
1663
- pathName = `/whatsapp/edit/${id}/`;
1684
+ switch (channelUpperCase) {
1685
+ case WECHAT: {
1686
+ if (get(template, 'definition.msgcontent', '') === "RICH_MEDIA_WECHAT") {
1687
+ pathName = `/wechat/richmedia/edit/${id}`;
1688
+ } else {
1689
+ pathName = `/wechat/edit/${id}`;
1690
+ }
1691
+ break;
1692
+ }
1693
+ case WHATSAPP: {
1694
+ pathName = `/whatsapp/edit/${id}/`;
1695
+ break;
1696
+ }
1697
+ case RCS: {
1698
+ pathName = `/rcs/edit/${id}/`;
1699
+ break;
1700
+ }
1701
+ default:
1702
+ break;
1664
1703
  }
1665
1704
  if (this.isEnabledInLibraryModule("callSelectFromProps")) {
1666
1705
  let data = id;
1667
- if (this.props.fbAdManager) {
1706
+ if (this.props.fbAdManager || this.props.isDltFromRcs) {
1668
1707
  data = this.selectTemplate(id);
1669
1708
  }
1670
1709
  this.props.onSelectTemplate(data, this.props.fbAdManager);
@@ -1953,6 +1992,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1953
1992
  return isDisabled;
1954
1993
  }
1955
1994
 
1995
+ checkLoader = (channel) => {
1996
+ const {
1997
+ getAllTemplatesInProgress,
1998
+ } = this.props.Templates || {};
1999
+ return (getAllTemplatesInProgress && this.state.channel.toLowerCase() === channel);
2000
+ }
1956
2001
 
1957
2002
  isLoading = () => {
1958
2003
  const { EmailCreate, Templates } = this.props;
@@ -1962,10 +2007,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1962
2007
  fetchingWeCrmAccounts,
1963
2008
  sendingFile,
1964
2009
  } = Templates;
1965
- const lineLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === 'line');
1966
- const smsLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === 'sms');
1967
- const viberLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === VIBER_CHANNEL);
1968
- const facebookLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === FACEBOOK_CHANNEL);
2010
+ const lineLoader = this.checkLoader('line');
2011
+ const smsLoader = this.checkLoader('sms');
2012
+ const viberLoader = this.checkLoader(VIBER_CHANNEL);
2013
+ const facebookLoader = this.checkLoader(FACEBOOK_CHANNEL);
2014
+ const rcsLoader = this.checkLoader(RCS_LOWERCASE);
1969
2015
 
1970
2016
  const wechatLoader = (((this.state.selectedAccount !== '' && getAllTemplatesInProgress) || (fetchingWeCrmAccounts)) && this.state.channel.toLowerCase() === 'wechat');
1971
2017
  const whatsappLoader = (((this.state.selectedAccount !== '' && getAllTemplatesInProgress) || (fetchingWeCrmAccounts)) && this.state.channel.toLowerCase() === WHATSAPP_LOWERCASE);
@@ -1984,7 +2030,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1984
2030
  (mobilePushLoader !== undefined ? mobilePushLoader : false) ||
1985
2031
  (lineLoader !== undefined ? lineLoader : false) ||
1986
2032
  (facebookLoader !== undefined ? facebookLoader : false) ||
1987
- (viberLoader !== undefined ? viberLoader : false);
2033
+ (viberLoader !== undefined ? viberLoader : false) ||
2034
+ (rcsLoader !== undefined ? rcsLoader : false);
1988
2035
  return isLoading;
1989
2036
  }
1990
2037
  getChannelTypeIllustrationInfo = (type) => {
@@ -2021,7 +2068,17 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2021
2068
  title: <FormattedMessage {...messages.whatsappTitleIllustration} values={{ template: templateText }} />,
2022
2069
  description: <FormattedMessage {...messages.whatsappDescIllustration} />,
2023
2070
  descriptionPosition: 'bottom',
2024
- descriptionClassName: 'whatsapp-illustration-desc',
2071
+ descriptionClassName: 'illustration-desc',
2072
+ };
2073
+ case RCS:
2074
+ return {
2075
+ buttonLabel: <FormattedMessage {...messages.newRCSTemplate} values={{ template: templateText }} />,
2076
+ onClick: this.createTemplate,
2077
+ illustrationImage: rcsIllustration,
2078
+ title: <FormattedMessage {...messages.rcsTitleIllustartion} values={{ template: templateText }} />,
2079
+ description: <FormattedMessage {...messages.rcsDescIllustartion} />,
2080
+ descriptionPosition: 'bottom',
2081
+ descriptionClassName: 'illustration-desc rcs-illustration',
2025
2082
  };
2026
2083
  default:
2027
2084
  return {};
@@ -2078,7 +2135,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2078
2135
  const { weCrmAccounts = [], fetchingWeCrmAccounts = false, campaignSettings = {} } = templates;
2079
2136
  const isWechatChannel = channel === WECHAT;
2080
2137
  const isMobilePushChannel = channel === MOBILE_PUSH;
2081
- const isFacebookChannel = channel === FACEBOOK;
2138
+ const isFacebookChannel = channel === FACEBOOK;
2082
2139
 
2083
2140
  if ([WECHAT, MOBILE_PUSH, LINE, WHATSAPP].includes(channel) && !isEmpty(weCrmAccounts) && !isFacebookChannel) {
2084
2141
  forEach(weCrmAccounts, (account) => {
@@ -2217,7 +2274,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2217
2274
  [MOBILE_PUSH]: 'mobilepushAccount',
2218
2275
  [WECHAT]: 'wechatAccount',
2219
2276
  [WHATSAPP]: 'whatsappAccount',
2220
- }
2277
+ };
2221
2278
  return formatMessage(messages[channelObj[channel?.toUpperCase()]]);
2222
2279
  }
2223
2280
 
@@ -2326,13 +2383,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2326
2383
  }
2327
2384
  }
2328
2385
 
2329
- const showForViber = (![VIBER_CHANNEL, FACEBOOK_CHANNEL].includes(channel.toLowerCase()) ||
2386
+ const showForChannels = (![VIBER_CHANNEL, FACEBOOK_CHANNEL].includes(channel.toLowerCase()) ||
2330
2387
  (channel.toLowerCase() === VIBER_CHANNEL && !this.props.isFullMode && isEmpty(get(this.props, 'Templates.selectedViberAccount', {}))) ||
2331
2388
  (channel.toLowerCase() === FACEBOOK_CHANNEL && showFbAds)
2332
2389
  );
2333
2390
 
2334
2391
 
2335
- if (activeMode === ACCOUNT_SELECTION_MODE && showForViber ) {
2392
+ if (activeMode === ACCOUNT_SELECTION_MODE && showForChannels ) {
2336
2393
  return this.renderAccountSelection();
2337
2394
  }
2338
2395
 
@@ -2366,12 +2423,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2366
2423
  const channelLowerCase = (channel || '').toLowerCase();
2367
2424
  const isTraiDltFeature = this.checkDLTfeatureEnable();
2368
2425
 
2369
- const createButton =
2426
+ const createButton =
2370
2427
  ( channelLowerCase === WHATSAPP_LOWERCASE && !this.props.isFullMode )
2371
2428
  ? (
2372
- <CapLink
2373
- onClick={this.openCreativesFullMode}
2374
- title={formatMessage(messages.createNewTemplateLink)}
2429
+ <CapLink
2430
+ onClick={this.openCreativesFullMode}
2431
+ title={formatMessage(messages.createNewTemplateLink)}
2375
2432
  suffix={<CapIcon type="open-in-new" size="s" />}
2376
2433
  className="create-new-link"
2377
2434
  />
@@ -2426,7 +2483,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2426
2483
  onSelect={this.setWhatsappStatus}
2427
2484
  selectedValue={this.state.selectedWhatsappStatus}
2428
2485
  placeholder="Status"
2429
- showBadge={true}
2486
+ showBadge
2430
2487
  width="90px"
2431
2488
  />
2432
2489
  ) : null
@@ -2437,12 +2494,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2437
2494
  onSelect={this.setWhatsappCategory}
2438
2495
  selectedValue={this.state.selectedWhatsappCategory}
2439
2496
  placeholder="Category"
2440
- showBadge={true}
2497
+ showBadge
2441
2498
  width="105px"
2442
2499
  overlayStyle={{ overflowY: "hidden" }}
2443
2500
  />
2444
2501
  </div>
2445
-
2502
+
2446
2503
  )
2447
2504
  }
2448
2505
  {
@@ -2520,7 +2577,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2520
2577
  </div>
2521
2578
  </CapTooltip>
2522
2579
  )
2523
- : isfilterContentVisisble && !isWechatEmbedded && createButton
2580
+ : isfilterContentVisisble && !isWechatEmbedded && !this.props.isDltFromRcs && createButton
2524
2581
  }
2525
2582
  </div>
2526
2583
 
@@ -2651,7 +2708,9 @@ Templates.propTypes = {
2651
2708
  viberActions: PropTypes.object,
2652
2709
  facebookActions: PropTypes.object,
2653
2710
  whatsappActions: PropTypes.object,
2711
+ rcsActions: PropTypes.object,
2654
2712
  smsRegister: PropTypes.any,
2713
+ isDltFromRcs: PropTypes.bool,
2655
2714
  };
2656
2715
 
2657
2716
  const mapStateToProps = createStructuredSelector({
@@ -2680,6 +2739,7 @@ function mapDispatchToProps(dispatch) {
2680
2739
  viberActions: bindActionCreators(viberActions, dispatch),
2681
2740
  facebookActions: bindActionCreators(facebookActions, dispatch),
2682
2741
  whatsappActions: bindActionCreators(whatsappActions, dispatch),
2742
+ rcsActions: bindActionCreators(rcsActions, dispatch),
2683
2743
  };
2684
2744
  }
2685
2745