@capillarytech/creatives-library 7.12.0 → 7.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +6 -0
- package/package.json +1 -1
- package/routes.js +7 -2
- package/services/api.js +8 -2
- package/v2Components/CallTaskPreview/tests/__snapshots__/index.test.js.snap +30 -0
- package/v2Components/CapImageUpload/index.js +24 -11
- package/v2Components/CapImageUpload/index.scss +12 -27
- package/v2Components/CapImageUpload/messages.js +10 -5
- package/v2Components/TemplatePreview/_templatePreview.scss +13 -1
- package/v2Components/TemplatePreview/index.js +43 -2
- package/v2Components/TemplatePreview/tests/__snapshots__/index.test.js.snap +33 -1
- package/v2Components/TemplatePreview/tests/index.test.js +7 -7
- package/v2Containers/App/constants.js +2 -1
- package/v2Containers/Assets/images/addCreativesIllustration.svg +30 -0
- package/v2Containers/Assets/images/rcsIllustration.png +0 -0
- package/v2Containers/Cap/messages.js +20 -1
- package/v2Containers/CreativesContainer/SlideBoxContent.js +57 -11
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -0
- package/v2Containers/CreativesContainer/constants.js +1 -0
- package/v2Containers/CreativesContainer/messages.js +4 -0
- package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +24 -4
- package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +23 -4
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +147 -2
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -0
- package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +71 -0
- package/v2Containers/CreativesContainer/tests/index.test.js +21 -9
- package/v2Containers/Facebook/Advertisement/index.js +4 -2
- package/v2Containers/MobilePush/Edit/index.js +21 -34
- package/v2Containers/Rcs/actions.js +57 -0
- package/v2Containers/Rcs/constants.js +50 -0
- package/v2Containers/Rcs/index.js +1064 -0
- package/v2Containers/Rcs/index.scss +72 -0
- package/v2Containers/Rcs/messages.js +122 -0
- package/v2Containers/Rcs/reducer.js +107 -0
- package/v2Containers/Rcs/sagas.js +141 -0
- package/v2Containers/Rcs/selectors.js +8 -0
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +145080 -0
- package/v2Containers/Rcs/tests/index.test.js +226 -0
- package/v2Containers/Rcs/tests/mockData.js +169 -0
- package/v2Containers/Rcs/utils.js +40 -0
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +4 -4
- package/v2Containers/Templates/_templates.scss +9 -1
- package/v2Containers/Templates/actions.js +2 -1
- package/v2Containers/Templates/constants.js +1 -0
- package/v2Containers/Templates/index.js +234 -174
- package/v2Containers/Templates/messages.js +20 -0
- package/v2Containers/Templates/reducer.js +2 -0
- package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +520 -80
- package/v2Containers/TemplatesV2/index.js +2 -1
- package/v2Containers/TemplatesV2/messages.js +4 -0
- package/v2Containers/Whatsapp/index.js +4 -2
- package/v2Containers/Whatsapp/messages.js +0 -13
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +13 -13
- package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +32 -26
- package/v2Containers/mockdata.js +567 -1588
|
@@ -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 {
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
539
|
-
paramsDefault.wecrmId =
|
|
540
|
-
paramsDefault.wecrmToken =
|
|
541
|
-
paramsDefault.originalId =
|
|
542
|
-
if (
|
|
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
|
-
|
|
545
|
-
|
|
567
|
+
selectedChannel.toUpperCase(),
|
|
568
|
+
weCrmAccountsList[0],
|
|
546
569
|
);
|
|
547
570
|
} else {
|
|
548
571
|
nextProps.actions.setWeChatAccount(
|
|
549
|
-
|
|
572
|
+
weCrmAccountsList[0],
|
|
550
573
|
);
|
|
551
574
|
}
|
|
552
575
|
}
|
|
553
|
-
this.setState({defaultAccount: false, activeMode: TEMPLATES_MODE, selectedAccount:
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
592
|
-
this.props.actions.setChannelAccount(
|
|
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
|
-
|
|
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) {
|
|
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 &&
|
|
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
|
-
{
|
|
1048
|
-
|
|
1049
|
-
|
|
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
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
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
|
-
|
|
1517
|
-
|
|
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()
|
|
1543
|
-
this.
|
|
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
|
-
|
|
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
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
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
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
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
|
-
|
|
1663
|
-
|
|
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 =
|
|
1966
|
-
const smsLoader =
|
|
1967
|
-
const viberLoader =
|
|
1968
|
-
const facebookLoader =
|
|
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: '
|
|
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
|
|
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 &&
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|