@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.
- 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 +24 -11
- package/v2Components/CapImageUpload/index.scss +12 -27
- package/v2Components/CapImageUpload/messages.js +10 -5
- package/v2Components/TemplatePreview/_templatePreview.scss +13 -0
- package/v2Components/TemplatePreview/index.js +39 -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/Cap/messages.js +20 -1
- package/v2Containers/CreativesContainer/SlideBoxContent.js +57 -11
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +5 -2
- 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 +99 -1
- 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/Rcs/actions.js +57 -0
- package/v2Containers/Rcs/constants.js +51 -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 +235 -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/constants.js +287 -0
- package/v2Containers/Whatsapp/index.js +39 -25
- package/v2Containers/Whatsapp/index.scss +3 -2
- package/v2Containers/Whatsapp/messages.js +284 -13
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +35583 -1700
- package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +32 -26
- package/v2Containers/Whatsapp/tests/index.test.js +13 -0
- package/v2Containers/Whatsapp/tests/utils.test.js +15 -8
- package/v2Containers/mockdata.js +1190 -2181
- 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 {
|
|
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});
|
|
@@ -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
|
-
|
|
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) {
|
|
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 &&
|
|
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
|
-
{
|
|
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 &&
|
|
1117
|
+
{showWhatsappIllustration &&
|
|
1118
|
+
(
|
|
1119
|
+
noLoaderAndSearchText &&
|
|
1059
1120
|
<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
|
-
/>}
|
|
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
|
-
|
|
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") {
|
|
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()
|
|
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
|
-
});
|
|
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
|
-
|
|
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
|
-
|
|
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}`;
|
|
1647
|
+
switch (channelLowerCase) {
|
|
1648
|
+
case 'sms': {
|
|
1649
|
+
pathName = `/sms/edit/${id}`;
|
|
1650
|
+
break;
|
|
1647
1651
|
}
|
|
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}`;
|
|
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
|
-
|
|
1663
|
-
|
|
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 =
|
|
1966
|
-
const smsLoader =
|
|
1967
|
-
const viberLoader =
|
|
1968
|
-
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);
|
|
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: '
|
|
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
|
|
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 &&
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|