@capillarytech/creatives-library 7.6.5 → 7.6.7
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/package.json +1 -1
- package/v2Containers/CapFacebookPreview/index.js +1 -0
- package/v2Containers/CreativesContainer/SlideBoxContent.js +2 -0
- package/v2Containers/CreativesContainer/index.js +102 -27
- package/v2Containers/Facebook/Advertisement/index.js +48 -30
- package/v2Containers/Facebook/index.js +5 -4
- package/v2Containers/Templates/index.js +26 -17
- package/v2Containers/Templates/reducer.js +1 -1
- package/v2Containers/TemplatesV2/index.js +1 -1
package/package.json
CHANGED
|
@@ -563,6 +563,7 @@ function SlideBoxContent(props) {
|
|
|
563
563
|
getFormSubscriptionData={getFormData}
|
|
564
564
|
messageStrategy={messageStrategy}
|
|
565
565
|
fbAdManger={fbAdManger}
|
|
566
|
+
onSelectTemplate={onSelectTemplate}
|
|
566
567
|
/>
|
|
567
568
|
)
|
|
568
569
|
}
|
|
@@ -579,6 +580,7 @@ function SlideBoxContent(props) {
|
|
|
579
580
|
id: templateData._id,
|
|
580
581
|
}}
|
|
581
582
|
getFormSubscriptionData={getFormData}
|
|
583
|
+
fbAdManger={fbAdManger}
|
|
582
584
|
/>
|
|
583
585
|
)
|
|
584
586
|
}
|
|
@@ -73,8 +73,12 @@ class Creatives extends React.Component {
|
|
|
73
73
|
this.setState({templateNameExists: false});
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
onSelectTemplate = (template) => {
|
|
77
|
-
|
|
76
|
+
onSelectTemplate = (template, fbAdManger) => {
|
|
77
|
+
if (fbAdManger) {
|
|
78
|
+
this.setState({ slidBoxContent: 'editTemplate', templateData: template, fbAdManger});
|
|
79
|
+
} else {
|
|
80
|
+
this.setState({ slidBoxContent: 'editTemplate', templateData: template });
|
|
81
|
+
}
|
|
78
82
|
};
|
|
79
83
|
onPreviewTemplate = (template) => {
|
|
80
84
|
const templateData = template;
|
|
@@ -223,11 +227,59 @@ class Creatives extends React.Component {
|
|
|
223
227
|
break;
|
|
224
228
|
}
|
|
225
229
|
case constants.FACEBOOK: {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
230
|
+
if (templateData.fbContentType === "CREATIVE") {
|
|
231
|
+
const { accountId, creativeType } = templateData || {};
|
|
232
|
+
const fBContent = templateData.facebookCreativeList;
|
|
233
|
+
const facebookCreativeList = [];
|
|
234
|
+
fBContent.forEach((obj) => {
|
|
235
|
+
const data = cloneDeep(obj);
|
|
236
|
+
const {subType, linkDescription, imageLink, websiteLink, videoId} = obj;
|
|
237
|
+
delete data.linkDescription;
|
|
238
|
+
delete data.websiteLink;
|
|
239
|
+
data.linkDesc = linkDescription;
|
|
240
|
+
data.webSiteLink = websiteLink;
|
|
241
|
+
data.type = creativeType;
|
|
242
|
+
switch (subType) {
|
|
243
|
+
case "IMAGE":
|
|
244
|
+
data.imgSrc = imageLink;
|
|
245
|
+
delete data.imageLink;
|
|
246
|
+
break;
|
|
247
|
+
case "VIDEO":
|
|
248
|
+
data.video = {
|
|
249
|
+
previewImageUrl: imageLink,
|
|
250
|
+
videoId,
|
|
251
|
+
videoSrc: "",
|
|
252
|
+
videoName: "",
|
|
253
|
+
};
|
|
254
|
+
delete data.imageLink;
|
|
255
|
+
break;
|
|
256
|
+
default:
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
facebookCreativeList.push(data);
|
|
260
|
+
});
|
|
261
|
+
creativesTemplateData = {
|
|
262
|
+
versions: {
|
|
263
|
+
base: {
|
|
264
|
+
content: {
|
|
265
|
+
FacebookAd: {...facebookCreativeList},
|
|
266
|
+
pageOrgUnitId: this.props.orgUnitId,
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
type: "FACEBOOK",
|
|
271
|
+
edit: true,
|
|
272
|
+
selectedFacebookAccount: {
|
|
273
|
+
accountId,
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
}else {
|
|
277
|
+
creativesTemplateData = {
|
|
278
|
+
selectedMarketingObjective: templateData.selectedMarketingObjective,
|
|
279
|
+
edit: true,
|
|
280
|
+
type: channel,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
231
283
|
break;
|
|
232
284
|
}
|
|
233
285
|
case constants.LINE: {
|
|
@@ -276,25 +328,6 @@ class Creatives extends React.Component {
|
|
|
276
328
|
};
|
|
277
329
|
break;
|
|
278
330
|
}
|
|
279
|
-
case constants.FACEBOOK: {
|
|
280
|
-
return {
|
|
281
|
-
fbContentType: "CREATIVE",
|
|
282
|
-
creativeType: "IMAGE",
|
|
283
|
-
facebookCreativeList: [{
|
|
284
|
-
subType: "IMAGE",
|
|
285
|
-
displayLink: "www.google.com",
|
|
286
|
-
callToAction: "callToAction",
|
|
287
|
-
primaryText: "primaryText",
|
|
288
|
-
linkDescription: "linkDescription",
|
|
289
|
-
linkHeadLine: "linkHeadLine",
|
|
290
|
-
websiteLink: "websiteLink",
|
|
291
|
-
imageLink: "www.kuch_bhi_link.com",
|
|
292
|
-
pageId: "1234",
|
|
293
|
-
}],
|
|
294
|
-
channel: "FACEBOOK",
|
|
295
|
-
accountId: "1310132286042455",
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
331
|
default:
|
|
299
332
|
break;
|
|
300
333
|
}
|
|
@@ -398,7 +431,49 @@ class Creatives extends React.Component {
|
|
|
398
431
|
};
|
|
399
432
|
}
|
|
400
433
|
break;
|
|
401
|
-
case constants.FACEBOOK:
|
|
434
|
+
case constants.FACEBOOK: {
|
|
435
|
+
if (template.value) {
|
|
436
|
+
const FacebookAd = template.value.versions.base.content.FacebookAd;
|
|
437
|
+
const type = FacebookAd[0].type;
|
|
438
|
+
const {accountId} = this.props.Templates.selectedFacebookAccount || template.value || {};
|
|
439
|
+
const facebookCreativeList = [];
|
|
440
|
+
const fBContent = Object.values(FacebookAd);
|
|
441
|
+
fBContent.forEach((obj) => {
|
|
442
|
+
const data = cloneDeep(obj);
|
|
443
|
+
const {subType, linkDesc, imgSrc, webSiteLink, video} = obj;
|
|
444
|
+
delete data.type;
|
|
445
|
+
delete data.linkDesc;
|
|
446
|
+
delete data.webSiteLink;
|
|
447
|
+
data.linkDescription = linkDesc;
|
|
448
|
+
data.websiteLink = webSiteLink;
|
|
449
|
+
|
|
450
|
+
switch (subType) {
|
|
451
|
+
case "IMAGE":
|
|
452
|
+
data.imageLink = imgSrc;
|
|
453
|
+
delete data.imgSrc;
|
|
454
|
+
break;
|
|
455
|
+
case "VIDEO":
|
|
456
|
+
data.imageLink = video.previewImageUrl;
|
|
457
|
+
data.videoId = video.videoId;
|
|
458
|
+
delete data.video;
|
|
459
|
+
break;
|
|
460
|
+
case "CAROUSEL":
|
|
461
|
+
break;
|
|
462
|
+
default:
|
|
463
|
+
break;
|
|
464
|
+
}
|
|
465
|
+
facebookCreativeList.push(data);
|
|
466
|
+
});
|
|
467
|
+
templateData = {
|
|
468
|
+
fbContentType: "CREATIVE",
|
|
469
|
+
creativeType: type,
|
|
470
|
+
facebookCreativeList,
|
|
471
|
+
channel: "FACEBOOK",
|
|
472
|
+
accountId,
|
|
473
|
+
selectedMarketingObjective: template.value.selectedMarketingObjective,
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
}
|
|
402
477
|
break;
|
|
403
478
|
default:
|
|
404
479
|
break;
|
|
@@ -3,6 +3,8 @@ import React, { useState, useEffect, useCallback} from "react";
|
|
|
3
3
|
import { injectIntl, FormattedMessage, intlShape } from 'react-intl';
|
|
4
4
|
import { isUrl } from '../../Line/Container/Wrapper/utils';
|
|
5
5
|
import get from 'lodash/get';
|
|
6
|
+
import isEmpty from 'lodash/isEmpty';
|
|
7
|
+
|
|
6
8
|
import {
|
|
7
9
|
CapInput,
|
|
8
10
|
CapRadioCard,
|
|
@@ -82,10 +84,12 @@ export const Advertisement = (props) => {
|
|
|
82
84
|
actions,
|
|
83
85
|
fbADData = {},
|
|
84
86
|
onCreateComplete,
|
|
85
|
-
templateData,
|
|
87
|
+
templateData = {},
|
|
86
88
|
params,
|
|
87
89
|
getFormSubscriptionData,
|
|
88
90
|
facebookTemplateData,
|
|
91
|
+
selectedMarketingObjective,
|
|
92
|
+
fbAdManger,
|
|
89
93
|
} = props;
|
|
90
94
|
const {
|
|
91
95
|
formatMessage,
|
|
@@ -128,7 +132,7 @@ export const Advertisement = (props) => {
|
|
|
128
132
|
orgUnitFacebookPageSettingsMap = {},
|
|
129
133
|
employeeAccessToken: accessToken = "",
|
|
130
134
|
accountId = "",
|
|
131
|
-
} = selectedFacebookAccount;
|
|
135
|
+
} = selectedFacebookAccount || {};
|
|
132
136
|
const { pageAccessToken, pageId: pId } = orgUnitFacebookPageSettingsMap[pageId] || {};
|
|
133
137
|
videoData = {
|
|
134
138
|
accessToken,
|
|
@@ -158,7 +162,7 @@ export const Advertisement = (props) => {
|
|
|
158
162
|
}, [paramObj.id]);
|
|
159
163
|
|
|
160
164
|
useEffect(() => {
|
|
161
|
-
if ((params && params.id) ||
|
|
165
|
+
if ((params && params.id) || templateData?.edit) {
|
|
162
166
|
const { FacebookAd = [], pageOrgUnitId: editPageId} = get(templateData, `versions.base.content`) || get(fbADData, `templateDetails.versions.base.content`) || {};
|
|
163
167
|
const editMessageTitle = (templateData || {}).name || get(fbADData, 'templateDetails.name');
|
|
164
168
|
const editFBContent = Object.values(FacebookAd);
|
|
@@ -349,8 +353,7 @@ export const Advertisement = (props) => {
|
|
|
349
353
|
}
|
|
350
354
|
messageData.push(data);
|
|
351
355
|
});
|
|
352
|
-
|
|
353
|
-
return {
|
|
356
|
+
let finalResponse = {
|
|
354
357
|
versions: {
|
|
355
358
|
base: {
|
|
356
359
|
content: {
|
|
@@ -362,12 +365,17 @@ export const Advertisement = (props) => {
|
|
|
362
365
|
type: "FACEBOOK",
|
|
363
366
|
name: messageTitle,
|
|
364
367
|
};
|
|
368
|
+
if (!isFullMode) {
|
|
369
|
+
finalResponse = {...finalResponse, selectedMarketingObjective, accountId};
|
|
370
|
+
}
|
|
371
|
+
return finalResponse;
|
|
365
372
|
}, [carouselData,
|
|
366
373
|
pageId,
|
|
367
374
|
messageTitle,
|
|
368
375
|
primaryText,
|
|
369
376
|
callToAction,
|
|
370
|
-
displayLink
|
|
377
|
+
displayLink,
|
|
378
|
+
selectedMarketingObjective]);
|
|
371
379
|
|
|
372
380
|
const onCreateFacebookAd = useCallback( () => {
|
|
373
381
|
actions.createTemplate(
|
|
@@ -493,7 +501,7 @@ export const Advertisement = (props) => {
|
|
|
493
501
|
]
|
|
494
502
|
);
|
|
495
503
|
|
|
496
|
-
const isDisableContinue = () => messageTitle.trim() === "" || selectedAd === "";
|
|
504
|
+
const isDisableContinue = () => isFullMode ? (messageTitle.trim() === "" || selectedAd === "") : ( selectedAd === "");
|
|
497
505
|
|
|
498
506
|
const onClickContinue = useCallback(() => { updateStep('createFacebookAd'); }, [step]);
|
|
499
507
|
|
|
@@ -802,7 +810,7 @@ export const Advertisement = (props) => {
|
|
|
802
810
|
setPageId(value);
|
|
803
811
|
}, [pageId]);
|
|
804
812
|
|
|
805
|
-
const selectedFacebookAccount =
|
|
813
|
+
const selectedFacebookAccount = templateData?.edit ? templateData?.selectedFacebookAccount : facebookTemplateData?.selectedFacebookAccount;
|
|
806
814
|
const {orgUnitFacebookPageSettingsMap = {}, employeeAccessToken: accessToken = "", accountId = "" } = selectedFacebookAccount;
|
|
807
815
|
|
|
808
816
|
const getPageAccessOrgs = useCallback(() => {
|
|
@@ -829,7 +837,7 @@ export const Advertisement = (props) => {
|
|
|
829
837
|
const options = getPageAccessOrgs() || [];
|
|
830
838
|
const { data = {} } = fbADData.orgOuData || {};
|
|
831
839
|
const selectedPageName = Object.keys(data).find((key) => data[key] === pageId);
|
|
832
|
-
return ( (step === 'modeSelection') ?
|
|
840
|
+
return ( (step === 'modeSelection' && (isEmpty(templateData) || templateData?.mode === "create")) ?
|
|
833
841
|
( <CapSpin spinning={adSpinLoader} className="add-facebook-ad-section">
|
|
834
842
|
<div style={{ position: 'fixed', top: '25px', zIndex: 1}}>
|
|
835
843
|
<CapHeader
|
|
@@ -838,25 +846,27 @@ export const Advertisement = (props) => {
|
|
|
838
846
|
className={"cap-header-facebook-ad"}
|
|
839
847
|
/>
|
|
840
848
|
</div>
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
849
|
+
{isFullMode && <>
|
|
850
|
+
<CapInput
|
|
851
|
+
id={`fbAd_input`}
|
|
852
|
+
onChange={onTextTitleChange}
|
|
853
|
+
className="text-template-title"
|
|
854
|
+
defaultValue={messageTitle || ''}
|
|
855
|
+
value={messageTitle || ''}
|
|
856
|
+
style={{marginBottom: 27, width: '762px'}}
|
|
857
|
+
size="default"
|
|
858
|
+
label={formatMessage(messages.creativeName)}
|
|
859
|
+
/>
|
|
860
|
+
<CapSelect
|
|
861
|
+
label={formatMessage(messages.facebookPage)}
|
|
862
|
+
key={"select-facebook-page"}
|
|
863
|
+
onChange={onChangeFacebookPage}
|
|
864
|
+
options={options}
|
|
865
|
+
defaultValue={(options[0] || {} ).value}
|
|
866
|
+
value={pageId || (options[0] || {} ).value}
|
|
867
|
+
style={{marginBottom: 27, width: '372px'}}
|
|
868
|
+
></CapSelect>
|
|
869
|
+
</>}
|
|
860
870
|
<CapHeading
|
|
861
871
|
type="h4"
|
|
862
872
|
style={{marginBottom: 11}}
|
|
@@ -880,8 +890,15 @@ export const Advertisement = (props) => {
|
|
|
880
890
|
</FbAdFooter>
|
|
881
891
|
</CapSpin> ) : (
|
|
882
892
|
<CapSpin spinning={spinLoader}>
|
|
893
|
+
{!isFullMode && isEmpty(templateData) && <div style={{ position: 'fixed', top: '25px', zIndex: 1}}>
|
|
894
|
+
<CapHeader
|
|
895
|
+
inline
|
|
896
|
+
title={formatMessage(messages.newFacebookCreatives)}
|
|
897
|
+
className={"cap-header-facebook-ad"}
|
|
898
|
+
/>
|
|
899
|
+
</div>}
|
|
883
900
|
<CapRow className="add-facebook-ad-section" >
|
|
884
|
-
<div className="cap-header-facebook-ad">
|
|
901
|
+
{isFullMode && <div className="cap-header-facebook-ad">
|
|
885
902
|
<CapHeading
|
|
886
903
|
type="h2"
|
|
887
904
|
className="truncate-text"
|
|
@@ -899,7 +916,7 @@ export const Advertisement = (props) => {
|
|
|
899
916
|
title={<FormattedMessage {...messages.creativesTemplatesEditName}/>}
|
|
900
917
|
onClick={onClickEditName}
|
|
901
918
|
/>}
|
|
902
|
-
</div>
|
|
919
|
+
</div>}
|
|
903
920
|
<CapColumn span={12}>
|
|
904
921
|
{isFullMode && <><CapHeading
|
|
905
922
|
type="h4"
|
|
@@ -974,6 +991,7 @@ Advertisement.propTypes = {
|
|
|
974
991
|
facebookTemplateData: PropTypes.object,
|
|
975
992
|
templateData: PropTypes.object,
|
|
976
993
|
params: PropTypes.object,
|
|
994
|
+
selectedMarketingObjective: PropTypes.any,
|
|
977
995
|
|
|
978
996
|
};
|
|
979
997
|
|
|
@@ -280,7 +280,7 @@ const Facebook = (props) => {
|
|
|
280
280
|
fbAdManger={CREATIVE}
|
|
281
281
|
/>
|
|
282
282
|
) :
|
|
283
|
-
(!isFullMode &&
|
|
283
|
+
(!isFullMode && fbAdManger !== CREATIVE && messageStrategy === "DEFAULT" ) ?
|
|
284
284
|
(<div className={className}>
|
|
285
285
|
|
|
286
286
|
<div className="is-scrollable-section" >
|
|
@@ -371,7 +371,7 @@ const Facebook = (props) => {
|
|
|
371
371
|
<CapCustomCard
|
|
372
372
|
type="Facebook"
|
|
373
373
|
FBDynamicComponent={() => (
|
|
374
|
-
|
|
374
|
+
<CapIcon
|
|
375
375
|
size="l"
|
|
376
376
|
type="scenery"
|
|
377
377
|
className="facebook-dynamic-content"
|
|
@@ -382,7 +382,7 @@ const Facebook = (props) => {
|
|
|
382
382
|
<CapColumn span={16}>
|
|
383
383
|
<ul className="parameter-list">
|
|
384
384
|
{adSetParameters.map((parameter, index) => (
|
|
385
|
-
|
|
385
|
+
<li key={parameter} className="parameter-list-item">
|
|
386
386
|
<CapLabel type="label2" className="parameter-index">
|
|
387
387
|
{index + 1}
|
|
388
388
|
</CapLabel>
|
|
@@ -417,6 +417,8 @@ const Facebook = (props) => {
|
|
|
417
417
|
facebookTemplateData={facebookTemplateData}
|
|
418
418
|
messageStrategy={messageStrategy}
|
|
419
419
|
getFormSubscriptionData={getFormSubscriptionData}
|
|
420
|
+
selectedMarketingObjective={selectedMarketingObjective}
|
|
421
|
+
fbAdManger={fbAdManger}
|
|
420
422
|
/>
|
|
421
423
|
</div>
|
|
422
424
|
);
|
|
@@ -442,7 +444,6 @@ Facebook.propTypes = {
|
|
|
442
444
|
|
|
443
445
|
Facebook.defaultProps = {
|
|
444
446
|
marketingObjectiveList: [""],
|
|
445
|
-
|
|
446
447
|
};
|
|
447
448
|
|
|
448
449
|
const mapStateToProps = createStructuredSelector({
|
|
@@ -1143,7 +1143,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1143
1143
|
if (this.isEnabledInLibraryModule("callCreateFromProps")) {
|
|
1144
1144
|
if (this.props.fbAdManger === "CREATIVE") {
|
|
1145
1145
|
this.props.createNew(this.props.fbAdManger);
|
|
1146
|
-
} else{
|
|
1146
|
+
} else {
|
|
1147
1147
|
this.props.createNew();
|
|
1148
1148
|
}
|
|
1149
1149
|
} else if (ev.key && (ev.key.toLowerCase() === "text" || ev.key.toLowerCase() === "image")) {
|
|
@@ -1416,7 +1416,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1416
1416
|
}
|
|
1417
1417
|
}
|
|
1418
1418
|
if (this.isEnabledInLibraryModule("callSelectFromProps")) {
|
|
1419
|
-
this.props.onSelectTemplate(id);
|
|
1419
|
+
this.props.onSelectTemplate(this.selectTemplate(id), this.props.fbAdManger);
|
|
1420
1420
|
} else {
|
|
1421
1421
|
if (this.state.channel.toLowerCase() === 'ebill') {
|
|
1422
1422
|
pathName = `/ebill/edit/${id}`;
|
|
@@ -1428,6 +1428,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1428
1428
|
}
|
|
1429
1429
|
}
|
|
1430
1430
|
|
|
1431
|
+
selectTemplate = (id) => find(this.props.TemplatesList, {_id: id})
|
|
1432
|
+
|
|
1433
|
+
|
|
1431
1434
|
handlePreviewClick(template, modeType) {
|
|
1432
1435
|
this.togglePreview();
|
|
1433
1436
|
const templateInfo = cloneDeep(template);
|
|
@@ -1805,9 +1808,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1805
1808
|
const isWechatChannel = channel === WECHAT;
|
|
1806
1809
|
const isMobilePushChannel = channel === MOBILE_PUSH;
|
|
1807
1810
|
const isLineChannel = channel === LINE;
|
|
1811
|
+
const isFacebookChannel = channel === FACEBOOK;
|
|
1808
1812
|
|
|
1809
1813
|
|
|
1810
|
-
if ((isWechatChannel || isMobilePushChannel || isLineChannel) && !isEmpty(weCrmAccounts)) {
|
|
1814
|
+
if ((isWechatChannel || isMobilePushChannel || isLineChannel) && !isEmpty(weCrmAccounts) && !isFacebookChannel ) {
|
|
1811
1815
|
forEach(weCrmAccounts, (account) => {
|
|
1812
1816
|
if ((isWechatChannel && account.configs && account.configs.is_wecrm_enabled) || isMobilePushChannel || isLineChannel) {
|
|
1813
1817
|
if (query.type === 'embedded' && (!query.module || (query.module && query.module !== 'library'))) {
|
|
@@ -1947,25 +1951,30 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1947
1951
|
render() {
|
|
1948
1952
|
const isFullMode = this.isFullMode();
|
|
1949
1953
|
const { activeMode, channel, wechatFilter, lineFilter } = this.state;
|
|
1950
|
-
let showForFacebook =
|
|
1954
|
+
let showForFacebook = false;
|
|
1951
1955
|
if (channel.toLowerCase() === FACEBOOK_CHANNEL) {
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
pageAccessToken
|
|
1956
|
+
const campaignSettings = this.props.Templates.campaignSettings
|
|
1957
|
+
if (campaignSettings && isEmpty(campaignSettings?.accountSettings)) {
|
|
1958
|
+
showForFacebook = true;
|
|
1959
|
+
} else if(!isEmpty(campaignSettings?.accountSettings)) {
|
|
1960
|
+
const fbSetting = get(this.props.Templates, 'campaignSettings.accountSettings.socialAccountSettings.facebookAccountSettings', []);
|
|
1961
|
+
const { orgUnitFacebookPageSettingsMap = {} } = fbSetting[0] || {};
|
|
1962
|
+
let pageAccessToken = false;
|
|
1963
|
+
if (!isEmpty(orgUnitFacebookPageSettingsMap)) {
|
|
1964
|
+
Object.values(orgUnitFacebookPageSettingsMap).forEach((obj) => {
|
|
1965
|
+
if (obj.pageAccessToken) {
|
|
1966
|
+
pageAccessToken = true;
|
|
1967
|
+
}
|
|
1968
|
+
});
|
|
1969
|
+
if (!pageAccessToken) {
|
|
1970
|
+
showForFacebook = true;
|
|
1962
1971
|
}
|
|
1963
|
-
}
|
|
1964
|
-
|
|
1965
|
-
showForFacebook = false;
|
|
1972
|
+
} else {
|
|
1973
|
+
showForFacebook = true;
|
|
1966
1974
|
}
|
|
1967
1975
|
}
|
|
1968
1976
|
}
|
|
1977
|
+
|
|
1969
1978
|
const showForViber = (![VIBER_CHANNEL, FACEBOOK_CHANNEL].includes(channel.toLowerCase()) ||
|
|
1970
1979
|
(channel.toLowerCase() === VIBER_CHANNEL && !this.props.isFullMode && isEmpty(get(this.props, 'Templates.selectedViberAccount', {}))) ||
|
|
1971
1980
|
(channel.toLowerCase() === FACEBOOK_CHANNEL && showForFacebook)
|
|
@@ -9,7 +9,7 @@ import * as types from './constants';
|
|
|
9
9
|
|
|
10
10
|
const initialState = fromJS({
|
|
11
11
|
getAllTemplatesInProgress: false,
|
|
12
|
-
fetchingOrgLevelCampaignSettings:
|
|
12
|
+
fetchingOrgLevelCampaignSettings: false,
|
|
13
13
|
templates: [],
|
|
14
14
|
deleteResponse: {},
|
|
15
15
|
deleteTemplateInProgress: false,
|
|
@@ -208,7 +208,7 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
|
|
|
208
208
|
router={this.props.router}
|
|
209
209
|
isFullMode={this.props.isFullMode}
|
|
210
210
|
createNew={this.props.createNew}
|
|
211
|
-
onSelectTemplate={
|
|
211
|
+
onSelectTemplate={this.props.onSelectTemplate}
|
|
212
212
|
renderNewCardGrid={this.getTemplateDataForGrid}
|
|
213
213
|
handlePeviewTemplate={this.props.handlePeviewTemplate}
|
|
214
214
|
messageStrategy={this.props.messageStrategy}
|