@capillarytech/creatives-library 7.12.1 → 7.12.5

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 +13 -0
  9. package/v2Components/TemplatePreview/index.js +39 -1
  10. package/v2Components/TemplatePreview/tests/__snapshots__/index.test.js.snap +33 -1
  11. package/v2Components/TemplatePreview/tests/index.test.js +7 -7
  12. package/v2Containers/App/constants.js +2 -1
  13. package/v2Containers/Assets/images/addCreativesIllustration.svg +30 -0
  14. package/v2Containers/Cap/messages.js +20 -1
  15. package/v2Containers/CreativesContainer/SlideBoxContent.js +57 -11
  16. package/v2Containers/CreativesContainer/SlideBoxHeader.js +5 -2
  17. package/v2Containers/CreativesContainer/constants.js +1 -0
  18. package/v2Containers/CreativesContainer/messages.js +4 -0
  19. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +24 -4
  20. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +23 -4
  21. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +147 -2
  22. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +99 -1
  23. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +71 -0
  24. package/v2Containers/CreativesContainer/tests/index.test.js +21 -9
  25. package/v2Containers/Facebook/Advertisement/index.js +4 -2
  26. package/v2Containers/Rcs/actions.js +57 -0
  27. package/v2Containers/Rcs/constants.js +51 -0
  28. package/v2Containers/Rcs/index.js +1064 -0
  29. package/v2Containers/Rcs/index.scss +72 -0
  30. package/v2Containers/Rcs/messages.js +122 -0
  31. package/v2Containers/Rcs/reducer.js +107 -0
  32. package/v2Containers/Rcs/sagas.js +141 -0
  33. package/v2Containers/Rcs/selectors.js +8 -0
  34. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +145080 -0
  35. package/v2Containers/Rcs/tests/index.test.js +226 -0
  36. package/v2Containers/Rcs/tests/mockData.js +169 -0
  37. package/v2Containers/Rcs/utils.js +40 -0
  38. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +4 -4
  39. package/v2Containers/Templates/_templates.scss +9 -1
  40. package/v2Containers/Templates/actions.js +2 -1
  41. package/v2Containers/Templates/constants.js +1 -0
  42. package/v2Containers/Templates/index.js +235 -174
  43. package/v2Containers/Templates/messages.js +20 -0
  44. package/v2Containers/Templates/reducer.js +2 -0
  45. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +520 -80
  46. package/v2Containers/TemplatesV2/index.js +2 -1
  47. package/v2Containers/TemplatesV2/messages.js +4 -0
  48. package/v2Containers/Whatsapp/constants.js +287 -0
  49. package/v2Containers/Whatsapp/index.js +39 -25
  50. package/v2Containers/Whatsapp/index.scss +3 -2
  51. package/v2Containers/Whatsapp/messages.js +284 -13
  52. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +35583 -1700
  53. package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +32 -26
  54. package/v2Containers/Whatsapp/tests/index.test.js +13 -0
  55. package/v2Containers/Whatsapp/tests/utils.test.js +15 -8
  56. package/v2Containers/mockdata.js +1190 -2181
  57. package/v2Components/CallTaskPreview/tests/__snapshots__/index.test.js.snap +0 -30
@@ -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});
@@ -640,6 +662,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
640
662
  const { name = '', versions = {} } = whatsappSelectedTemplateData;
641
663
  creativesParams.whatsappTemplateName = name;
642
664
  creativesParams.whatsappTemplateCategory = get(versions, `base.content.whatsapp.category`, '');
665
+ creativesParams.whatsappTemplateLanguageCode = get(versions, `base.content.whatsapp.languages[0].language`, '');
643
666
  }
644
667
  }
645
668
  creativesParams.type = this.state.channel.toUpperCase();
@@ -743,13 +766,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
743
766
  }
744
767
 
745
768
  isStatusMatching = (status, selectedWhatsappStatus) => {
746
- if(this.props.isFullMode && selectedWhatsappStatus) {
769
+ if (this.props.isFullMode && selectedWhatsappStatus) {
747
770
  if ( [WHATSAPP_STATUSES.unsubmitted, WHATSAPP_STATUSES.pending].includes(status) ) {
748
771
  return selectedWhatsappStatus === WHATSAPP_STATUSES.awaitingApproval;
749
772
  }
750
- return selectedWhatsappStatus === status;
751
- }
752
- else if (!this.props.isFullMode){
773
+ return selectedWhatsappStatus === status;
774
+ } else if (!this.props.isFullMode) {
753
775
  return status === WHATSAPP_STATUSES.approved;
754
776
  }
755
777
  return true;
@@ -770,7 +792,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
770
792
  );
771
793
  });
772
794
  }
773
-
795
+
774
796
  filterSMSTemplates = (templates) => {
775
797
  const { smsFilter } = this.state;
776
798
  if (SMS_FILTERS.ALL === smsFilter) {
@@ -786,6 +808,43 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
786
808
  return messages.creativesTemplatesEdit;
787
809
  }
788
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
+
789
848
  getTemplateDataForGrid = ({templates, handlers, filterContent, channel, isLoading, loadingTip}) => {
790
849
  const currentChannel = channel.toUpperCase();
791
850
  const {channel: stateChannel} = this.state;
@@ -827,7 +886,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
827
886
  className={`view-${channelLowerCase}`}
828
887
  style={{marginRight: '16px'}}
829
888
  type="eye"
830
- 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); } }}
831
890
  />,
832
891
  ],
833
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>,
@@ -844,7 +903,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
844
903
  } = {},
845
904
  } = {},
846
905
  } = template;
847
- 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)) {
848
907
  templateData.extra.push(<CapDropdown
849
908
  overlay={
850
909
  <CapMenu>
@@ -995,6 +1054,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
995
1054
 
996
1055
  templateData.content = getWhatsappContent(template).templateMsg;
997
1056
  break;
1057
+ case RCS: {
1058
+ templateData.title = template.name;
1059
+ templateData.content = getRCSContent(template);
1060
+ break;
1061
+ }
998
1062
  default:
999
1063
  templateData.content = "";
1000
1064
  }
@@ -1002,6 +1066,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1002
1066
  }) : [];
1003
1067
  const accountId = get(this.props, 'Templates.selectedWeChatAccount.uuid');
1004
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;
1005
1075
  return (<div>
1006
1076
  {[WECHAT, MOBILE_PUSH].includes(currentChannel) && this.showAccountName()}
1007
1077
  {filterContent}
@@ -1018,7 +1088,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1018
1088
  fbType={"list"}
1019
1089
  />
1020
1090
  </div>)
1021
- : ['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()
1022
1092
  }
1023
1093
 
1024
1094
  {(this.state.selectedAccount === '' && isEmpty(this.props.Templates.selectedWeChatAccount)) && (this.state.channel.toLowerCase() === 'wechat' || this.state.channel.toLowerCase() === "mobilepush") &&
@@ -1044,52 +1114,27 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1044
1114
  </div>
1045
1115
  )
1046
1116
  }
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 &&
1117
+ {showWhatsappIllustration &&
1118
+ (
1119
+ noLoaderAndSearchText &&
1059
1120
  <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
- />}
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)} />
1085
1132
  </div>
1086
1133
  )
1087
1134
  }
1088
1135
  </div>
1089
1136
  }
1090
-
1091
1137
  </CapSpin>
1092
-
1093
1138
  </div>);
1094
1139
  }
1095
1140
  filterLineTemplates = (templates) => {
@@ -1508,26 +1553,27 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1508
1553
  this.props.actions.deleteTemplate(this.state.channel.toUpperCase(), template._id);
1509
1554
  this.setState({actionTemplate: {}});
1510
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
+ }
1511
1570
 
1512
1571
  duplicateTemplate(template) {
1513
1572
  const duplicateObj = cloneDeep(template);
1514
1573
  duplicateObj.name = `Copy of ${template.name} ${moment().format('MM-DD-YYYY HH:mm:ss')}`;
1515
1574
  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") {
1575
+
1576
+ if (this.state.channel.toLowerCase() === "mobilepush") {
1531
1577
  duplicateObj.definition.accountId = this.props.Templates.selectedWeChatAccount.id;
1532
1578
  this.props.mobilepushActions.createTemplate(duplicateObj, () => {
1533
1579
  const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
@@ -1539,33 +1585,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1539
1585
  this.props.ebillActions.createTemplate(duplicateObj);
1540
1586
  } else if (this.state.channel.toLowerCase() === "email") {
1541
1587
  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
- });
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);
1569
1590
  }
1570
1591
  }
1571
1592
 
@@ -1616,55 +1637,74 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1616
1637
  const module = this.props.location.query.module;
1617
1638
  const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : false;
1618
1639
  const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
1619
- 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 };
1620
1643
  let pathName = path;
1621
1644
  e.stopPropagation();
1622
1645
 
1623
1646
  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}`;
1647
+ switch (channelLowerCase) {
1648
+ case 'sms': {
1649
+ pathName = `/sms/edit/${id}`;
1650
+ break;
1647
1651
  }
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}`;
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;
1660
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;
1661
1684
  }
1662
- if (this.state.channel.toUpperCase() === WHATSAPP) {
1663
- 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;
1664
1704
  }
1665
1705
  if (this.isEnabledInLibraryModule("callSelectFromProps")) {
1666
1706
  let data = id;
1667
- if (this.props.fbAdManager) {
1707
+ if (this.props.fbAdManager || this.props.isDltFromRcs) {
1668
1708
  data = this.selectTemplate(id);
1669
1709
  }
1670
1710
  this.props.onSelectTemplate(data, this.props.fbAdManager);
@@ -1953,6 +1993,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1953
1993
  return isDisabled;
1954
1994
  }
1955
1995
 
1996
+ checkLoader = (channel) => {
1997
+ const {
1998
+ getAllTemplatesInProgress,
1999
+ } = this.props.Templates || {};
2000
+ return (getAllTemplatesInProgress && this.state.channel.toLowerCase() === channel);
2001
+ }
1956
2002
 
1957
2003
  isLoading = () => {
1958
2004
  const { EmailCreate, Templates } = this.props;
@@ -1962,10 +2008,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1962
2008
  fetchingWeCrmAccounts,
1963
2009
  sendingFile,
1964
2010
  } = 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);
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);
1969
2016
 
1970
2017
  const wechatLoader = (((this.state.selectedAccount !== '' && getAllTemplatesInProgress) || (fetchingWeCrmAccounts)) && this.state.channel.toLowerCase() === 'wechat');
1971
2018
  const whatsappLoader = (((this.state.selectedAccount !== '' && getAllTemplatesInProgress) || (fetchingWeCrmAccounts)) && this.state.channel.toLowerCase() === WHATSAPP_LOWERCASE);
@@ -1984,7 +2031,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
1984
2031
  (mobilePushLoader !== undefined ? mobilePushLoader : false) ||
1985
2032
  (lineLoader !== undefined ? lineLoader : false) ||
1986
2033
  (facebookLoader !== undefined ? facebookLoader : false) ||
1987
- (viberLoader !== undefined ? viberLoader : false);
2034
+ (viberLoader !== undefined ? viberLoader : false) ||
2035
+ (rcsLoader !== undefined ? rcsLoader : false);
1988
2036
  return isLoading;
1989
2037
  }
1990
2038
  getChannelTypeIllustrationInfo = (type) => {
@@ -2021,7 +2069,17 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2021
2069
  title: <FormattedMessage {...messages.whatsappTitleIllustration} values={{ template: templateText }} />,
2022
2070
  description: <FormattedMessage {...messages.whatsappDescIllustration} />,
2023
2071
  descriptionPosition: 'bottom',
2024
- 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',
2025
2083
  };
2026
2084
  default:
2027
2085
  return {};
@@ -2078,7 +2136,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2078
2136
  const { weCrmAccounts = [], fetchingWeCrmAccounts = false, campaignSettings = {} } = templates;
2079
2137
  const isWechatChannel = channel === WECHAT;
2080
2138
  const isMobilePushChannel = channel === MOBILE_PUSH;
2081
- const isFacebookChannel = channel === FACEBOOK;
2139
+ const isFacebookChannel = channel === FACEBOOK;
2082
2140
 
2083
2141
  if ([WECHAT, MOBILE_PUSH, LINE, WHATSAPP].includes(channel) && !isEmpty(weCrmAccounts) && !isFacebookChannel) {
2084
2142
  forEach(weCrmAccounts, (account) => {
@@ -2217,7 +2275,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2217
2275
  [MOBILE_PUSH]: 'mobilepushAccount',
2218
2276
  [WECHAT]: 'wechatAccount',
2219
2277
  [WHATSAPP]: 'whatsappAccount',
2220
- }
2278
+ };
2221
2279
  return formatMessage(messages[channelObj[channel?.toUpperCase()]]);
2222
2280
  }
2223
2281
 
@@ -2326,13 +2384,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2326
2384
  }
2327
2385
  }
2328
2386
 
2329
- const showForViber = (![VIBER_CHANNEL, FACEBOOK_CHANNEL].includes(channel.toLowerCase()) ||
2387
+ const showForChannels = (![VIBER_CHANNEL, FACEBOOK_CHANNEL].includes(channel.toLowerCase()) ||
2330
2388
  (channel.toLowerCase() === VIBER_CHANNEL && !this.props.isFullMode && isEmpty(get(this.props, 'Templates.selectedViberAccount', {}))) ||
2331
2389
  (channel.toLowerCase() === FACEBOOK_CHANNEL && showFbAds)
2332
2390
  );
2333
2391
 
2334
2392
 
2335
- if (activeMode === ACCOUNT_SELECTION_MODE && showForViber ) {
2393
+ if (activeMode === ACCOUNT_SELECTION_MODE && showForChannels ) {
2336
2394
  return this.renderAccountSelection();
2337
2395
  }
2338
2396
 
@@ -2366,12 +2424,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2366
2424
  const channelLowerCase = (channel || '').toLowerCase();
2367
2425
  const isTraiDltFeature = this.checkDLTfeatureEnable();
2368
2426
 
2369
- const createButton =
2427
+ const createButton =
2370
2428
  ( channelLowerCase === WHATSAPP_LOWERCASE && !this.props.isFullMode )
2371
2429
  ? (
2372
- <CapLink
2373
- onClick={this.openCreativesFullMode}
2374
- title={formatMessage(messages.createNewTemplateLink)}
2430
+ <CapLink
2431
+ onClick={this.openCreativesFullMode}
2432
+ title={formatMessage(messages.createNewTemplateLink)}
2375
2433
  suffix={<CapIcon type="open-in-new" size="s" />}
2376
2434
  className="create-new-link"
2377
2435
  />
@@ -2426,7 +2484,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2426
2484
  onSelect={this.setWhatsappStatus}
2427
2485
  selectedValue={this.state.selectedWhatsappStatus}
2428
2486
  placeholder="Status"
2429
- showBadge={true}
2487
+ showBadge
2430
2488
  width="90px"
2431
2489
  />
2432
2490
  ) : null
@@ -2437,12 +2495,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2437
2495
  onSelect={this.setWhatsappCategory}
2438
2496
  selectedValue={this.state.selectedWhatsappCategory}
2439
2497
  placeholder="Category"
2440
- showBadge={true}
2498
+ showBadge
2441
2499
  width="105px"
2442
2500
  overlayStyle={{ overflowY: "hidden" }}
2443
2501
  />
2444
2502
  </div>
2445
-
2503
+
2446
2504
  )
2447
2505
  }
2448
2506
  {
@@ -2520,7 +2578,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
2520
2578
  </div>
2521
2579
  </CapTooltip>
2522
2580
  )
2523
- : isfilterContentVisisble && !isWechatEmbedded && createButton
2581
+ : isfilterContentVisisble && !isWechatEmbedded && !this.props.isDltFromRcs && createButton
2524
2582
  }
2525
2583
  </div>
2526
2584
 
@@ -2651,7 +2709,9 @@ Templates.propTypes = {
2651
2709
  viberActions: PropTypes.object,
2652
2710
  facebookActions: PropTypes.object,
2653
2711
  whatsappActions: PropTypes.object,
2712
+ rcsActions: PropTypes.object,
2654
2713
  smsRegister: PropTypes.any,
2714
+ isDltFromRcs: PropTypes.bool,
2655
2715
  };
2656
2716
 
2657
2717
  const mapStateToProps = createStructuredSelector({
@@ -2680,6 +2740,7 @@ function mapDispatchToProps(dispatch) {
2680
2740
  viberActions: bindActionCreators(viberActions, dispatch),
2681
2741
  facebookActions: bindActionCreators(facebookActions, dispatch),
2682
2742
  whatsappActions: bindActionCreators(whatsappActions, dispatch),
2743
+ rcsActions: bindActionCreators(rcsActions, dispatch),
2683
2744
  };
2684
2745
  }
2685
2746