@capillarytech/creatives-library 6.10.0 → 6.10.2
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/components/CapTagList/index.js +1 -1
- package/components/Edmeditor/index.js +1 -1
- package/components/FormBuilder/index.js +0 -1
- package/containers/TagList/index.js +3 -3
- package/index.html +3 -0
- package/package.json +2 -1
- package/services/api.js +19 -4
- package/translations/en.json +117 -4
- package/translations/zh.json +113 -0
- package/v2Components/BeeEditor/index.js +263 -0
- package/v2Components/BeeEditor/index.scss +11 -0
- package/v2Components/BeeEditor/messages.js +71 -0
- package/v2Components/BeeEditor/tests/index.test.js +10 -0
- package/v2Components/CapTagList/index.js +55 -26
- package/v2Components/CmsTemplatesComponent/index.js +4 -4
- package/v2Components/Edmeditor/index.js +1 -1
- package/v2Components/EmailPreview/_emailPreview.scss +2 -2
- package/v2Components/FormBuilder/index.js +78 -43
- package/v2Containers/App/constants.js +1 -0
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +2 -2
- package/v2Containers/CreativesContainer/index.js +7 -2
- package/v2Containers/Email/constants.js +1 -0
- package/v2Containers/Email/index.js +170 -116
- package/v2Containers/Email/initialSchema.js +18 -3
- package/v2Containers/Email/sagas.js +2 -2
- package/v2Containers/Email/selectors.js +5 -0
- package/v2Containers/EmailWrapper/index.js +19 -3
- package/v2Containers/Line/Container/Image/index.js +1 -1
- package/v2Containers/TagList/index.js +13 -6
- package/v2Containers/Templates/actions.js +8 -3
- package/v2Containers/Templates/constants.js +6 -4
- package/v2Containers/Templates/index.js +36 -20
- package/v2Containers/Templates/messages.js +8 -0
- package/v2Containers/Templates/reducer.js +13 -5
- package/v2Containers/Templates/sagas.js +7 -7
- package/v2Containers/Templates/selectors.js +19 -1
|
@@ -199,9 +199,24 @@ export const response = {
|
|
|
199
199
|
"getEditorInstanse",
|
|
200
200
|
],
|
|
201
201
|
},
|
|
202
|
+
// will remove once bee gets tested end to end
|
|
203
|
+
// {
|
|
204
|
+
// id: "edmeditor",
|
|
205
|
+
// type: "edmeditor",
|
|
206
|
+
// metaType: "text",
|
|
207
|
+
// datatype: "string",
|
|
208
|
+
// required: true,
|
|
209
|
+
// onlyDisplay: true,
|
|
210
|
+
// standalone: false,
|
|
211
|
+
// width: 24,
|
|
212
|
+
// order: 2,
|
|
213
|
+
// customComponent: true,
|
|
214
|
+
// colStyle: { display: "none" },
|
|
215
|
+
// supportedEvents: [],
|
|
216
|
+
// },
|
|
202
217
|
{
|
|
203
|
-
id: "
|
|
204
|
-
type: "
|
|
218
|
+
id: "BEEeditor",
|
|
219
|
+
type: "BEEeditor",
|
|
205
220
|
metaType: "text",
|
|
206
221
|
datatype: "string",
|
|
207
222
|
required: true,
|
|
@@ -365,7 +380,7 @@ export const response = {
|
|
|
365
380
|
styling: "semantic",
|
|
366
381
|
order: 3,
|
|
367
382
|
width: 2,
|
|
368
|
-
offset:
|
|
383
|
+
offset: 4,
|
|
369
384
|
fluid: false,
|
|
370
385
|
onlyDisplay: true,
|
|
371
386
|
submitAction: "onTabOptionSelect",
|
|
@@ -53,7 +53,7 @@ export function* getAllAssets(assetType, queryParams) {
|
|
|
53
53
|
|
|
54
54
|
export function* getCmsSetting({cmsType, projectId, cmsMode, langId, isEdmSupport}) {
|
|
55
55
|
try {
|
|
56
|
-
const result = yield call(Api.
|
|
56
|
+
const result = yield call(Api.getCmsTemplateSettingsV2, cmsType, projectId, cmsMode, langId, isEdmSupport);
|
|
57
57
|
|
|
58
58
|
yield put({ type: types.GET_CMS_EDITOR_DETAILS_SUCCESS, settings: result.data.response.cmsDetails });
|
|
59
59
|
} catch (error) {
|
|
@@ -63,7 +63,7 @@ export function* getCmsSetting({cmsType, projectId, cmsMode, langId, isEdmSuppor
|
|
|
63
63
|
|
|
64
64
|
export function* getCmsData({cmsType, projectId, langId}) {
|
|
65
65
|
try {
|
|
66
|
-
const result = yield call(Api.
|
|
66
|
+
const result = yield call(Api.getCmsTemplateDataV2, cmsType, projectId, langId);
|
|
67
67
|
|
|
68
68
|
yield put({ type: types.GET_CMS_EDITOR_DATA_SUCCESS, data: result.data.response.data, langId: result.data.response.langId });
|
|
69
69
|
} catch (error) {
|
|
@@ -26,9 +26,14 @@ const selectLoadingStatus = () => createSelector(
|
|
|
26
26
|
selectEmailDomain(), (email) => email.createTemplateInProgress || (email.assetUploading !== undefined && email.assetUploading)
|
|
27
27
|
);
|
|
28
28
|
|
|
29
|
+
const makeSelectFetchingCmsData = () => createSelector(
|
|
30
|
+
selectEmailDomain(), (state) => state.get('fetchingCmsData')
|
|
31
|
+
);
|
|
32
|
+
|
|
29
33
|
export default makeSelectEmail;
|
|
30
34
|
export {
|
|
31
35
|
makeSelectEmail,
|
|
32
36
|
makeSelectCreateResponse,
|
|
33
37
|
selectLoadingStatus,
|
|
38
|
+
makeSelectFetchingCmsData,
|
|
34
39
|
};
|
|
@@ -15,7 +15,13 @@ import styled from 'styled-components';
|
|
|
15
15
|
import { CapRadioCard, CapNotification, CapInput, CapUploader, CapSpin, CapButton } from '@capillarytech/cap-ui-library';
|
|
16
16
|
import ComponentWithLabelHOC from '@capillarytech/cap-ui-library/assets/HOCs/ComponentWithLabelHOC';
|
|
17
17
|
import { UserIsAuthenticated } from '../../utils/authWrapper';
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
selectEmailLayout,
|
|
20
|
+
selectCmsTemplates,
|
|
21
|
+
selectEdmEditor,
|
|
22
|
+
uploadSelector,
|
|
23
|
+
selectCmsTemplatesLoader,
|
|
24
|
+
} from '../Templates/selectors';
|
|
19
25
|
import * as templatesActionsCreators from '../Templates/actions';
|
|
20
26
|
import Email from '../Email';
|
|
21
27
|
import CmsTemplatesComponent from '../../v2Components/CmsTemplatesComponent';
|
|
@@ -76,7 +82,7 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
76
82
|
//document.getElementById('upload-email-template').click();
|
|
77
83
|
} else if (step === "templateSelection" && !this.state.selectedCreateMode) {
|
|
78
84
|
if (emailCreateMode === "editor" && !CmsTemplates) {
|
|
79
|
-
templatesActions.
|
|
85
|
+
templatesActions.getDefaultBeeTemplates();
|
|
80
86
|
}
|
|
81
87
|
} else if (step === "createTemplateContent" && !this.state.selectedCreateMode) {
|
|
82
88
|
if (emailCreateMode === 'upload' && !_.isEmpty(EmailLayout)) {
|
|
@@ -156,6 +162,7 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
156
162
|
const data = _.find(CmsTemplates, { _id: id });
|
|
157
163
|
|
|
158
164
|
templatesActions.setEdmTemplate(data);
|
|
165
|
+
templatesActions.setBEETemplate(data);
|
|
159
166
|
this.setState({
|
|
160
167
|
selectedCreateMode: 'editor',
|
|
161
168
|
});
|
|
@@ -188,6 +195,7 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
188
195
|
selectedOfferDetails,
|
|
189
196
|
onPreviewContentClicked,
|
|
190
197
|
onTestContentClicked,
|
|
198
|
+
cmsTemplatesLoader,
|
|
191
199
|
} = this.props;
|
|
192
200
|
const {
|
|
193
201
|
templateName,
|
|
@@ -206,6 +214,7 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
206
214
|
value={templateName}
|
|
207
215
|
labelPosition="top"
|
|
208
216
|
size="default"
|
|
217
|
+
style={{ width: '68%'}}
|
|
209
218
|
/>
|
|
210
219
|
}
|
|
211
220
|
<CardContainer>
|
|
@@ -251,7 +260,13 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
251
260
|
onPreviewContentClicked={onPreviewContentClicked}
|
|
252
261
|
onTestContentClicked={onTestContentClicked}
|
|
253
262
|
/>}
|
|
254
|
-
{
|
|
263
|
+
{!isShowEmailCreate && (
|
|
264
|
+
<CmsTemplatesComponent
|
|
265
|
+
cmsTemplates={CmsTemplates}
|
|
266
|
+
handleEdmDefaultTemplateSelection={this.useEditor}
|
|
267
|
+
cmsTemplatesLoader={cmsTemplatesLoader}
|
|
268
|
+
/>
|
|
269
|
+
)}
|
|
255
270
|
</div>
|
|
256
271
|
}
|
|
257
272
|
</CapSpin>
|
|
@@ -289,6 +304,7 @@ const mapStateToProps = createStructuredSelector({
|
|
|
289
304
|
CmsTemplates: selectCmsTemplates(),
|
|
290
305
|
SelectedEdmDefaultTemplate: selectEdmEditor(),
|
|
291
306
|
isUploading: uploadSelector(),
|
|
307
|
+
cmsTemplatesLoader: selectCmsTemplatesLoader(),
|
|
292
308
|
});
|
|
293
309
|
|
|
294
310
|
function mapDispatchToProps(dispatch) {
|
|
@@ -87,7 +87,7 @@ export const LineImage = ({
|
|
|
87
87
|
if (Line.uploadedAssetData && Object.keys(Line.uploadedAssetData).length) {
|
|
88
88
|
const imgSrc = get(Line, 'uploadedAssetData.metaInfo.secure_file_path', '');
|
|
89
89
|
const imgPreview = get(Line, 'uploadedAssetData.metaInfo.secure_file_path_preview', '');
|
|
90
|
-
if (
|
|
90
|
+
if (imgSrc) {
|
|
91
91
|
updateUploadedAssetList({
|
|
92
92
|
...uploadedAssetList,
|
|
93
93
|
[index]: {
|
|
@@ -66,24 +66,25 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
populateTags(tagsList) {
|
|
69
|
-
console.log('populating tags', tagsList);
|
|
69
|
+
console.log('populating tags', (tagsList || []).length);
|
|
70
70
|
const mainTags = {};
|
|
71
71
|
|
|
72
72
|
//Form tags object with tag headers
|
|
73
73
|
_.forEach(tagsList, (temp) => {
|
|
74
74
|
const tag = temp.definition;
|
|
75
|
+
const { userLocale } = this.props;
|
|
75
76
|
if (!tag['tag-header']) {
|
|
76
77
|
mainTags[tag.value] = {
|
|
77
|
-
name: tag.label[
|
|
78
|
+
name: tag.label[userLocale] ? tag.label[userLocale] : tag.label.en,
|
|
78
79
|
desc: tag.desc ? tag.desc : tag.label.en,
|
|
79
80
|
};
|
|
80
81
|
} else if (tag['tag-header'] && mainTags[tag.value]) {
|
|
81
82
|
mainTags[tag.value].subtags = _.concat(mainTags[tag.value].subtags, tag.subtags);
|
|
82
83
|
} else if (!mainTags[tag.value]) {
|
|
83
|
-
console.log('Inside ', tag.label);
|
|
84
|
+
// console.log('Inside ', tag.label);
|
|
84
85
|
mainTags[tag.value] = {
|
|
85
86
|
'tag-header': true,
|
|
86
|
-
"name": tag.label[
|
|
87
|
+
"name": tag.label[userLocale] ? tag.label[userLocale] : tag.label.en,
|
|
87
88
|
"desc": tag.desc ? tag.desc : tag.label.en,
|
|
88
89
|
"subtags": tag.subtags,
|
|
89
90
|
};
|
|
@@ -228,13 +229,13 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
|
|
|
228
229
|
}
|
|
229
230
|
if (this.props.tags && this.props.tags.length > 0) {
|
|
230
231
|
tags = this.populateTags(this.props.tags);
|
|
231
|
-
console.log('populating tags', tags);
|
|
232
|
+
console.log('populating tags', Object.keys(tags || {}).length);
|
|
232
233
|
}
|
|
233
234
|
if (this.props.selectedOfferDetails && !_.isEmpty(this.props.selectedOfferDetails) && (tags && tags.coupon)) {
|
|
234
235
|
this.transformCouponTags(this.props.selectedOfferDetails, tags);
|
|
235
236
|
}
|
|
236
237
|
tags = _.merge( {}, tags, injectedTags);
|
|
237
|
-
console.log('merged tags', tags);
|
|
238
|
+
console.log('merged tags', Object.keys(tags || {}).length);
|
|
238
239
|
return (
|
|
239
240
|
<div className={this.props.className ? this.props.className : ''}>
|
|
240
241
|
<CapTagList
|
|
@@ -242,8 +243,11 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
|
|
|
242
243
|
tags={tags}
|
|
243
244
|
onSelect={this.onSelect}
|
|
244
245
|
label={this.props.label}
|
|
246
|
+
visibleTaglist={this.props.visibleTaglist}
|
|
247
|
+
hidePopover={this.props.hidePopover}
|
|
245
248
|
onContextChange={this.getTagsforContext}
|
|
246
249
|
moduleFilterEnabled={this.props.moduleFilterEnabled}
|
|
250
|
+
modalProps={this.props.modalProps}
|
|
247
251
|
/>
|
|
248
252
|
</div>
|
|
249
253
|
);
|
|
@@ -265,6 +269,9 @@ TagList.propTypes = {
|
|
|
265
269
|
className: PropTypes.string,
|
|
266
270
|
userLocale: PropTypes.string,
|
|
267
271
|
selectedOfferDetails: PropTypes.array,
|
|
272
|
+
visibleTaglist: PropTypes.bool,
|
|
273
|
+
hidePopover: PropTypes.bool,
|
|
274
|
+
modalProps: PropTypes.any,
|
|
268
275
|
};
|
|
269
276
|
|
|
270
277
|
const mapStateToProps = createStructuredSelector({
|
|
@@ -75,9 +75,9 @@
|
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
export function
|
|
78
|
+
export function getDefaultBeeTemplates() {
|
|
79
79
|
return {
|
|
80
|
-
type: types.
|
|
80
|
+
type: types.GET_DEAFULT_BEE_TEMPLATES_REQUEST,
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
|
|
@@ -87,7 +87,12 @@
|
|
|
87
87
|
template,
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
export function setBEETemplate(template) {
|
|
91
|
+
return {
|
|
92
|
+
type: types.SET_BEE_TEMPLATE,
|
|
93
|
+
template,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
91
96
|
export function getTemplateDetails(id, channel) {
|
|
92
97
|
console.log('getting template', id, channel);
|
|
93
98
|
return {
|
|
@@ -28,16 +28,14 @@ export const SEND_ZIPPED_FILE_REQUEST = "app/v2Containers/Templates/SEND_ZIPPED_
|
|
|
28
28
|
export const SEND_ZIPPED_FILE_SUCCESS = "app/v2Containers/Templates/SEND_ZIPPED_FILE_SUCCESS";
|
|
29
29
|
export const SEND_ZIPPED_FILE_FAILURE = "app/v2Containers/Templates/SEND_ZIPPED_FILE_FAILURE";
|
|
30
30
|
|
|
31
|
-
export const GET_EDM_DEAFULT_TEMPLATES_REQUEST = 'app/v2Containers/Templates/GET_EDM_DEAFULT_TEMPLATES_REQUEST';
|
|
32
|
-
export const GET_EDM_DEAFULT_TEMPLATES_SUCCESS = 'app/v2Containers/Templates/GET_EDM_DEAFULT_TEMPLATES_SUCCESS';
|
|
33
|
-
export const GET_EDM_DEAFULT_TEMPLATES_FAILURE = 'app/v2Containers/Templates/GET_EDM_DEAFULT_TEMPLATES_FAILURE';
|
|
34
|
-
|
|
35
31
|
export const GET_TEMPLATE_DETAILS_REQUEST = 'app/v2Containers/Templates/GET_TEMPLATE_DETAILS_REQUEST';
|
|
36
32
|
export const GET_TEMPLATE_DETAILS_SUCCESS = 'app/v2Containers/Templates/GET_TEMPLATE_DETAILS_SUCCESS';
|
|
37
33
|
export const GET_TEMPLATE_DETAILS_FAILURE = 'app/v2Containers/Templates/GET_TEMPLATE_DETAILS_FAILURE';
|
|
38
34
|
|
|
39
35
|
|
|
40
36
|
export const SET_EDM_TEMPLATE = "app/v2Containers/Templates/SET_EDM_TEMPLATE";
|
|
37
|
+
export const SET_BEE_TEMPLATE = "app/v2Containers/Templates/SET_BEE_TEMPLATE";
|
|
38
|
+
|
|
41
39
|
export const RESET_ACCOUNT = "app/v2Containers/Templates/RESET_ACCOUNT";
|
|
42
40
|
export const RESET_TEMPLATE = "app/v2Containers/Templates/RESET_TEMPLATE";
|
|
43
41
|
export const RESET_TEMPLATE_DATA = "app/v2Containers/Templates/RESET_TEMPLATE_DATA";
|
|
@@ -45,3 +43,7 @@ export const RESET_UPLOAD_DATA = "app/v2Containers/Templates/RESET_UPLOAD_DATA";
|
|
|
45
43
|
export const CLEAR_TEMPLATE_STORE_DATA = "app/v2Containers/Templates/CLEAR_TEMPLATE_STORE_DATA";
|
|
46
44
|
|
|
47
45
|
export const SET_LINE_ACCOUNT = "app/v2Containers/Templates/SET_LINE_ACCOUNT";
|
|
46
|
+
|
|
47
|
+
export const GET_DEAFULT_BEE_TEMPLATES_REQUEST = 'app/v2Containers/Templates/GET_DEAFULT_BEE_TEMPLATES_REQUEST';
|
|
48
|
+
export const GET_DEAFULT_BEE_TEMPLATES_SUCCESS = 'app/v2Containers/Templates/GET_DEAFULT_BEE_TEMPLATES_SUCCESS';
|
|
49
|
+
export const GET_DEAFULT_BEE_TEMPLATES_FAILURE = 'app/v2Containers/Templates/GET_DEAFULT_BEE_TEMPLATES_FAILURE';
|
|
@@ -208,10 +208,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
208
208
|
queryParams.perPage = this.state.perPageLimit;
|
|
209
209
|
const channel = this.state.channel;
|
|
210
210
|
this.props.actions.getAllTemplates(channel, queryParams);
|
|
211
|
-
//this.getAllTemplates({});
|
|
212
|
-
// if (this.state.channel.toLowerCase() === "email") {
|
|
213
|
-
// this.props.actions.getEdmDefaultTemplates();
|
|
214
|
-
// }
|
|
215
211
|
}
|
|
216
212
|
|
|
217
213
|
window.addEventListener("message", this.handleFrameTasks);
|
|
@@ -236,7 +232,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
236
232
|
nextProps.actions.getWeCrmAccounts();
|
|
237
233
|
} else if (nextProps.route.name.toLowerCase() === 'email') {
|
|
238
234
|
channel = 'Email';
|
|
239
|
-
// this.props.actions.getEdmDefaultTemplates();
|
|
240
235
|
} else if (nextProps.route.name.toLowerCase() === "mobilepush") {
|
|
241
236
|
this.setState({defaultAccount: true});
|
|
242
237
|
channel = "mobilepush";
|
|
@@ -654,7 +649,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
654
649
|
{
|
|
655
650
|
carouselContent.map(({
|
|
656
651
|
imageUrl,
|
|
657
|
-
actionLabel
|
|
652
|
+
actionLabel,
|
|
658
653
|
}) => (
|
|
659
654
|
<img
|
|
660
655
|
width={208}
|
|
@@ -1001,7 +996,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1001
996
|
break;
|
|
1002
997
|
}
|
|
1003
998
|
};
|
|
1004
|
-
|
|
999
|
+
|
|
1005
1000
|
createTemplate(ev) {
|
|
1006
1001
|
const type = this.props.location.query.type;
|
|
1007
1002
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
@@ -1120,7 +1115,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1120
1115
|
toggleEdmEmailTemplateSelection = () => {
|
|
1121
1116
|
this.setState( (prevState) => ({
|
|
1122
1117
|
showEdmEmailTemplates: !prevState.showEdmEmailTemplates}), () => {
|
|
1123
|
-
this.props.actions.
|
|
1118
|
+
this.props.actions.getDefaultBeeTemplates();
|
|
1124
1119
|
});
|
|
1125
1120
|
};
|
|
1126
1121
|
|
|
@@ -1415,7 +1410,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1415
1410
|
//content = template.versions.base.messages[0].Text;
|
|
1416
1411
|
const lineContent = template.versions.base.content;
|
|
1417
1412
|
content = {
|
|
1418
|
-
bodyText:lineContent && lineContent.messages[0].text ? lineContent.messages[0].text : '',
|
|
1413
|
+
bodyText: lineContent && lineContent.messages[0].text ? lineContent.messages[0].text : '',
|
|
1419
1414
|
bodyImage: lineContent && lineContent.messages[0].originalContentUrl ? lineContent.messages[0].originalContentUrl : '',
|
|
1420
1415
|
};
|
|
1421
1416
|
const modeType = lineContent && lineContent.messages[0].type;
|
|
@@ -1538,12 +1533,23 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1538
1533
|
|
|
1539
1534
|
|
|
1540
1535
|
isLoading = () => {
|
|
1541
|
-
const
|
|
1542
|
-
const
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1536
|
+
const { EmailCreate, Templates } = this.props;
|
|
1537
|
+
const {
|
|
1538
|
+
getAllTemplatesInProgress,
|
|
1539
|
+
deleteTemplateInProgress,
|
|
1540
|
+
fetchingWeCrmAccounts,
|
|
1541
|
+
sendingFile,
|
|
1542
|
+
} = Templates;
|
|
1543
|
+
const lineLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === 'line');
|
|
1544
|
+
const smsLoader = (getAllTemplatesInProgress && this.state.channel.toLowerCase() === 'sms');
|
|
1545
|
+
const wechatLoader = (((this.state.selectedAccount !== '' && getAllTemplatesInProgress) || (fetchingWeCrmAccounts)) && this.state.channel.toLowerCase() === 'wechat');
|
|
1546
|
+
const mobilePushLoader = (((getAllTemplatesInProgress) || (fetchingWeCrmAccounts)) && this.state.channel.toLowerCase() === 'mobilepush');
|
|
1547
|
+
const emailLoader = (
|
|
1548
|
+
(getAllTemplatesInProgress ||
|
|
1549
|
+
sendingFile ||
|
|
1550
|
+
deleteTemplateInProgress ||
|
|
1551
|
+
EmailCreate.duplicateTemplateInProgress) && this.state.channel.toLowerCase() === 'email');
|
|
1552
|
+
const ebillLoader = ((getAllTemplatesInProgress || sendingFile) && this.state.channel.toLowerCase() === 'ebill');
|
|
1547
1553
|
const isLoading = ((wechatLoader !== undefined) ? wechatLoader : false) ||
|
|
1548
1554
|
(smsLoader !== undefined ? smsLoader : false) ||
|
|
1549
1555
|
(emailLoader !== undefined ? emailLoader : false) ||
|
|
@@ -1801,7 +1807,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1801
1807
|
</CapRadio.CapRadioGroup>
|
|
1802
1808
|
}
|
|
1803
1809
|
{
|
|
1804
|
-
channel.toUpperCase() === LINE &&
|
|
1810
|
+
channel.toUpperCase() === LINE &&
|
|
1805
1811
|
isFullMode
|
|
1806
1812
|
? (
|
|
1807
1813
|
<CapRadio.CapRadioGroup className="line-filters" defaultValue={lineFilter} onChange={this.setLineFilter}>
|
|
@@ -1831,9 +1837,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1831
1837
|
}
|
|
1832
1838
|
</CapRadio.CapRadioGroup>
|
|
1833
1839
|
)
|
|
1834
|
-
: () =>
|
|
1835
|
-
return null;
|
|
1836
|
-
}
|
|
1840
|
+
: () => null
|
|
1837
1841
|
}
|
|
1838
1842
|
<div style={{display: "flex", justifyContent: "space-between", alignItems: 'center'}}>
|
|
1839
1843
|
{isfilterContentVisisble && !isWechatEmbedded && <CapButton
|
|
@@ -1858,7 +1862,19 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1858
1862
|
const creativesParams = this.getCreativesParams();
|
|
1859
1863
|
const templates = this.props.TemplatesList || [];
|
|
1860
1864
|
const {route} = this.props;
|
|
1861
|
-
const
|
|
1865
|
+
const loadingTipMap = {
|
|
1866
|
+
sendingFile: 'uploadingFile',
|
|
1867
|
+
deleteTemplateInProgress: 'deletingTemplate',
|
|
1868
|
+
duplicateTemplateInProgress: 'duplicatingTemplate',
|
|
1869
|
+
};
|
|
1870
|
+
const { sendingFile, deleteTemplateInProgress } = this.props.Templates;
|
|
1871
|
+
const loadingTipIntl =
|
|
1872
|
+
((['email', 'ebill'].includes(this.state.channel.toLowerCase() === 'email')) && sendingFile && 'sendingFile') ||
|
|
1873
|
+
(deleteTemplateInProgress && 'deletingTemplate') ||
|
|
1874
|
+
(this.props.EmailCreate.duplicateTemplateInProgress && 'duplicatingTemplate');
|
|
1875
|
+
|
|
1876
|
+
const loadingTip = messages[loadingTipIntl] ? this.props.intl.formatMessage(messages[loadingTipIntl]) : this.props.intl.formatMessage(messages.gettingAllTemplates);
|
|
1877
|
+
|
|
1862
1878
|
return (
|
|
1863
1879
|
<>
|
|
1864
1880
|
{activeMode === ACCOUNT_CHANGE_MODE && this.renderAccountSelection()}
|
|
@@ -354,4 +354,12 @@ export default defineMessages({
|
|
|
354
354
|
id: `${scope}.richMediaTemplates`,
|
|
355
355
|
defaultMessage: 'Rich media templates',
|
|
356
356
|
},
|
|
357
|
+
deletingTemplate: {
|
|
358
|
+
id: `${scope}.deletingTemplate`,
|
|
359
|
+
defaultMessage: 'Deleting template...',
|
|
360
|
+
},
|
|
361
|
+
duplicatingTemplate: {
|
|
362
|
+
id: `${scope}.duplicatingTemplate`,
|
|
363
|
+
defaultMessage: 'Duplicating template...'
|
|
364
|
+
},
|
|
357
365
|
});
|
|
@@ -85,7 +85,8 @@ function templatesReducer(state = initialState, action) {
|
|
|
85
85
|
case types.SET_SELECTED_LAYOUT:
|
|
86
86
|
return state
|
|
87
87
|
.set('selectedEmailLayout', fromJS(action.selectedTemplate))
|
|
88
|
-
.set('edmTemplate', fromJS({}))
|
|
88
|
+
.set('edmTemplate', fromJS({}))
|
|
89
|
+
.set('BEETemplate', fromJS({}));
|
|
89
90
|
case types.RESET_UPLOAD_DATA:
|
|
90
91
|
return state
|
|
91
92
|
.set('selectedEmailLayout', "");
|
|
@@ -98,27 +99,34 @@ function templatesReducer(state = initialState, action) {
|
|
|
98
99
|
return state
|
|
99
100
|
.set('sendingFile', false)
|
|
100
101
|
.set('selectedEmailLayout', fromJS(action.selectedTemplate))
|
|
101
|
-
.set('edmTemplate', fromJS({}))
|
|
102
|
+
.set('edmTemplate', fromJS({}))
|
|
103
|
+
.set('BEETemplate', fromJS({}));
|
|
102
104
|
case types.SEND_ZIPPED_FILE_FAILURE:
|
|
103
105
|
return state
|
|
104
106
|
.set('sendingFile', false)
|
|
105
107
|
.set('errorSendingFile', true)
|
|
106
108
|
.set('errorMessage', action.data)
|
|
107
109
|
.set('selectedEmailLayout', "");
|
|
108
|
-
case types.
|
|
110
|
+
case types.GET_DEAFULT_BEE_TEMPLATES_REQUEST:
|
|
109
111
|
return state.set('getCmsTemplatesInProgress', true);
|
|
110
|
-
case types.
|
|
112
|
+
case types.GET_DEAFULT_BEE_TEMPLATES_SUCCESS:
|
|
111
113
|
return state.set('getCmsTemplatesInProgress', false)
|
|
112
114
|
.set('cmsTemplates', action.data ? fromJS(action.data.templates) : []);
|
|
113
|
-
case types.
|
|
115
|
+
case types.GET_DEAFULT_BEE_TEMPLATES_FAILURE:
|
|
114
116
|
return state.set('getCmsTemplatesInProgress', false);
|
|
115
117
|
case types.SET_EDM_TEMPLATE:
|
|
116
118
|
return state
|
|
117
119
|
.set('edmTemplate', fromJS(action.template))
|
|
120
|
+
.set('BEETemplate', fromJS(action.template))
|
|
121
|
+
.set('selectedEmailLayout', "");
|
|
122
|
+
case types.SET_BEE_TEMPLATE:
|
|
123
|
+
return state
|
|
124
|
+
.set('BEETemplate', fromJS(action.template))
|
|
118
125
|
.set('selectedEmailLayout', "");
|
|
119
126
|
case types.RESET_TEMPLATE_DATA:
|
|
120
127
|
return state
|
|
121
128
|
.set('edmTemplate', fromJS({}))
|
|
129
|
+
.set('BEETemplate', fromJS({}))
|
|
122
130
|
.set('selectedEmailLayout', "")
|
|
123
131
|
.set('templateDetails', fromJS({}));
|
|
124
132
|
case types.GET_TEMPLATE_DETAILS_REQUEST:
|
|
@@ -102,14 +102,14 @@ export function* sendZippedFile({selectedFile, errorHandler, successHandler}) {
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
export function*
|
|
105
|
+
export function* getDefaultBeeTemplates() {
|
|
106
106
|
try {
|
|
107
107
|
console.log('saga getAllTemplates');
|
|
108
|
-
const result = yield call(Api.
|
|
108
|
+
const result = yield call(Api.getDefaultBeeTemplates);
|
|
109
109
|
const edmTemplates = result.response;
|
|
110
|
-
yield put({ type: types.
|
|
110
|
+
yield put({ type: types.GET_DEAFULT_BEE_TEMPLATES_SUCCESS, data: edmTemplates });
|
|
111
111
|
} catch (error) {
|
|
112
|
-
yield put({ type: types.
|
|
112
|
+
yield put({ type: types.GET_DEAFULT_BEE_TEMPLATES_FAILURE, error });
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -155,8 +155,8 @@ function* watchSendingFile() {
|
|
|
155
155
|
yield cancel(watcher);
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
function*
|
|
159
|
-
const watcher = yield takeLatest(types.
|
|
158
|
+
function* watchGetDefaultBeeTemplates() {
|
|
159
|
+
const watcher = yield takeLatest(types.GET_DEAFULT_BEE_TEMPLATES_REQUEST, getDefaultBeeTemplates);
|
|
160
160
|
yield take(LOCATION_CHANGE);
|
|
161
161
|
yield cancel(watcher);
|
|
162
162
|
}
|
|
@@ -174,6 +174,6 @@ export default [
|
|
|
174
174
|
watchGetUserList,
|
|
175
175
|
watchFetchWeCrmAccounts,
|
|
176
176
|
watchSendingFile,
|
|
177
|
-
|
|
177
|
+
watchGetDefaultBeeTemplates,
|
|
178
178
|
watchGetTemplateDetails,
|
|
179
179
|
];
|
|
@@ -57,12 +57,30 @@ const selectCmsTemplates = () => createSelector(makeSelectTemplates(), (template
|
|
|
57
57
|
return null;
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
+
const selectCmsTemplatesLoader = () => createSelector(
|
|
61
|
+
makeSelectTemplates(),
|
|
62
|
+
(templates) => templates.getCmsTemplatesInProgress,
|
|
63
|
+
);
|
|
64
|
+
|
|
60
65
|
const selectEdmEditor = () => createSelector(makeSelectTemplates(), (templates) => {
|
|
61
66
|
const {edmTemplate} = templates;
|
|
62
67
|
return edmTemplate || null;
|
|
63
68
|
});
|
|
69
|
+
|
|
70
|
+
const selectBEEEditor = () => createSelector(makeSelectTemplates(), (templates) => {
|
|
71
|
+
const {BEETemplate} = templates;
|
|
72
|
+
return BEETemplate || null;
|
|
73
|
+
});
|
|
74
|
+
|
|
64
75
|
export {
|
|
65
76
|
uploadSelector,
|
|
66
77
|
templateUserList,
|
|
67
|
-
makeSelectTemplates,
|
|
78
|
+
makeSelectTemplates,
|
|
79
|
+
makeSelectTemplatesResponse,
|
|
80
|
+
selectTemplateContent,
|
|
81
|
+
selectEmailLayout,
|
|
82
|
+
selectCmsTemplates,
|
|
83
|
+
selectEdmEditor,
|
|
84
|
+
selectBEEEditor,
|
|
85
|
+
selectCmsTemplatesLoader,
|
|
68
86
|
};
|