@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.
Files changed (91) hide show
  1. package/components/CmsTemplatesComponent/index.js +1 -0
  2. package/components/EmailMobilePreview/index.js +108 -0
  3. package/components/EmailMobilePreview/index.scss +66 -0
  4. package/components/FormBuilder/_formBuilder.scss +2 -14
  5. package/components/FormBuilder/index.js +106 -93
  6. package/components/Header/index.js +41 -0
  7. package/components/Header/messages.js +13 -0
  8. package/components/Header/tests/index.test.js +10 -0
  9. package/components/PreviewSideBar/index.js +7 -3
  10. package/components/TemplatePreview/index.js +6 -7
  11. package/config/app.js +2 -2
  12. package/containers/Cap/index.js +1 -1
  13. package/containers/Cap/selectors.js +11 -1
  14. package/containers/CreativesContainer/SlideBoxContent.js +5 -1
  15. package/containers/CreativesContainer/SlideBoxFooter.js +5 -9
  16. package/containers/CreativesContainer/index.js +59 -16
  17. package/containers/Email/actions.js +2 -3
  18. package/containers/Email/index.js +32 -26
  19. package/containers/Email/sagas.js +1 -0
  20. package/containers/EmailWrapper/index.js +43 -13
  21. package/containers/EmailWrapper/messages.js +8 -0
  22. package/containers/MobilePush/Create/index.js +1 -1
  23. package/containers/Sms/Create/actions.js +4 -4
  24. package/containers/Sms/Create/index.js +28 -17
  25. package/containers/Sms/Create/sagas.js +1 -2
  26. package/containers/Sms/Edit/actions.js +4 -5
  27. package/containers/Sms/Edit/index.js +31 -5
  28. package/containers/Sms/Edit/sagas.js +1 -3
  29. package/containers/Templates/actions.js +3 -1
  30. package/containers/Templates/index.js +219 -84
  31. package/containers/Templates/messages.js +8 -0
  32. package/containers/Templates/sagas.js +16 -4
  33. package/containers/Templates/selectors.js +2 -0
  34. package/containers/TemplatesV2/index.js +9 -4
  35. package/containers/TemplatesV2/reducer.js +34 -0
  36. package/containers/TemplatesV2/sagas.js +32 -0
  37. package/containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
  38. package/containers/WeChat/MapTemplates/actions.js +52 -0
  39. package/containers/WeChat/MapTemplates/constants.js +28 -0
  40. package/containers/WeChat/MapTemplates/index.js +1401 -0
  41. package/containers/WeChat/MapTemplates/messages.js +73 -0
  42. package/containers/WeChat/MapTemplates/reducer.js +74 -0
  43. package/containers/WeChat/MapTemplates/sagas.js +86 -0
  44. package/containers/WeChat/MapTemplates/selectors.js +25 -0
  45. package/containers/WeChat/MapTemplates/tests/actions.test.js +18 -0
  46. package/containers/WeChat/MapTemplates/tests/index.test.js +10 -0
  47. package/containers/WeChat/MapTemplates/tests/reducer.test.js +9 -0
  48. package/containers/WeChat/MapTemplates/tests/sagas.test.js +15 -0
  49. package/containers/WeChat/MapTemplates/tests/selectors.test.js +10 -0
  50. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +13 -0
  51. package/containers/WeChat/RichmediaTemplates/Create/actions.js +35 -0
  52. package/containers/WeChat/RichmediaTemplates/Create/constants.js +14 -0
  53. package/containers/WeChat/RichmediaTemplates/Create/index.js +679 -0
  54. package/containers/WeChat/RichmediaTemplates/Create/messages.js +13 -0
  55. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +49 -0
  56. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +44 -0
  57. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +32 -0
  58. package/containers/WeChat/RichmediaTemplates/Create/tests/actions.test.js +18 -0
  59. package/containers/WeChat/RichmediaTemplates/Create/tests/index.test.js +10 -0
  60. package/containers/WeChat/RichmediaTemplates/Create/tests/reducer.test.js +9 -0
  61. package/containers/WeChat/RichmediaTemplates/Create/tests/sagas.test.js +15 -0
  62. package/containers/WeChat/RichmediaTemplates/Create/tests/selectors.test.js +10 -0
  63. package/containers/WeChat/RichmediaTemplates/Create/testschema.js +379 -0
  64. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
  65. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
  66. package/containers/WeChat/RichmediaTemplates/Edit/index.js +98 -0
  67. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
  68. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
  69. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +32 -0
  70. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +25 -0
  71. package/containers/WeChat/RichmediaTemplates/Edit/tests/actions.test.js +18 -0
  72. package/containers/WeChat/RichmediaTemplates/Edit/tests/index.test.js +10 -0
  73. package/containers/WeChat/RichmediaTemplates/Edit/tests/reducer.test.js +9 -0
  74. package/containers/WeChat/RichmediaTemplates/Edit/tests/sagas.test.js +15 -0
  75. package/containers/WeChat/RichmediaTemplates/Edit/tests/selectors.test.js +10 -0
  76. package/containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
  77. package/containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
  78. package/containers/WeChat/RichmediaTemplates/View/index.js +45 -0
  79. package/containers/WeChat/RichmediaTemplates/View/messages.js +13 -0
  80. package/containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
  81. package/containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
  82. package/containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
  83. package/containers/WeChat/RichmediaTemplates/View/tests/actions.test.js +18 -0
  84. package/containers/WeChat/RichmediaTemplates/View/tests/index.test.js +10 -0
  85. package/containers/WeChat/RichmediaTemplates/View/tests/reducer.test.js +9 -0
  86. package/containers/WeChat/RichmediaTemplates/View/tests/sagas.test.js +15 -0
  87. package/containers/WeChat/RichmediaTemplates/View/tests/selectors.test.js +10 -0
  88. package/index.js +3 -3
  89. package/package.json +1 -1
  90. package/routes.js +53 -13
  91. 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 === "createTemplate" && !this.state.selectedCreateMode) {
60
- if (emailCreateMode === 'upload' && !EmailLayout) {
61
- this.handleFileUpload(modeContent.e, modeContent.files);
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.vale});
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
- document.getElementById("upload-email-template").value = "";
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
- document.getElementById("upload-email-template").value = "";
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.setState({modeContent: {e, files}}, this.props.showNextStep);
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 type="file" id="upload-email-template" style={{ display: 'none'}} accept=".zip, .html, .htm" onChange={(event) => this.useFileUpload(event, {files: event.target.files})} />
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, this.getMappedEvent(col.id, 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, template,
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, template,
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