@capillarytech/creatives-library 2.0.44 → 2.0.46
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/CmsTemplatesComponent/index.js +1 -0
- package/components/EmailMobilePreview/index.js +108 -0
- package/components/EmailMobilePreview/index.scss +66 -0
- package/components/FormBuilder/_formBuilder.scss +2 -14
- package/components/FormBuilder/index.js +106 -93
- package/components/Header/index.js +41 -0
- package/components/Header/messages.js +13 -0
- package/components/Header/tests/index.test.js +10 -0
- package/components/PreviewSideBar/index.js +7 -3
- package/components/TemplatePreview/index.js +6 -7
- package/config/app.js +2 -2
- package/containers/Cap/index.js +1 -1
- package/containers/Cap/selectors.js +11 -1
- package/containers/CreativesContainer/SlideBoxContent.js +5 -1
- package/containers/CreativesContainer/SlideBoxFooter.js +5 -9
- package/containers/CreativesContainer/index.js +59 -16
- package/containers/Email/actions.js +2 -3
- package/containers/Email/index.js +32 -26
- package/containers/Email/sagas.js +1 -0
- package/containers/EmailWrapper/index.js +43 -13
- package/containers/EmailWrapper/messages.js +8 -0
- package/containers/MobilePush/Create/index.js +1 -1
- package/containers/Sms/Create/actions.js +4 -4
- package/containers/Sms/Create/index.js +28 -17
- package/containers/Sms/Create/sagas.js +1 -2
- package/containers/Sms/Edit/actions.js +4 -5
- package/containers/Sms/Edit/index.js +31 -5
- package/containers/Sms/Edit/sagas.js +1 -3
- package/containers/Templates/actions.js +3 -1
- package/containers/Templates/index.js +219 -84
- package/containers/Templates/messages.js +8 -0
- package/containers/Templates/sagas.js +16 -4
- package/containers/Templates/selectors.js +2 -0
- package/containers/TemplatesV2/index.js +9 -4
- package/containers/TemplatesV2/reducer.js +34 -0
- package/containers/TemplatesV2/sagas.js +32 -0
- package/containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
- package/containers/WeChat/MapTemplates/actions.js +52 -0
- package/containers/WeChat/MapTemplates/constants.js +28 -0
- package/containers/WeChat/MapTemplates/index.js +1401 -0
- package/containers/WeChat/MapTemplates/messages.js +73 -0
- package/containers/WeChat/MapTemplates/reducer.js +74 -0
- package/containers/WeChat/MapTemplates/sagas.js +86 -0
- package/containers/WeChat/MapTemplates/selectors.js +25 -0
- package/containers/WeChat/MapTemplates/tests/actions.test.js +18 -0
- package/containers/WeChat/MapTemplates/tests/index.test.js +10 -0
- package/containers/WeChat/MapTemplates/tests/reducer.test.js +9 -0
- package/containers/WeChat/MapTemplates/tests/sagas.test.js +15 -0
- package/containers/WeChat/MapTemplates/tests/selectors.test.js +10 -0
- package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +13 -0
- package/containers/WeChat/RichmediaTemplates/Create/actions.js +35 -0
- package/containers/WeChat/RichmediaTemplates/Create/constants.js +14 -0
- package/containers/WeChat/RichmediaTemplates/Create/index.js +679 -0
- package/containers/WeChat/RichmediaTemplates/Create/messages.js +13 -0
- package/containers/WeChat/RichmediaTemplates/Create/reducer.js +49 -0
- package/containers/WeChat/RichmediaTemplates/Create/sagas.js +44 -0
- package/containers/WeChat/RichmediaTemplates/Create/selectors.js +32 -0
- package/containers/WeChat/RichmediaTemplates/Create/tests/actions.test.js +18 -0
- package/containers/WeChat/RichmediaTemplates/Create/tests/index.test.js +10 -0
- package/containers/WeChat/RichmediaTemplates/Create/tests/reducer.test.js +9 -0
- package/containers/WeChat/RichmediaTemplates/Create/tests/sagas.test.js +15 -0
- package/containers/WeChat/RichmediaTemplates/Create/tests/selectors.test.js +10 -0
- package/containers/WeChat/RichmediaTemplates/Create/testschema.js +379 -0
- package/containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
- package/containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
- package/containers/WeChat/RichmediaTemplates/Edit/index.js +98 -0
- package/containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
- package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
- package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +32 -0
- package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +25 -0
- package/containers/WeChat/RichmediaTemplates/Edit/tests/actions.test.js +18 -0
- package/containers/WeChat/RichmediaTemplates/Edit/tests/index.test.js +10 -0
- package/containers/WeChat/RichmediaTemplates/Edit/tests/reducer.test.js +9 -0
- package/containers/WeChat/RichmediaTemplates/Edit/tests/sagas.test.js +15 -0
- package/containers/WeChat/RichmediaTemplates/Edit/tests/selectors.test.js +10 -0
- package/containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
- package/containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
- package/containers/WeChat/RichmediaTemplates/View/index.js +45 -0
- package/containers/WeChat/RichmediaTemplates/View/messages.js +13 -0
- package/containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
- package/containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
- package/containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
- package/containers/WeChat/RichmediaTemplates/View/tests/actions.test.js +18 -0
- package/containers/WeChat/RichmediaTemplates/View/tests/index.test.js +10 -0
- package/containers/WeChat/RichmediaTemplates/View/tests/reducer.test.js +9 -0
- package/containers/WeChat/RichmediaTemplates/View/tests/sagas.test.js +15 -0
- package/containers/WeChat/RichmediaTemplates/View/tests/selectors.test.js +10 -0
- package/index.js +3 -3
- package/package.json +1 -1
- package/routes.js +53 -13
- package/services/api.js +6 -1
|
@@ -20,6 +20,7 @@ import messages from './messages';
|
|
|
20
20
|
export class EmailWrapper extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
21
21
|
constructor(props) {
|
|
22
22
|
super(props);
|
|
23
|
+
this.emailUploader = React.createRef();
|
|
23
24
|
this.state = {
|
|
24
25
|
templateName: '',
|
|
25
26
|
routeParams: {
|
|
@@ -37,6 +38,9 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
37
38
|
title: <FormattedMessage {...messages.zipUpload}/>,
|
|
38
39
|
content: <FormattedMessage {...messages.zipUploadDesc}/>,
|
|
39
40
|
value: 'upload',
|
|
41
|
+
onClick: () => {
|
|
42
|
+
this.emailUploader.current.click();
|
|
43
|
+
},
|
|
40
44
|
},
|
|
41
45
|
{
|
|
42
46
|
title: <FormattedMessage {...messages.useEditor}/>,
|
|
@@ -51,14 +55,16 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
51
55
|
// const isValid = this.isValid();
|
|
52
56
|
const {emailCreateMode, EmailLayout, CmsTemplates, step, SelectedEdmDefaultTemplate, templatesActions} = this.props;
|
|
53
57
|
if (step === "modeSelection" && !this.state.selectedCreateMode && emailCreateMode === 'upload' && !EmailLayout) {
|
|
54
|
-
document.getElementById('upload-email-template').click();
|
|
58
|
+
//document.getElementById('upload-email-template').click();
|
|
55
59
|
} else if (step === "templateSelection" && !this.state.selectedCreateMode) {
|
|
56
60
|
if (emailCreateMode === "editor" && !CmsTemplates) {
|
|
57
61
|
templatesActions.getEdmDefaultTemplates();
|
|
58
62
|
}
|
|
59
|
-
} else if (step === "
|
|
60
|
-
if (emailCreateMode === 'upload' && !EmailLayout) {
|
|
61
|
-
this.
|
|
63
|
+
} else if (step === "createTemplateContent" && !this.state.selectedCreateMode) {
|
|
64
|
+
if (emailCreateMode === 'upload' && !_.isEmpty(EmailLayout)) {
|
|
65
|
+
this.setCreateMode('upload');
|
|
66
|
+
|
|
67
|
+
//this.handleFileUpload(modeContent.e, modeContent.files);
|
|
62
68
|
} else if (emailCreateMode === "editor" && _.isEmpty(SelectedEdmDefaultTemplate)) {
|
|
63
69
|
this.handleEdmDefaultTemplateSelection(modeContent.id);
|
|
64
70
|
}
|
|
@@ -68,9 +74,10 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
68
74
|
|
|
69
75
|
componentWillUnmount() {
|
|
70
76
|
this.props.onResetStep();
|
|
77
|
+
this.props.templatesActions.resetTemplateData();
|
|
71
78
|
}
|
|
72
79
|
onTemplateNameChange = (ev) => {
|
|
73
|
-
this.setState({templateName: ev.target.
|
|
80
|
+
this.setState({templateName: ev.target.value});
|
|
74
81
|
}
|
|
75
82
|
onChange = (e) => {
|
|
76
83
|
this.props.onEmailModeChange( e.target.value );
|
|
@@ -79,26 +86,35 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
79
86
|
setCreateMode = (emailCreateMode) => {
|
|
80
87
|
this.setState({selectedCreateMode: emailCreateMode});
|
|
81
88
|
}
|
|
89
|
+
handleZipUploadError = () => {
|
|
90
|
+
const message = {
|
|
91
|
+
key: "email-upload-error",
|
|
92
|
+
message: this.props.intl.formatMessage(messages.invalidUploadFileError2),
|
|
93
|
+
description: this.props.intl.formatMessage(messages.invalidUploadFileErrorDesc2),
|
|
94
|
+
};
|
|
95
|
+
CapNotification.error(message);
|
|
96
|
+
}
|
|
82
97
|
handleFileUpload = (e, files) => {
|
|
83
|
-
const { templatesActions, intl } = this.props;
|
|
98
|
+
const { templatesActions, intl, showNextStep } = this.props;
|
|
84
99
|
if (files.length === 0) {
|
|
85
100
|
return;
|
|
86
101
|
}
|
|
87
|
-
this.setCreateMode('upload');
|
|
102
|
+
//this.setCreateMode('upload');
|
|
88
103
|
const fileExtension = files[0].name.split('.').pop();
|
|
89
104
|
const supportedZipFormats = ['zip'];
|
|
90
105
|
//TODO: has to be changed based on props.
|
|
91
106
|
|
|
92
107
|
|
|
93
108
|
if (supportedZipFormats.indexOf(fileExtension.toLowerCase()) !== -1) {
|
|
94
|
-
templatesActions.handleZipUpload(files[0]);
|
|
95
|
-
|
|
109
|
+
templatesActions.handleZipUpload(files[0], showNextStep, this.handleZipUploadError);
|
|
110
|
+
this.emailUploader.current.value = "";
|
|
96
111
|
} else if (fileExtension === 'html' || fileExtension === 'htm') {
|
|
97
112
|
const reader = new FileReader();
|
|
98
113
|
reader.onload = () => {
|
|
99
114
|
const text = reader.result;
|
|
100
115
|
templatesActions.handleHtmlUpload(text);
|
|
101
|
-
|
|
116
|
+
showNextStep();
|
|
117
|
+
this.emailUploader.current.value = "";
|
|
102
118
|
};
|
|
103
119
|
reader.readAsText(files[0]);
|
|
104
120
|
} else {
|
|
@@ -119,12 +135,18 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
119
135
|
selectedCreateMode: 'editor'});
|
|
120
136
|
};
|
|
121
137
|
useFileUpload = (e, {files}) => {
|
|
122
|
-
this.
|
|
138
|
+
this.handleFileUpload(e, files);
|
|
139
|
+
this.setState({modeContent: {e, files}});
|
|
123
140
|
}
|
|
124
141
|
useEditor = (id) => {
|
|
125
142
|
this.setState({modeContent: {id}}, this.props.showNextStep);
|
|
126
143
|
}
|
|
127
|
-
|
|
144
|
+
resetEmailOptions = (ev) => {
|
|
145
|
+
ev.preventDefault();
|
|
146
|
+
if (this.props.emailCreateMode === "upload" && _.isEmpty(this.state.modeContent.files)) {
|
|
147
|
+
this.props.onEmailModeChange( "" );
|
|
148
|
+
}
|
|
149
|
+
}
|
|
128
150
|
isShowEmailCreate = () => !_.isEmpty(this.state.selectedCreateMode) && (!_.isEmpty(this.props.EmailLayout) || this.props.SelectedEdmDefaultTemplate)
|
|
129
151
|
render() {
|
|
130
152
|
const {emailCreateMode, isGetFormData, getFormdata, type, CmsTemplates, step, cap, isFullMode} = this.props;
|
|
@@ -132,7 +154,15 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
|
|
|
132
154
|
const isShowEmailCreate = this.isShowEmailCreate();
|
|
133
155
|
return (
|
|
134
156
|
<div>
|
|
135
|
-
<input
|
|
157
|
+
<input
|
|
158
|
+
type="file"
|
|
159
|
+
key="upload-email-template"
|
|
160
|
+
id="upload-email-template"
|
|
161
|
+
ref={this.emailUploader}
|
|
162
|
+
style={{ display: 'none'}}
|
|
163
|
+
accept=".zip, .html, .htm"
|
|
164
|
+
onChange={(event) => this.useFileUpload(event, {files: event.target.files})}
|
|
165
|
+
/>
|
|
136
166
|
|
|
137
167
|
{step === "modeSelection" || (step === "templateSelection" && emailCreateMode === "upload") ?
|
|
138
168
|
<div>
|
|
@@ -42,4 +42,12 @@ export default defineMessages({
|
|
|
42
42
|
id: `app.containers.EmailWrapper.invalidUploadFileDesc`,
|
|
43
43
|
defaultMessage: `Please select another file with valid file format.`,
|
|
44
44
|
},
|
|
45
|
+
invalidUploadFileError2: {
|
|
46
|
+
id: `app.containers.EmailWrapper.invalidUploadFileError`,
|
|
47
|
+
defaultMessage: `File upload failed`,
|
|
48
|
+
},
|
|
49
|
+
invalidUploadFileErrorDesc2: {
|
|
50
|
+
id: `app.containers.EmailWrapper.invalidUploadFileDesc`,
|
|
51
|
+
defaultMessage: `Please select another file with valid file contents`,
|
|
52
|
+
},
|
|
45
53
|
});
|
|
@@ -840,7 +840,7 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
840
840
|
temp.injectedEvents = {};
|
|
841
841
|
|
|
842
842
|
_.forEach(col.supportedEvents, (event) => {
|
|
843
|
-
console.log('injected event for ', col, event
|
|
843
|
+
console.log('injected event for ', col, event);
|
|
844
844
|
temp.injectedEvents[event] = this.getMappedEvent(col.id, event);
|
|
845
845
|
});
|
|
846
846
|
return true;
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
|
|
7
7
|
import * as types from './constants';
|
|
8
8
|
|
|
9
|
-
export function createTemplate(template) {
|
|
10
|
-
console.log('action trigereed createtemplate');
|
|
9
|
+
export function createTemplate(template, onCreateTemplateComplete) {
|
|
11
10
|
return {
|
|
12
|
-
type: types.CREATE_TEMPLATE_REQUEST,
|
|
11
|
+
type: types.CREATE_TEMPLATE_REQUEST,
|
|
12
|
+
template,
|
|
13
|
+
onCreateTemplateComplete,
|
|
13
14
|
};
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export function clearCreateResponse() {
|
|
17
|
-
console.log('clearCreateResponse');
|
|
18
18
|
return {
|
|
19
19
|
type: types.CLEAR_CREATE_RESPONSE_REQUEST,
|
|
20
20
|
};
|
|
@@ -128,19 +128,6 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
128
128
|
if (nextProps.location.query.module === 'library' && nextProps.isGetFormData) {
|
|
129
129
|
nextProps.getFormSubscriptionData(this.getFormData());
|
|
130
130
|
}
|
|
131
|
-
if (nextProps.createResponse && nextProps.createResponse.templateId) {
|
|
132
|
-
this.discardValues();
|
|
133
|
-
const message = getMessageObject('success', 'SMS Template Created Successfully', true);
|
|
134
|
-
this.props.globalActions.addMessageToQueue(message);
|
|
135
|
-
this.props.actions.clearCreateResponse();
|
|
136
|
-
const type = this.props.location.query.type;
|
|
137
|
-
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
138
|
-
this.props.router.push({
|
|
139
|
-
pathname: `/sms/`,
|
|
140
|
-
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
|
|
144
131
|
if (nextProps.Create.createTemplateError && !_.isEqual(nextProps.Create.createTemplateError, this.props.Create.createTemplateError)) {
|
|
145
132
|
const message = getMessageObject('error', (nextProps.Create.createTemplateErrorMessage && nextProps.Create.createTemplateErrorMessage !== '') ? nextProps.Create.createTemplateErrorMessage : this.props.intl.formatMessage(messages.somethingWentWrong), true);
|
|
146
133
|
this.props.globalActions.addMessageToQueue(message);
|
|
@@ -163,7 +150,7 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
163
150
|
}
|
|
164
151
|
}
|
|
165
152
|
}
|
|
166
|
-
if (nextProps.metaEntities && nextProps.metaEntities.tags && nextProps.metaEntities.tags.custom && this.props.metaEntities.tags !== nextProps.metaEntities.tags) {
|
|
153
|
+
if (nextProps.metaEntities && nextProps.metaEntities.tags && nextProps.metaEntities.tags.custom && this.props.metaEntities.tags && this.props.metaEntities.tags.standard && (this.props.metaEntities.tags !== nextProps.metaEntities.tags)) {
|
|
167
154
|
let injectedTags = _.cloneDeep(this.state.injectedTags);
|
|
168
155
|
delete injectedTags["Registration custom fields"];
|
|
169
156
|
delete injectedTags["Store custom fields"];
|
|
@@ -219,7 +206,29 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
219
206
|
onTabChange(data) {
|
|
220
207
|
this.setState({currentTab: data});
|
|
221
208
|
}
|
|
222
|
-
|
|
209
|
+
onCreateTemplateComplete = (editResponse) => {
|
|
210
|
+
if (editResponse.templateId) {
|
|
211
|
+
this.resetSchema();
|
|
212
|
+
this.setState({
|
|
213
|
+
formData: {},
|
|
214
|
+
tabCount: 1,
|
|
215
|
+
currentTab: 1,
|
|
216
|
+
editData: {},
|
|
217
|
+
});
|
|
218
|
+
const message = getMessageObject('success', 'SMS Template Created Successfully', true);
|
|
219
|
+
this.props.globalActions.addMessageToQueue(message);
|
|
220
|
+
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
221
|
+
const type = this.props.location.query.type;
|
|
222
|
+
if (this.props.isFullMode) {
|
|
223
|
+
this.props.getFormSubscriptionData({ value: editResponse.templateId, validity: true});
|
|
224
|
+
} else {
|
|
225
|
+
this.props.router.push({
|
|
226
|
+
pathname: `/sms/`,
|
|
227
|
+
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
223
232
|
getFormData(e, value) {
|
|
224
233
|
const formData = _.cloneDeep(this.state.formData);
|
|
225
234
|
let baseData = {};
|
|
@@ -902,7 +911,7 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
|
|
|
902
911
|
obj.name = formData['template-name'];
|
|
903
912
|
obj.versions.base = formData.base;
|
|
904
913
|
|
|
905
|
-
this.props.actions.createTemplate(obj);
|
|
914
|
+
this.props.actions.createTemplate(obj, this.onCreateTemplateComplete);
|
|
906
915
|
}
|
|
907
916
|
isSmsLoading = () => {
|
|
908
917
|
//let {isLoading} = this.props;
|
|
@@ -979,7 +988,9 @@ Create.propTypes = {
|
|
|
979
988
|
supportedTags: PropTypes.array,
|
|
980
989
|
getDefaultTags: PropTypes.string,
|
|
981
990
|
isLoadingMetaEntities: PropTypes.bool,
|
|
982
|
-
creativesContainerActions: PropTypes.object,
|
|
991
|
+
// creativesContainerActions: PropTypes.object,
|
|
992
|
+
getFormSubscriptionData: PropTypes.func,
|
|
993
|
+
isFullMode: PropTypes.bool,
|
|
983
994
|
};
|
|
984
995
|
|
|
985
996
|
const mapStateToProps = createStructuredSelector({
|
|
@@ -9,7 +9,6 @@ import * as types from './constants';
|
|
|
9
9
|
export function* createTemplate(template) {
|
|
10
10
|
let errorMsg;
|
|
11
11
|
try {
|
|
12
|
-
console.log('saga createTemplate sms', template);
|
|
13
12
|
const result = yield call(Api.createTemplate, template);
|
|
14
13
|
// const sidebar = result.response.sidebar;
|
|
15
14
|
if (result.message || result.status.code === 500) {
|
|
@@ -17,6 +16,7 @@ export function* createTemplate(template) {
|
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
yield put({ type: types.CREATE_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
|
|
19
|
+
yield template.onCreateTemplateComplete(result.response);
|
|
20
20
|
} catch (error) {
|
|
21
21
|
yield put({ type: types.CREATE_TEMPLATE_FAILURE, error, errorMsg });
|
|
22
22
|
}
|
|
@@ -24,7 +24,6 @@ export function* createTemplate(template) {
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
function* watchCreateTemplate() {
|
|
27
|
-
console.log('inside watch');
|
|
28
27
|
const watcher = yield takeLatest(types.CREATE_TEMPLATE_REQUEST, createTemplate);
|
|
29
28
|
yield take(LOCATION_CHANGE);
|
|
30
29
|
yield cancel(watcher);
|
|
@@ -11,15 +11,15 @@ export function defaultAction() {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export function editTemplate(template) {
|
|
15
|
-
console.log('action trigereed');
|
|
14
|
+
export function editTemplate(template, onUpdateTemplateComplete) {
|
|
16
15
|
return {
|
|
17
|
-
type: types.EDIT_TEMPLATE_REQUEST,
|
|
16
|
+
type: types.EDIT_TEMPLATE_REQUEST,
|
|
17
|
+
template,
|
|
18
|
+
onUpdateTemplateComplete,
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
export function getTemplateDetails(id) {
|
|
22
|
-
console.log('getting template', id);
|
|
23
23
|
return {
|
|
24
24
|
type: types.GET_TEMPLATE_DETAILS_REQUEST, id,
|
|
25
25
|
};
|
|
@@ -33,7 +33,6 @@ export function setTemplateDetails(templateDetails) {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export function clearEditResponse() {
|
|
36
|
-
console.log('clearEditResponse');
|
|
37
36
|
return {
|
|
38
37
|
type: types.CLEAR_EDIT_RESPONSE_REQUEST,
|
|
39
38
|
};
|
|
@@ -170,7 +170,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
170
170
|
const message = getMessageObject('error', (nextProps.Edit.editTemplateErrorMessage && nextProps.Edit.editTemplateErrorMessage !== '') ? nextProps.Edit.editTemplateErrorMessage : this.props.intl.formatMessage(messages.somethingWentWrong), true);
|
|
171
171
|
this.props.globalActions.addMessageToQueue(message);
|
|
172
172
|
}
|
|
173
|
-
if (nextProps.metaEntities && nextProps.metaEntities.tags && nextProps.metaEntities.tags.custom && this.props.metaEntities.tags !== nextProps.metaEntities.tags) {
|
|
173
|
+
if (nextProps.metaEntities && nextProps.metaEntities.tags && nextProps.metaEntities.tags.custom && this.props.metaEntities.tags && this.props.metaEntities.tags.standard && (this.props.metaEntities.tags !== nextProps.metaEntities.tags)) {
|
|
174
174
|
let injectedTags = _.cloneDeep(this.state.injectedTags);
|
|
175
175
|
delete injectedTags["Registration custom fields"];
|
|
176
176
|
delete injectedTags["Store custom fields"];
|
|
@@ -222,7 +222,31 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
222
222
|
onTabChange(data) {
|
|
223
223
|
this.setState({currentTab: data});
|
|
224
224
|
}
|
|
225
|
-
|
|
225
|
+
onUpdateTemplateComplete = (editResponse) => {
|
|
226
|
+
if (editResponse.templateId) {
|
|
227
|
+
this.resetSchema();
|
|
228
|
+
this.setState({
|
|
229
|
+
formData: {},
|
|
230
|
+
tabCount: 1,
|
|
231
|
+
currentTab: 1,
|
|
232
|
+
editData: {},
|
|
233
|
+
});
|
|
234
|
+
const message = getMessageObject('success', 'SMS Template Edited Successfully', true);
|
|
235
|
+
this.props.globalActions.addMessageToQueue(message);
|
|
236
|
+
this.props.actions.clearEditResponse();
|
|
237
|
+
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
238
|
+
const type = this.props.location.query.type;
|
|
239
|
+
if (this.props.isFullMode) {
|
|
240
|
+
const {versions, ...rest} = editResponse.templateId;
|
|
241
|
+
this.props.getFormSubscriptionData({ value: versions, ...rest, validity: true});
|
|
242
|
+
} else {
|
|
243
|
+
this.props.router.push({
|
|
244
|
+
pathname: `/sms/`,
|
|
245
|
+
query: type === 'embedded' ? {type: 'embedded', module} : {module},
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
226
250
|
setEditState(data) {
|
|
227
251
|
const that = this;
|
|
228
252
|
const tabCount = data.versions.history.length;
|
|
@@ -888,14 +912,14 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
888
912
|
obj.name = formData['template-name'];
|
|
889
913
|
obj.versions.base = formData.base;
|
|
890
914
|
|
|
891
|
-
this.props.actions.editTemplate(obj);
|
|
915
|
+
this.props.actions.editTemplate(obj, this.onUpdateTemplateComplete);
|
|
892
916
|
}
|
|
893
917
|
isSmsLoading = () => {
|
|
894
918
|
//let {isLoading} = this.props;
|
|
895
919
|
let isLoading = this.props.isLoadingMetaEntities || this.state.loading || (this.props.Edit && (("getTemplateDetailsInProgress" in this.props.Edit && this.props.Edit.getTemplateDetailsInProgress) || ("editTemplateInProgress" in this.props.Edit && this.props.Edit.editTemplateInProgress)));
|
|
896
920
|
|
|
897
921
|
if (!isLoading) {
|
|
898
|
-
isLoading = this.state.loadingStatus < 3;
|
|
922
|
+
isLoading = this.props.isFullMode ? this.state.loadingStatus < 2 : this.state.loadingStatus < 3;
|
|
899
923
|
}
|
|
900
924
|
// if (isLoading && this.state.loadingStatus >= 3) {
|
|
901
925
|
// this.props.creativesContainerActions.hideCreativesContanerLoader();
|
|
@@ -969,7 +993,9 @@ Edit.propTypes = {
|
|
|
969
993
|
supportedTags: PropTypes.array,
|
|
970
994
|
getDefaultTags: PropTypes.string,
|
|
971
995
|
isLoadingMetaEntities: PropTypes.bool,
|
|
972
|
-
creativesContainerActions: PropTypes.object,
|
|
996
|
+
// creativesContainerActions: PropTypes.object,
|
|
997
|
+
isFullMode: PropTypes.bool,
|
|
998
|
+
getFormSubscriptionData: PropTypes.func,
|
|
973
999
|
};
|
|
974
1000
|
|
|
975
1001
|
const mapStateToProps = createStructuredSelector({
|
|
@@ -8,15 +8,14 @@ import * as types from './constants';
|
|
|
8
8
|
export function* editTemplate(template) {
|
|
9
9
|
let errorMsg;
|
|
10
10
|
try {
|
|
11
|
-
console.log('saga editTemplate', template);
|
|
12
11
|
const result = yield call(Api.editTemplate, template);
|
|
13
|
-
console.log('saga editTemplate success', result);
|
|
14
12
|
// const sidebar = result.response.sidebar;
|
|
15
13
|
if (result.message || result.status.code === 500) {
|
|
16
14
|
errorMsg = result.message;
|
|
17
15
|
}
|
|
18
16
|
|
|
19
17
|
yield put({ type: types.EDIT_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
|
|
18
|
+
yield template.onUpdateTemplateComplete(result.response);
|
|
20
19
|
} catch (error) {
|
|
21
20
|
yield put({ type: types.EDIT_TEMPLATE_FAILURE, error, errorMsg });
|
|
22
21
|
}
|
|
@@ -24,7 +23,6 @@ export function* editTemplate(template) {
|
|
|
24
23
|
|
|
25
24
|
export function* getTemplateDetails(id) {
|
|
26
25
|
try {
|
|
27
|
-
console.log('saga get Template details', id);
|
|
28
26
|
const result = yield call(Api.getTemplateDetails, id);
|
|
29
27
|
// const sidebar = result.response.sidebar;
|
|
30
28
|
yield put({ type: types.GET_TEMPLATE_DETAILS_SUCCESS, data: result.response });
|
|
@@ -59,10 +59,12 @@
|
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
export function handleZipUpload(selectedFile) {
|
|
62
|
+
export function handleZipUpload(selectedFile, successHandler, errorHandler) {
|
|
63
63
|
return {
|
|
64
64
|
type: types.SEND_ZIPPED_FILE_REQUEST,
|
|
65
65
|
selectedFile,
|
|
66
|
+
successHandler,
|
|
67
|
+
errorHandler,
|
|
66
68
|
};
|
|
67
69
|
}
|
|
68
70
|
|