@capillarytech/creatives-library 7.12.15 → 7.12.16

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 (57) hide show
  1. package/index.js +6 -0
  2. package/package.json +1 -1
  3. package/routes.js +7 -2
  4. package/services/api.js +8 -2
  5. package/v2Components/CapImageUpload/index.js +24 -11
  6. package/v2Components/CapImageUpload/index.scss +12 -27
  7. package/v2Components/CapImageUpload/messages.js +10 -5
  8. package/v2Components/TemplatePreview/_templatePreview.scss +10 -0
  9. package/v2Components/TemplatePreview/assets/images/sms_mobile_ios.svg +18 -0
  10. package/v2Components/TemplatePreview/index.js +41 -1
  11. package/v2Components/TemplatePreview/tests/__snapshots__/index.test.js.snap +33 -1
  12. package/v2Components/TemplatePreview/tests/index.test.js +7 -7
  13. package/v2Containers/App/constants.js +2 -1
  14. package/v2Containers/Assets/images/addCreativesIllustration.svg +30 -0
  15. package/v2Containers/Assets/images/rcsIllustration.png +0 -0
  16. package/v2Containers/Cap/messages.js +20 -1
  17. package/v2Containers/CreativesContainer/SlideBoxContent.js +58 -11
  18. package/v2Containers/CreativesContainer/SlideBoxHeader.js +41 -32
  19. package/v2Containers/CreativesContainer/constants.js +1 -0
  20. package/v2Containers/CreativesContainer/index.js +53 -1
  21. package/v2Containers/CreativesContainer/messages.js +4 -0
  22. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +24 -4
  23. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +23 -4
  24. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +147 -2
  25. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -0
  26. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +71 -0
  27. package/v2Containers/CreativesContainer/tests/index.test.js +21 -9
  28. package/v2Containers/Facebook/Advertisement/index.js +4 -2
  29. package/v2Containers/MobilePush/Edit/index.js +21 -34
  30. package/v2Containers/Rcs/actions.js +57 -0
  31. package/v2Containers/Rcs/constants.js +51 -0
  32. package/v2Containers/Rcs/index.js +1075 -0
  33. package/v2Containers/Rcs/index.scss +72 -0
  34. package/v2Containers/Rcs/messages.js +122 -0
  35. package/v2Containers/Rcs/reducer.js +107 -0
  36. package/v2Containers/Rcs/sagas.js +141 -0
  37. package/v2Containers/Rcs/selectors.js +8 -0
  38. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +144496 -0
  39. package/v2Containers/Rcs/tests/index.test.js +226 -0
  40. package/v2Containers/Rcs/tests/mockData.js +166 -0
  41. package/v2Containers/Rcs/utils.js +40 -0
  42. package/v2Containers/SmsTrai/Edit/index.js +2 -0
  43. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +4 -4
  44. package/v2Containers/Templates/_templates.scss +9 -1
  45. package/v2Containers/Templates/actions.js +2 -1
  46. package/v2Containers/Templates/constants.js +1 -0
  47. package/v2Containers/Templates/index.js +234 -174
  48. package/v2Containers/Templates/messages.js +20 -0
  49. package/v2Containers/Templates/reducer.js +2 -0
  50. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +520 -80
  51. package/v2Containers/TemplatesV2/index.js +13 -4
  52. package/v2Containers/TemplatesV2/messages.js +4 -0
  53. package/v2Containers/Whatsapp/index.js +4 -2
  54. package/v2Containers/Whatsapp/messages.js +0 -13
  55. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +13 -13
  56. package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +32 -26
  57. package/v2Containers/mockdata.js +1 -1
@@ -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});
@@ -744,13 +766,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
744
766
  }
745
767
 
746
768
  isStatusMatching = (status, selectedWhatsappStatus) => {
747
- if(this.props.isFullMode && selectedWhatsappStatus) {
769
+ if (this.props.isFullMode && selectedWhatsappStatus) {
748
770
  if ( [WHATSAPP_STATUSES.unsubmitted, WHATSAPP_STATUSES.pending].includes(status) ) {
749
771
  return selectedWhatsappStatus === WHATSAPP_STATUSES.awaitingApproval;
750
772
  }
751
- return selectedWhatsappStatus === status;
752
- }
753
- else if (!this.props.isFullMode){
773
+ return selectedWhatsappStatus === status;
774
+ } else if (!this.props.isFullMode) {
754
775
  return status === WHATSAPP_STATUSES.approved;
755
776
  }
756
777
  return true;
@@ -771,7 +792,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
771
792
  );
772
793
  });
773
794
  }
774
-
795
+
775
796
  filterSMSTemplates = (templates) => {
776
797
  const { smsFilter } = this.state;
777
798
  if (SMS_FILTERS.ALL === smsFilter) {
@@ -787,6 +808,43 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
787
808
  return messages.creativesTemplatesEdit;
788
809
  }
789
810
 
811
+ whatsappIllustrationText = (title, desc) =>
812
+ <CapHeader
813
+ title={
814
+ <CapHeading type="h3" className="channel-specific-illustration-text">
815
+ {this.props.intl.formatMessage(messages[title])}
816
+ </CapHeading>
817
+ }
818
+ description={
819
+ <CapLabel style={{ textAlign: "center" }}>
820
+ {this.props.intl.formatMessage(messages[desc])}
821
+ </CapLabel>
822
+ }
823
+ />
824
+
825
+ getSmsEmailIllustration = () =>
826
+ this.props.isDltFromRcs ? (
827
+ <CapHeader
828
+ title={
829
+ <CapHeading type="h3" className="channel-specific-illustration-text">
830
+ {this.props.intl.formatMessage(messages.rcsDltIllustrationTitle)}
831
+ </CapHeading>
832
+ }
833
+ description={
834
+ <CapLabel style={{ textAlign: 'center' }}>
835
+ {this.props.intl.formatMessage(messages.rcsDltIllustrationDesc)}
836
+ </CapLabel>
837
+ }
838
+ />
839
+ ) : (
840
+ <CapIllustration
841
+ buttonClassName={`create-new-${this.state.channel.toLowerCase()}`}
842
+ {...this.getChannelTypeIllustrationInfo(
843
+ this.state.channel.toUpperCase(),
844
+ )}
845
+ />
846
+ );
847
+
790
848
  getTemplateDataForGrid = ({templates, handlers, filterContent, channel, isLoading, loadingTip}) => {
791
849
  const currentChannel = channel.toUpperCase();
792
850
  const {channel: stateChannel} = this.state;
@@ -828,7 +886,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
828
886
  className={`view-${channelLowerCase}`}
829
887
  style={{marginRight: '16px'}}
830
888
  type="eye"
831
- onClick={() => { if (this.props.isFullMode) { handlers.handlePreviewClick(template); } else { this.props.handlePeviewTemplate(template); } }}
889
+ onClick={() => { if (!this.props.isFullMode || this.props.isDltFromRcs) { this.props.handlePeviewTemplate(template); } else { handlers.handlePreviewClick(template); } }}
832
890
  />,
833
891
  ],
834
892
  hoverOption: <CapButton className={this.props.isFullMode ? `edit-${channelLowerCase}` : `select-${channelLowerCase}`} onClick={(e) => handlers.handleEditClick(e, template, undefined, undefined, {account: this.state.selectedAccount})}>{hoverButtonText}</CapButton>,
@@ -845,7 +903,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
845
903
  } = {},
846
904
  } = {},
847
905
  } = template;
848
- if (this.props.isFullMode && !(this.state.channel.toUpperCase() === WHATSAPP && status === WHATSAPP_STATUSES.approved)) {
906
+ if (this.props.isFullMode && !this.props.isDltFromRcs && !(this.state.channel.toUpperCase() === WHATSAPP && status === WHATSAPP_STATUSES.approved)) {
849
907
  templateData.extra.push(<CapDropdown
850
908
  overlay={
851
909
  <CapMenu>
@@ -996,6 +1054,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
996
1054
 
997
1055
  templateData.content = getWhatsappContent(template).templateMsg;
998
1056
  break;
1057
+ case RCS: {
1058
+ templateData.title = template.name;
1059
+ templateData.content = getRCSContent(template);
1060
+ break;
1061
+ }
999
1062
  default:
1000
1063
  templateData.content = "";
1001
1064
  }
@@ -1003,6 +1066,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1003
1066
  }) : [];
1004
1067
  const accountId = get(this.props, 'Templates.selectedWeChatAccount.uuid');
1005
1068
  const accounts = get(this.props, 'Templates.weCrmAccounts');
1069
+ const noWhatsappTemplates = this.isFullMode() && isEmpty(templates);
1070
+ const noFilteredWhatsappTemplates = this.isFullMode() && !isEmpty(templates) && isEmpty(filteredTemplates);
1071
+ const noApprovedWhatsappTemplates = !this.isFullMode() && isEmpty(filteredTemplates);
1072
+ const showWhatsappIllustration = !isEmpty(this.props.Templates.selectedWhatsappAccount) && [WHATSAPP_LOWERCASE].includes(channelLowerCase);
1073
+ const showRcsIllustration = channelLowerCase === RCS_LOWERCASE && isEmpty(templates);
1074
+ const noLoaderAndSearchText = isEmpty(this.state.searchText) && !isLoading;
1006
1075
  return (<div>
1007
1076
  {[WECHAT, MOBILE_PUSH].includes(currentChannel) && this.showAccountName()}
1008
1077
  {filterContent}
@@ -1019,7 +1088,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1019
1088
  fbType={"list"}
1020
1089
  />
1021
1090
  </div>)
1022
- : ['sms', "email"].includes(this.state.channel.toLowerCase()) && !isLoading && <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />
1091
+ : ['sms', "email"].includes(this.state.channel.toLowerCase()) && !isLoading && this.getSmsEmailIllustration()
1023
1092
  }
1024
1093
 
1025
1094
  {(this.state.selectedAccount === '' && isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") &&
@@ -1045,52 +1114,27 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1045
1114
  </div>
1046
1115
  )
1047
1116
  }
1048
- { !isEmpty(this.props.Templates.selectedWhatsappAccount) && [WHATSAPP_LOWERCASE].includes(this.state.channel.toLowerCase()) && this.state.selectedAccountError ?
1049
- <div style={{ height: '65vh', textAlign: 'center', lineHeight: '65vh'}}>
1050
- <CapHeading type="h6" >
1051
- {this.props.intl.formatMessage(messages.accountConfigError)}
1052
- <InlineDiv>
1053
- <CapLink title="here" style={{display: 'inline'}} onClick={() => { window.open(config.production.accountConfig`${accountId}`); }}/>
1054
- </InlineDiv>
1055
- </CapHeading>
1056
- </div> : (
1057
- [WHATSAPP_LOWERCASE].includes(this.state.channel.toLowerCase()) &&
1058
- isEmpty(this.state.searchText) &&
1059
- !isLoading &&
1117
+ {showWhatsappIllustration &&
1118
+ (
1119
+ noLoaderAndSearchText &&
1060
1120
  <div style={this.isFullMode() ? { height: "calc(100vh - 325px)", overflow: 'auto' } : {}}>
1061
- {this.isFullMode() && isEmpty(templates) && <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />}
1062
- {this.isFullMode() && !isEmpty(templates) && isEmpty(filteredTemplates) && <CapHeader
1063
- title={
1064
- <CapHeading type="h3" style={{ textAlign: "center", marginTop: CAP_SPACE_44 }}>
1065
- {this.props.intl.formatMessage(messages.noFilteredWhatsappTemplatesTitle)}
1066
- </CapHeading>
1067
- }
1068
- description={
1069
- <CapLabel style={{ textAlign: "center" }}>
1070
- {this.props.intl.formatMessage(messages.noFilteredWhatsappTemplatesDesc)}
1071
- </CapLabel>
1072
- }
1073
- />}
1074
- {!this.isFullMode() && isEmpty(filteredTemplates) && <CapHeader
1075
- title={
1076
- <CapHeading type="h3" style={{ textAlign: "center", marginTop: CAP_SPACE_44 }}>
1077
- {this.props.intl.formatMessage(messages.noApprovedWhatsappTemplatesTitle)}
1078
- </CapHeading>
1079
- }
1080
- description={
1081
- <CapLabel style={{ textAlign: "center" }}>
1082
- {this.props.intl.formatMessage(messages.noApprovedWhatsappTemplatesDesc)}
1083
- </CapLabel>
1084
- }
1085
- />}
1121
+ {noWhatsappTemplates && <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />}
1122
+ {noFilteredWhatsappTemplates && this.whatsappIllustrationText('noFilteredWhatsappTemplatesTitle', 'noFilteredWhatsappTemplatesDesc')}
1123
+ {noApprovedWhatsappTemplates && this.whatsappIllustrationText('noApprovedWhatsappTemplatesTitle', 'noApprovedWhatsappTemplatesDesc')}
1124
+ </div>
1125
+ )
1126
+ }
1127
+ {showRcsIllustration &&
1128
+ (
1129
+ noLoaderAndSearchText &&
1130
+ <div style={this.isFullMode() ? { height: "calc(100vh - 325px)", overflow: 'auto' } : {}}>
1131
+ <CapIllustration buttonClassName={`create-new-${channelLowerCase}`} {...this.getChannelTypeIllustrationInfo(currentChannel)} />
1086
1132
  </div>
1087
1133
  )
1088
1134
  }
1089
1135
  </div>
1090
1136
  }
1091
-
1092
1137
  </CapSpin>
1093
-
1094
1138
  </div>);
1095
1139
  }
1096
1140
  filterLineTemplates = (templates) => {
@@ -1509,26 +1553,27 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1509
1553
  this.props.actions.deleteTemplate(this.state.channel.toUpperCase(), template._id);
1510
1554
  this.setState({actionTemplate: {}});
1511
1555
  }
1556
+ commonDuplicate(action, duplicateObj) {
1557
+ const params = {
1558
+ name: this.state.searchText,
1559
+ sortBy: this.state.sortBy,
1560
+ };
1561
+ this.props[action].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[action].clearCreateResponse();
1567
+ }
1568
+ });
1569
+ }
1512
1570
 
1513
1571
  duplicateTemplate(template) {
1514
1572
  const duplicateObj = cloneDeep(template);
1515
1573
  duplicateObj.name = `Copy of ${template.name} ${moment().format('MM-DD-YYYY HH:mm:ss')}`;
1516
1574
  delete duplicateObj._id;
1517
- const params = {
1518
- name: this.state.searchText,
1519
- sortBy: this.state.sortBy,
1520
- };
1521
- if (this.state.channel.toLowerCase() === "sms") {
1522
- this.props.smsActions.createTemplate(duplicateObj, (response) => {
1523
- if (response && response.templateId) {
1524
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1525
- CapNotification.success({key: 'duplicateSucess', message});
1526
-
1527
- this.getAllTemplates({params, resetPage: true});
1528
- this.props.smsActions.clearCreateResponse();
1529
- }
1530
- });
1531
- } else if (this.state.channel.toLowerCase() === "mobilepush") {
1575
+
1576
+ if (this.state.channel.toLowerCase() === "mobilepush") {
1532
1577
  duplicateObj.definition.accountId = this.props.Templates.selectedWeChatAccount.id;
1533
1578
  this.props.mobilepushActions.createTemplate(duplicateObj, () => {
1534
1579
  const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
@@ -1540,33 +1585,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1540
1585
  this.props.ebillActions.createTemplate(duplicateObj);
1541
1586
  } else if (this.state.channel.toLowerCase() === "email") {
1542
1587
  this.props.emailActions.duplicateTemplate(template._id, "EMAIL");
1543
- } else if (this.state.channel.toLowerCase() === "line") {
1544
- this.props.lineActions.createTemplate(duplicateObj, (response) => {
1545
- if (response && response.templateId) {
1546
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1547
- CapNotification.success({key: 'duplicateSucess', message});
1548
- this.getAllTemplates({params, resetPage: true});
1549
- this.props.lineActions.clearCreateResponse();
1550
- }
1551
- });
1552
- } else if (this.state.channel.toLowerCase() === VIBER_CHANNEL) {
1553
- this.props.viberActions.createTemplate(duplicateObj, (response) => {
1554
- if (response && response.templateId) {
1555
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1556
- CapNotification.success({key: 'duplicateSucess', message});
1557
- this.getAllTemplates({params, resetPage: true});
1558
- this.props.viberActions.clearCreateResponse();
1559
- }
1560
- });
1561
- } else if (this.state.channel.toLowerCase() === FACEBOOK_CHANNEL) {
1562
- this.props.facebookActions.createTemplate(duplicateObj, (response) => {
1563
- if (response && response.templateId) {
1564
- const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
1565
- CapNotification.success({key: 'duplicateSucess', message});
1566
- this.getAllTemplates({params, resetPage: true});
1567
- this.props.facebookActions.clearCreateResponse();
1568
- }
1569
- });
1588
+ } else if (["sms", "line", VIBER_CHANNEL, FACEBOOK_CHANNEL, RCS_LOWERCASE].includes(this.state.channel.toLowerCase())) {
1589
+ this.commonDuplicate(duplicateEnum[this.state.channel.toLowerCase()], duplicateObj);
1570
1590
  }
1571
1591
  }
1572
1592
 
@@ -1617,55 +1637,74 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1617
1637
  const module = this.props.location.query.module;
1618
1638
  const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : false;
1619
1639
  const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
1620
- let getQuery = "";
1640
+ const channelLowerCase = this.state.channel.toLowerCase();
1641
+ const channelUpperCase = this.state.channel.toUpperCase();
1642
+ let getQuery = type === 'embedded' ? { type: 'embedded', module, account_id: this.props.location.query.account_id } : { module };
1621
1643
  let pathName = path;
1622
1644
  e.stopPropagation();
1623
1645
 
1624
1646
  this.props.actions.resetTemplateData();
1625
- if (this.state.channel.toLowerCase() === 'sms') {
1626
- pathName = `/sms/edit/${id}`;
1627
- }
1628
- if (this.state.channel.toLowerCase() === 'mobilepush') {
1629
- pathName = `/mobilepush/edit/${id}`;
1630
- }
1631
- if (this.state.channel.toLowerCase() === 'email') {
1632
- pathName = `/email/edit/${id}`;
1633
- }
1634
- if (this.state.channel.toLowerCase() === 'email') {
1635
- getQuery = type === 'embedded' ? {type: 'embedded', module, isLanguageSupport, isEdmSupport} : {module, isEdmSupport};
1636
- } else {
1637
- getQuery = type === 'embedded' ? {type: 'embedded', module, account_id: this.props.location.query.account_id} : {module};
1638
- }
1639
- if (this.state.channel.toLowerCase() === 'ebill') {
1640
- pathName = `/ebill/edit/${id}`;
1641
- }
1642
- if (this.state.channel.toLowerCase() === 'line') {
1643
- const { messages } = template.versions.base.content;
1644
- const type = messages && messages[0] && messages[0].type;
1645
- pathName = `/line/edit/${id}/${type}`;
1646
- if (options && options.account) {
1647
- pathName += `/${options.account}`;
1647
+ switch (channelLowerCase) {
1648
+ case 'sms': {
1649
+ pathName = `/sms/edit/${id}`;
1650
+ break;
1648
1651
  }
1649
- }
1650
- if (this.state.channel.toLowerCase() === VIBER_CHANNEL) {
1651
- pathName = `/viber/edit/${id}/`;
1652
- }
1653
- if (this.state.channel.toLowerCase() === FACEBOOK_CHANNEL) {
1654
- pathName = `/facebook/edit/${id}/`;
1655
- }
1656
- if (this.state.channel.toUpperCase() === WECHAT) {
1657
- if (get(template, 'definition.msgcontent', '') === "RICH_MEDIA_WECHAT") {
1658
- pathName = `/wechat/richmedia/edit/${id}`;
1659
- } else {
1660
- pathName = `/wechat/edit/${id}`;
1652
+ case 'mobilepush': {
1653
+ pathName = `/mobilepush/edit/${id}`;
1654
+ break;
1655
+ }
1656
+ case 'email': {
1657
+ pathName = `/email/edit/${id}`;
1658
+ getQuery = type === 'embedded' ? { type: 'embedded', module, isLanguageSupport, isEdmSupport } : { module, isEdmSupport };
1659
+ break;
1661
1660
  }
1661
+ case 'ebill': {
1662
+ pathName = `/ebill/edit/${id}`;
1663
+ break;
1664
+ }
1665
+ case 'line': {
1666
+ const { messages } = template.versions.base.content;
1667
+ const type = messages && messages[0] && messages[0].type;
1668
+ pathName = `/line/edit/${id}/${type}`;
1669
+ if (options && options.account) {
1670
+ pathName += `/${options.account}`;
1671
+ }
1672
+ break;
1673
+ }
1674
+ case VIBER_CHANNEL: {
1675
+ pathName = `/viber/edit/${id}/`;
1676
+ break;
1677
+ }
1678
+ case FACEBOOK_CHANNEL: {
1679
+ pathName = `/facebook/edit/${id}/`;
1680
+ break;
1681
+ }
1682
+ default:
1683
+ break;
1662
1684
  }
1663
- if (this.state.channel.toUpperCase() === WHATSAPP) {
1664
- pathName = `/whatsapp/edit/${id}/`;
1685
+ switch (channelUpperCase) {
1686
+ case WECHAT: {
1687
+ if (get(template, 'definition.msgcontent', '') === "RICH_MEDIA_WECHAT") {
1688
+ pathName = `/wechat/richmedia/edit/${id}`;
1689
+ } else {
1690
+ pathName = `/wechat/edit/${id}`;
1691
+ }
1692
+ break;
1693
+ }
1694
+ case WHATSAPP: {
1695
+ pathName = `/whatsapp/edit/${id}/`;
1696
+ break;
1697
+ }
1698
+ case RCS: {
1699
+ pathName = `/rcs/edit/${id}/`;
1700
+ break;
1701
+ }
1702
+ default:
1703
+ break;
1665
1704
  }
1666
1705
  if (this.isEnabledInLibraryModule("callSelectFromProps")) {
1667
1706
  let data = id;
1668
- if (this.props.fbAdManager) {
1707
+ if (this.props.fbAdManager || this.props.isDltFromRcs) {
1669
1708
  data = this.selectTemplate(id);
1670
1709
  }
1671
1710
  this.props.onSelectTemplate(data, this.props.fbAdManager);
@@ -1954,6 +1993,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1954
1993
  return isDisabled;
1955
1994
  }
1956
1995
 
1996
+ checkLoader = (channel) => {
1997
+ const {
1998
+ getAllTemplatesInProgress,
1999
+ } = this.props.Templates || {};
2000
+ return (getAllTemplatesInProgress && this.state.channel.toLowerCase() === channel);
2001
+ }
1957
2002
 
1958
2003
  isLoading = () => {
1959
2004
  const { EmailCreate, Templates } = this.props;
@@ -1963,10 +2008,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1963
2008
  fetchingWeCrmAccounts,
1964
2009
  sendingFile,
1965
2010
  } = Templates;
1966
- const lineLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === 'line');
1967
- const smsLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === 'sms');
1968
- const viberLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === VIBER_CHANNEL);
1969
- const facebookLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === FACEBOOK_CHANNEL);
2011
+ const lineLoader = this.checkLoader('line');
2012
+ const smsLoader = this.checkLoader('sms');
2013
+ const viberLoader = this.checkLoader(VIBER_CHANNEL);
2014
+ const facebookLoader = this.checkLoader(FACEBOOK_CHANNEL);
2015
+ const rcsLoader = this.checkLoader(RCS_LOWERCASE);
1970
2016
 
1971
2017
  const wechatLoader = (((this.state.selectedAccount !== '' && getAllTemplatesInProgress) || (fetchingWeCrmAccounts)) && this.state.channel.toLowerCase() === 'wechat');
1972
2018
  const whatsappLoader = (((this.state.selectedAccount !== '' && getAllTemplatesInProgress) || (fetchingWeCrmAccounts)) && this.state.channel.toLowerCase() === WHATSAPP_LOWERCASE);
@@ -1985,7 +2031,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1985
2031
  (mobilePushLoader !== undefined ? mobilePushLoader : false) ||
1986
2032
  (lineLoader !== undefined ? lineLoader : false) ||
1987
2033
  (facebookLoader !== undefined ? facebookLoader : false) ||
1988
- (viberLoader !== undefined ? viberLoader : false);
2034
+ (viberLoader !== undefined ? viberLoader : false) ||
2035
+ (rcsLoader !== undefined ? rcsLoader : false);
1989
2036
  return isLoading;
1990
2037
  }
1991
2038
  getChannelTypeIllustrationInfo = (type) => {
@@ -2022,7 +2069,17 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2022
2069
  title: <FormattedMessage {...messages.whatsappTitleIllustration} values={{ template: templateText }} />,
2023
2070
  description: <FormattedMessage {...messages.whatsappDescIllustration} />,
2024
2071
  descriptionPosition: 'bottom',
2025
- descriptionClassName: 'whatsapp-illustration-desc',
2072
+ descriptionClassName: 'illustration-desc',
2073
+ };
2074
+ case RCS:
2075
+ return {
2076
+ buttonLabel: <FormattedMessage {...messages.newRCSTemplate} values={{ template: templateText }} />,
2077
+ onClick: this.createTemplate,
2078
+ illustrationImage: rcsIllustration,
2079
+ title: <FormattedMessage {...messages.rcsTitleIllustartion} values={{ template: templateText }} />,
2080
+ description: <FormattedMessage {...messages.rcsDescIllustartion} />,
2081
+ descriptionPosition: 'bottom',
2082
+ descriptionClassName: 'illustration-desc rcs-illustration',
2026
2083
  };
2027
2084
  default:
2028
2085
  return {};
@@ -2079,7 +2136,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2079
2136
  const { weCrmAccounts = [], fetchingWeCrmAccounts = false, campaignSettings = {} } = templates;
2080
2137
  const isWechatChannel = channel === WECHAT;
2081
2138
  const isMobilePushChannel = channel === MOBILE_PUSH;
2082
- const isFacebookChannel = channel === FACEBOOK;
2139
+ const isFacebookChannel = channel === FACEBOOK;
2083
2140
 
2084
2141
  if ([WECHAT, MOBILE_PUSH, LINE, WHATSAPP].includes(channel) && !isEmpty(weCrmAccounts) && !isFacebookChannel) {
2085
2142
  forEach(weCrmAccounts, (account) => {
@@ -2218,7 +2275,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2218
2275
  [MOBILE_PUSH]: 'mobilepushAccount',
2219
2276
  [WECHAT]: 'wechatAccount',
2220
2277
  [WHATSAPP]: 'whatsappAccount',
2221
- }
2278
+ };
2222
2279
  return formatMessage(messages[channelObj[channel?.toUpperCase()]]);
2223
2280
  }
2224
2281
 
@@ -2327,13 +2384,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2327
2384
  }
2328
2385
  }
2329
2386
 
2330
- const showForViber = (![VIBER_CHANNEL, FACEBOOK_CHANNEL].includes(channel.toLowerCase()) ||
2387
+ const showForChannels = (![VIBER_CHANNEL, FACEBOOK_CHANNEL].includes(channel.toLowerCase()) ||
2331
2388
  (channel.toLowerCase() === VIBER_CHANNEL && !this.props.isFullMode && isEmpty(get(this.props, 'Templates.selectedViberAccount', {}))) ||
2332
2389
  (channel.toLowerCase() === FACEBOOK_CHANNEL && showFbAds)
2333
2390
  );
2334
2391
 
2335
2392
 
2336
- if (activeMode === ACCOUNT_SELECTION_MODE && showForViber ) {
2393
+ if (activeMode === ACCOUNT_SELECTION_MODE && showForChannels ) {
2337
2394
  return this.renderAccountSelection();
2338
2395
  }
2339
2396
 
@@ -2367,12 +2424,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2367
2424
  const channelLowerCase = (channel || '').toLowerCase();
2368
2425
  const isTraiDltFeature = this.checkDLTfeatureEnable();
2369
2426
 
2370
- const createButton =
2427
+ const createButton =
2371
2428
  ( channelLowerCase === WHATSAPP_LOWERCASE && !this.props.isFullMode )
2372
2429
  ? (
2373
- <CapLink
2374
- onClick={this.openCreativesFullMode}
2375
- title={formatMessage(messages.createNewTemplateLink)}
2430
+ <CapLink
2431
+ onClick={this.openCreativesFullMode}
2432
+ title={formatMessage(messages.createNewTemplateLink)}
2376
2433
  suffix={<CapIcon type="open-in-new" size="s" />}
2377
2434
  className="create-new-link"
2378
2435
  />
@@ -2427,7 +2484,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2427
2484
  onSelect={this.setWhatsappStatus}
2428
2485
  selectedValue={this.state.selectedWhatsappStatus}
2429
2486
  placeholder="Status"
2430
- showBadge={true}
2487
+ showBadge
2431
2488
  width="90px"
2432
2489
  />
2433
2490
  ) : null
@@ -2438,12 +2495,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2438
2495
  onSelect={this.setWhatsappCategory}
2439
2496
  selectedValue={this.state.selectedWhatsappCategory}
2440
2497
  placeholder="Category"
2441
- showBadge={true}
2498
+ showBadge
2442
2499
  width="105px"
2443
2500
  overlayStyle={{ overflowY: "hidden" }}
2444
2501
  />
2445
2502
  </div>
2446
-
2503
+
2447
2504
  )
2448
2505
  }
2449
2506
  {
@@ -2521,7 +2578,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2521
2578
  </div>
2522
2579
  </CapTooltip>
2523
2580
  )
2524
- : isfilterContentVisisble && !isWechatEmbedded && createButton
2581
+ : isfilterContentVisisble && !isWechatEmbedded && !this.props.isDltFromRcs && createButton
2525
2582
  }
2526
2583
  </div>
2527
2584
 
@@ -2652,7 +2709,9 @@ Templates.propTypes = {
2652
2709
  viberActions: PropTypes.object,
2653
2710
  facebookActions: PropTypes.object,
2654
2711
  whatsappActions: PropTypes.object,
2712
+ rcsActions: PropTypes.object,
2655
2713
  smsRegister: PropTypes.any,
2714
+ isDltFromRcs: PropTypes.bool,
2656
2715
  };
2657
2716
 
2658
2717
  const mapStateToProps = createStructuredSelector({
@@ -2681,6 +2740,7 @@ function mapDispatchToProps(dispatch) {
2681
2740
  viberActions: bindActionCreators(viberActions, dispatch),
2682
2741
  facebookActions: bindActionCreators(facebookActions, dispatch),
2683
2742
  whatsappActions: bindActionCreators(whatsappActions, dispatch),
2743
+ rcsActions: bindActionCreators(rcsActions, dispatch),
2684
2744
  };
2685
2745
  }
2686
2746