@capillarytech/creatives-library 7.12.15 → 7.12.17
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/CapImageUpload/index.js +27 -11
- package/v2Components/CapImageUpload/index.scss +12 -27
- package/v2Components/CapImageUpload/messages.js +10 -5
- package/v2Components/TemplatePreview/_templatePreview.scss +10 -0
- package/v2Components/TemplatePreview/assets/images/sms_mobile_ios.svg +18 -0
- package/v2Components/TemplatePreview/index.js +41 -1
- 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 +59 -11
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +43 -33
- package/v2Containers/CreativesContainer/constants.js +1 -0
- package/v2Containers/CreativesContainer/index.js +53 -1
- 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 +148 -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 +51 -0
- package/v2Containers/Rcs/index.js +1076 -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 +144496 -0
- package/v2Containers/Rcs/tests/index.test.js +226 -0
- package/v2Containers/Rcs/tests/mockData.js +166 -0
- package/v2Containers/Rcs/utils.js +40 -0
- package/v2Containers/SmsTrai/Edit/index.js +2 -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 +13 -4
- package/v2Containers/TemplatesV2/messages.js +4 -0
- package/v2Containers/Whatsapp/index.js +6 -2
- package/v2Containers/Whatsapp/messages.js +0 -13
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +13 -1037
- package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +32 -26
- 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 {
|
|
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});
|
|
@@ -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
|
-
|
|
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) {
|
|
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 &&
|
|
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
|
-
{
|
|
1049
|
-
|
|
1050
|
-
|
|
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
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
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
|
-
|
|
1518
|
-
|
|
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()
|
|
1544
|
-
this.
|
|
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
|
-
|
|
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
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
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
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
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
|
-
|
|
1664
|
-
|
|
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 =
|
|
1967
|
-
const smsLoader =
|
|
1968
|
-
const viberLoader =
|
|
1969
|
-
const facebookLoader =
|
|
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: '
|
|
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
|
|
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 &&
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|