@capillarytech/creatives-library 6.13.0 → 6.13.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/app.js CHANGED
@@ -25,6 +25,7 @@ import initialState from './initialState';
25
25
  import './styles/vendor/semantic/dist/semantic.min.css';
26
26
  import './styles/main.scss';
27
27
  import pathConfig from './config/path';
28
+ import ignoredErrorMessages from './utils/ignoredErrorMessages';
28
29
  // addLocaleData([...en, ...es, ...fr, ...it, ...zh]);
29
30
 
30
31
  const browserHistory = useRouterHistory(createHistory)({
@@ -38,10 +39,12 @@ const history = syncHistoryWithStore(browserHistory, store, {
38
39
  });
39
40
 
40
41
  const bugSnagErrorCallback = (event) => {
41
- const { app: { releaseStage } = {} } = event || {};
42
+ const { app: { releaseStage } = {}, error } = event || {};
43
+ const errorMessage = error && error.message;
42
44
  if (
43
45
  (releaseStage || '').includes('nightly') ||
44
- process.env.NODE_ENV !== 'production'
46
+ process.env.NODE_ENV !== 'production' ||
47
+ ignoredErrorMessages.include[errorMessage]
45
48
  ) {
46
49
  return false;
47
50
  }
@@ -204,7 +204,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
204
204
 
205
205
  if (!_.isEmpty(nextProps.formData) && !_.isEqual(this.state.formData, nextProps.formData)) {
206
206
  if (nextProps.isNewVersionFlow) {
207
- const tabKey = (this.state.tabKey !== nextProps.formData[nextProps.currentTab - 1].tabKey) ? nextProps.formData[nextProps.currentTab - 1].tabKey : this.state.tabKey;
207
+ const nextPropsFormData = nextProps.formData[nextProps.currentTab - 1];
208
+ const nextPropsTabKey = nextPropsFormData && nextPropsFormData.tabKey;
209
+ const tabKey = (this.state.tabKey !== nextPropsTabKey) ? nextPropsTabKey: this.state.tabKey;
208
210
 
209
211
  this.setState({tabKey});
210
212
  }
@@ -1841,7 +1843,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
1841
1843
  formData.base.tabKey = `${data}`;
1842
1844
  }
1843
1845
 
1844
- that.setState({formData, currentLangTab: formData[(this.state.currentTab - 1)].activeTab, tabKey: formData[(this.state.currentTab - 1)][formData[(this.state.currentTab - 1)].activeTab].tabKey}, () => {
1846
+ const formDataActiveKey = formData[(this.state.currentTab - 1)][formData[(this.state.currentTab - 1)].activeTab];
1847
+ const formDataTabKey = formDataActiveKey && formDataActiveKey.tabKey;
1848
+ that.setState({formData, currentLangTab: formData[(this.state.currentTab - 1)].activeTab, tabKey: formDataTabKey}, () => {
1845
1849
  val.injectedEvents[event].call(that.props.parent, this.state.currentTab, formData);
1846
1850
  });
1847
1851
  } else {
@@ -908,6 +908,9 @@ export class Ebill extends React.Component { // eslint-disable-line react/prefer
908
908
  injectEvents(schema) {
909
909
  console.log('now injecting events', schema);
910
910
  const temp = schema;
911
+ if (!temp.standalone) {
912
+ temp.standalone = {};
913
+ }
911
914
  temp.standalone.sections = this.injectSections(temp.standalone.sections);
912
915
  _.forEach(temp.containers, (container) => {
913
916
  let tempContainer = container;
@@ -1155,8 +1155,11 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1155
1155
  const msgString = JSON.stringify(msg);
1156
1156
  const langId = formData[this.state.currentTab - 1].activeTab;
1157
1157
  const langIndex = formData[this.state.currentTab - 1].selectedLanguages.indexOf(langId);
1158
- const win = document.getElementById(`edmeditor${(langIndex + 1) > 1 ? (langIndex + 1) : ''}`).contentWindow;
1159
- win.postMessage(msgString, '*');
1158
+ const elementToSelect = document.getElementById(`edmeditor${(langIndex + 1) > 1 ? (langIndex + 1) : ''}`);
1159
+ if (elementToSelect) {
1160
+ const win = elementToSelect.contentWindow;
1161
+ win.postMessage(msgString, '*');
1162
+ }
1160
1163
  } else {
1161
1164
  console.log('tag', this.state, this.state.editorInstanse);
1162
1165
  if (this.state.editorInstanse) {
@@ -1415,7 +1418,8 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1415
1418
 
1416
1419
  getMappedEvent = (id, event) => {
1417
1420
  console.log('Map ', this.map, id, event);
1418
- return this.map[id][event];
1421
+ const mapIdObject = this.map[id];
1422
+ return mapIdObject && mapIdObject[event] ? mapIdObject[event] : () => {};
1419
1423
  }
1420
1424
 
1421
1425
  getCurrentWindow = (e) => {
@@ -1511,8 +1515,11 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1511
1515
  _.forEach(data.selectedLanguages, (language, langIndex) => {
1512
1516
  if (data[language].is_drag_drop) {
1513
1517
  console.log('saving edm template', document.getElementById("edmeditor"), `edmeditor${(langIndex + 1) > 1 ? (langIndex + 1) : ''}`);
1514
- const win = document.getElementById(`edmeditor${(langIndex + 1) > 1 ? (langIndex + 1) : ''}`).contentWindow;
1515
- win.postMessage("saveProject", '*');
1518
+ const elementToSelect = document.getElementById(`edmeditor${(langIndex + 1) > 1 ? (langIndex + 1) : ''}`);
1519
+ if (elementToSelect) {
1520
+ const win = elementToSelect.contentWindow;
1521
+ win.postMessage("saveProject", '*');
1522
+ }
1516
1523
  }
1517
1524
  });
1518
1525
  });
@@ -2501,7 +2508,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2501
2508
  const tempEl = containerInputFieldCol;
2502
2509
  if (containerInputFieldCol.id === "tab-header") {
2503
2510
  const baseLanguage = this.props.Global.currentOrgDetails && this.props.Global.currentOrgDetails.basic_details && this.props.Global.currentOrgDetails.basic_details.base_language && this.props.Global.currentOrgDetails.basic_details.base_language !== "" ? this.props.Global.currentOrgDetails.basic_details.base_language : 'en';
2504
- const supportedLanguages = this.props.Global.currentOrgDetails.basic_details.supported_languages;
2511
+ const supportedLanguages = this.props.Global.currentOrgDetails && this.props.Global.currentOrgDetails.basic_details && this.props.Global.currentOrgDetails.basic_details.supported_languages;
2505
2512
  if (!supportedLanguages) {
2506
2513
  tempEl.value = baseLanguage || 'English';
2507
2514
  return;
@@ -2655,12 +2662,13 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2655
2662
  if (languageIndex === -1) {
2656
2663
  languageIndex = 0;
2657
2664
  }
2665
+ const dataBase = data.base;
2658
2666
  const tempData = {
2659
- "is_drag_drop": data.base.is_drag_drop,
2667
+ "is_drag_drop": dataBase && dataBase.is_drag_drop,
2660
2668
  "lang_id": this.supportedLanguages[languageIndex].lang_id,
2661
2669
  "iso_code": this.supportedLanguages[languageIndex].iso_code,
2662
2670
  "language": this.supportedLanguages[languageIndex].language,
2663
- "template-content": !data.base.is_drag_drop && data.base.is_drag_drop !== 1 ? data.base.html_content : "",
2671
+ "template-content": dataBase && !dataBase.is_drag_drop && dataBase.is_drag_drop !== 1 ? dataBase.html_content : "",
2664
2672
  };
2665
2673
  formData[0].base = true;
2666
2674
  formData[0].selectedLanguages.push(this.supportedLanguages[languageIndex].iso_code);
@@ -297,7 +297,8 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
297
297
  onTabChange: this.onTabChange,
298
298
  },
299
299
  };
300
- return map[id][event];
300
+ const mappedIdObject = map[id];
301
+ return mappedIdObject && mappedIdObject[event] ? mappedIdObject[event] : () => {};
301
302
  }
302
303
 
303
304
  setFormValidity(isFormValid) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "6.13.0",
4
+ "version": "6.13.2",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",
@@ -15,7 +15,7 @@
15
15
  "@babel/polyfill": "7.4.3",
16
16
  "@bugsnag/js": "^7.2.1",
17
17
  "@bugsnag/plugin-react": "^7.2.1",
18
- "@capillarytech/cap-ui-utils": "1.3.2",
18
+ "@capillarytech/cap-ui-utils": "1.3.3",
19
19
  "@mailupinc/bee-plugin": "^1.2.0",
20
20
  "babel-cli": "^6.26.0",
21
21
  "chalk": "1.1.3",
package/services/api.js CHANGED
@@ -319,12 +319,11 @@ export const getCmsTemplateSettings = (cmsType, projectId, cmsMode, langId, isEd
319
319
  return API.get(url);
320
320
  };
321
321
 
322
- export const getCmsTemplateSettingsV2 = (cmsType, projectId, cmsMode, langId, isEdmSupport) => {
323
- const url = `${API_ENDPOINT}/cms/v2/getDetails/?type=${cmsType}&projectId=${projectId}&cmsMode=${cmsMode}&langId=${langId}&isEdmSupport=${isEdmSupport ? 1 : 0}`;
322
+ export const getCmsTemplateSettingsV2 = (cmsType, projectId, cmsMode, langId, isEdmSupport, isBEEAppEnable) => {
323
+ const url = `${API_ENDPOINT}/cms/v2/getDetails/?type=${cmsType}&projectId=${projectId}&cmsMode=${cmsMode}&langId=${langId}&isEdmSupport=${isEdmSupport ? 1 : 0}&isBEEAppEnable=${isBEEAppEnable}`;
324
324
  return API.get(url);
325
325
  };
326
326
 
327
-
328
327
  export const getCmsTemplateData = (cmsType, projectId, langId) => {
329
328
  const url = `${API_ENDPOINT}/cms/getContent?type=${cmsType}&projectId=${projectId}&langId=${langId}`;
330
329
  return API.get(url);
@@ -0,0 +1,4 @@
1
+ export default [
2
+ // ref: https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded
3
+ 'ResizeObserver loop limit exceeded'
4
+ ];
@@ -1470,10 +1470,6 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
1470
1470
  } else if (key === this.props.baseLanguage) {
1471
1471
  formData[newTabIndex][key] = {};
1472
1472
  _.forEach(val, (subVal, index) => {
1473
- // if (subVal === 'is_drag_drop' || subVal === 'lang_id' || subVal === 'iso_code' === 'language') {
1474
- //
1475
- // formData[newTabIndex][key][index] = formData[0][this.props.baseLanguage][subVal];
1476
- // } else {
1477
1473
  if (index === 'tabKey') {
1478
1474
  formData[newTabIndex][key][index] = _.uniqueId();
1479
1475
  } else if (index === 'template-content') {
@@ -2366,7 +2362,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2366
2362
  this.renderTextAreaContent(styling, columns, val, isVersionEnable, rows, cols, val.offset);
2367
2363
  break;
2368
2364
  case "contentPreview":
2369
- content = isVersionEnable ? this.state.formData[this.state.currentTab - 1]['sms-editor'] : this.state.formData['sms-editor'];
2365
+ const { formData , currentTab } = this.state || {};
2366
+ const tab = formData && formData[currentTab - 1];
2367
+ content = isVersionEnable ? tab && tab['sms-editor'] : formData && formData['sms-editor'];
2370
2368
  charList = updateCharCount(content).char_list;
2371
2369
  columns.push(<CapColumn id={val.id} className={"preview-chars"} span={val.width}>
2372
2370
  {charList.map((char) => char)}
@@ -3179,11 +3177,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3179
3177
  }
3180
3178
  console.log('CKEditor Data 2', this.state.formData, this.state.formData[`${this.state.currentTab - 1}`], val, this.state.currentTab, this.state.currentLangTab, langIndex);
3181
3179
  const currentLang = ((!_.isEmpty(this.state.formData) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`]) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages) && this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex]) ? this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex] : this.props.baseLanguage) || 'en';
3182
- const content = (!_.isEmpty(this.state.formData) && this.state.formData[`${this.state.currentTab - 1}`][currentLang]['template-content'] ? this.state.formData[`${this.state.currentTab - 1}`][currentLang]['template-content'] : '');
3183
- console.log('ckeditor current lang', currentLang, content);
3184
- if (this.state.formData[`${this.state.currentTab - 1}`][currentLang].is_drag_drop) {
3185
- // content = "";
3186
- }
3180
+ const content = (!_.isEmpty(this.state.formData) && this.state.formData[`${this.state.currentTab - 1}`] && this.state.formData[`${this.state.currentTab - 1}`][currentLang] && this.state.formData[`${this.state.currentTab - 1}`][currentLang]['template-content'] || '');
3187
3181
  columns.push(
3188
3182
  <CapColumn style={val.colStyle ? val.colStyle : {}} span={val.width}>
3189
3183
  <CKEditor
@@ -3206,7 +3200,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3206
3200
  }
3207
3201
  }
3208
3202
  const { currentTab, formData } = this.state;
3209
- const supportedLanguages = formData[currentTab - 1].selectedLanguages;
3203
+ const supportedLanguages = (formData[currentTab - 1] || {}).selectedLanguages || {};
3210
3204
  const currentLang = supportedLanguages[langTab - 1];
3211
3205
 
3212
3206
  let beeJson = '',
@@ -33,7 +33,7 @@ import './_cap.scss';
33
33
  const gtm = window.dataLayer || [];
34
34
  const {
35
35
  logNewTab,
36
- getOrgNameFromId,
36
+ utilsGetOrgNameFromId,
37
37
  tabBeforeUnloadEventHandler,
38
38
  utilsHandleStorageChange,
39
39
  isMultipleTabsOpen,
@@ -297,18 +297,36 @@ export class Cap extends React.Component { // eslint-disable-line react/prefer-s
297
297
  }
298
298
  };
299
299
 
300
+ getOrgNameFromId = orgId => {
301
+ const {
302
+ Global: {
303
+ user: {
304
+ proxyOrgList,
305
+ orgName: defaultOrgName,
306
+ orgID: defaultOrgID,
307
+ } = {},
308
+ } = {},
309
+ } = this.props;
310
+ return utilsGetOrgNameFromId(
311
+ orgId,
312
+ proxyOrgList,
313
+ defaultOrgID,
314
+ defaultOrgName,
315
+ );
316
+ };
317
+
300
318
  renderOrgRefreshModal = () => {
301
319
  const {
302
320
  localStorageOrgInfo: { oldValue: oldOrgId, newValue: newOrgId } = {},
303
321
  showRefreshModal,
304
322
  refreshSeconds,
305
323
  } = this.state;
306
- const {
307
- Global: { user: { proxyOrgList } = {} } = {},
308
- intl: { formatMessage } = {},
309
- } = this.props;
310
- const oldOrgName = getOrgNameFromId(Number(oldOrgId), proxyOrgList);
311
- const newOrgName = getOrgNameFromId(Number(newOrgId), proxyOrgList);
324
+ const { intl: { formatMessage } = {} } = this.props;
325
+ const oldOrgName = this.getOrgNameFromId(Number(oldOrgId));
326
+ const newOrgName = this.getOrgNameFromId(Number(newOrgId));
327
+ // some users do not have entry for their default org in proxyOrgList.
328
+ // getOrgNameFromId returns back orgID if no matching entry is present in proxyOrgList
329
+ // so replacing with defaultOrgName if defaultOrgID is returned
312
330
  const modalData = (
313
331
  <CapModal
314
332
  title={formatMessage(messages.orgRefreshHeading)}
@@ -339,12 +357,15 @@ export class Cap extends React.Component { // eslint-disable-line react/prefer-s
339
357
  renderOrgChangeModal = () => {
340
358
  const { selectedOrgId, showOrgChangeModal } = this.state;
341
359
  const {
342
- Global: { user: { proxyOrgList } = {},
360
+ Global: {
343
361
  currentOrgDetails: { basic_details: { name: oldOrgName } = {} } = {},
344
362
  },
345
363
  intl: { formatMessage } = {},
346
364
  } = this.props;
347
- const newOrgName = getOrgNameFromId(selectedOrgId, proxyOrgList);
365
+ const newOrgName = this.getOrgNameFromId(selectedOrgId);
366
+ // some users do not have entry for their default org in proxyOrgList.
367
+ // getOrgNameFromId returns back orgID if no matching entry is present in proxyOrgList
368
+ // so replacing with defaultOrgName if defaultOrgID is returned
348
369
  return (
349
370
  <CapModal
350
371
  className="change-org-confirm"
@@ -69,7 +69,7 @@ const getLineType = ({
69
69
  }
70
70
  }
71
71
  return {};
72
- }
72
+ };
73
73
 
74
74
  function SlideBoxContent(props) {
75
75
  const {
@@ -96,6 +96,7 @@ function SlideBoxContent(props) {
96
96
  cap,
97
97
  onResetStep,
98
98
  isFullMode,
99
+ editor,
99
100
  onCallTaskSubmit,
100
101
  setIsLoadingContent,
101
102
  showTemplateName,
@@ -184,7 +185,7 @@ function SlideBoxContent(props) {
184
185
  } = {},
185
186
  template,
186
187
  }) => {
187
- let previewContent = {};
188
+ const previewContent = {};
188
189
  previewContent.messageContent = text;
189
190
  previewContent.previewImageUrl = previewImageUrl;
190
191
  previewContent.selectedSticker = selectedSticker || {
@@ -366,6 +367,7 @@ function SlideBoxContent(props) {
366
367
  step={templateStep}
367
368
  showNextStep={onCreateNextStep}
368
369
  isFullMode={isFullMode}
370
+ editor={editor}
369
371
  cap={cap}
370
372
  onResetStep={onResetStep}
371
373
  showTemplateName={showTemplateName}
@@ -392,6 +394,7 @@ function SlideBoxContent(props) {
392
394
  getFormSubscriptionData={getFormData}
393
395
  getDefaultTags={type}
394
396
  isFullMode={isFullMode}
397
+ editor={editor}
395
398
  cap={cap}
396
399
  showTemplateName={showTemplateName}
397
400
  onValidationFail={onValidationFail}
@@ -456,6 +459,7 @@ function SlideBoxContent(props) {
456
459
  messageDetails={messageDetails}
457
460
  cap={cap}
458
461
  onFacebookSubmit={onFacebookSubmit}
462
+ isFullMode={isFullMode}
459
463
  />
460
464
  )
461
465
  }
@@ -533,7 +533,7 @@ class Creatives extends React.Component {
533
533
  }
534
534
  render() {
535
535
  const {slidBoxContent, isGetFormData, showSlideBox, templateData, currentChannel, emailCreateMode, templateStep, isLoadingContent, mobilePushCreateMode, isDiscardMessage, weChatTemplateType, weChatMaptemplateStep} = this.state;
536
- const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, onTestContentClicked, onPreviewContentClicked, getCreativesData, fetchingCmsData} = this.props;
536
+ const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, onTestContentClicked, onPreviewContentClicked, getCreativesData, fetchingCmsData, editor} = this.props;
537
537
  const mapTemplateCreate = slidBoxContent === 'createTemplate' && weChatTemplateType === MAP_TEMPLATE && templateStep !== 'modeSelection';
538
538
  /* TODO: Instead of passing down same props separately to each component down, write common function to these props and pass it accordingly */
539
539
  return (
@@ -606,6 +606,7 @@ class Creatives extends React.Component {
606
606
  selectedAccount={this.props.selectedAccount}
607
607
  onShowTemplates={this.onShowTemplates}
608
608
  handleClose={this.handleCloseSlideBox}
609
+ editor={editor}
609
610
  />
610
611
  }
611
612
  footer={this.shouldShowFooter() &&
@@ -38,7 +38,7 @@ export function getAllAssets(assetType, queryParams) {
38
38
  };
39
39
  }
40
40
 
41
- export function getCmsSetting(cmsType, projectId, cmsMode, langId, isEdmSupport) {
41
+ export function getCmsSetting(cmsType, projectId, cmsMode, langId, isEdmSupport, isBEEAppEnable) {
42
42
  return {
43
43
  type: types.GET_CMS_EDITOR_DETAILS_REQUEST,
44
44
  cmsType,
@@ -46,6 +46,7 @@ export function getCmsSetting(cmsType, projectId, cmsMode, langId, isEdmSupport)
46
46
  cmsMode,
47
47
  langId,
48
48
  isEdmSupport,
49
+ isBEEAppEnable,
49
50
  };
50
51
  }
51
52
 
@@ -183,15 +183,15 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
183
183
  this.props.templatesActions.resetTemplateData();
184
184
  }
185
185
  const isBEESupport = (this.props.location.query.isBEESupport !== "false") || false;
186
-
187
- if (!_.isEmpty(this.props.Templates.BEETemplate) ) {
188
- if (this.props.Templates.BEETemplate.versions.base.is_drag_drop) {
186
+ const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary();
187
+ if (!_.isEmpty(this.props.Templates.BEETemplate)) {
188
+ if (this.props.Templates.BEETemplate.versions.base.is_drag_drop && isBEEAppEnable ) {
189
189
  this.setState({isDragDrop: true});
190
190
  }
191
191
  if (this.props.params.id) {
192
- this.props.actions.getCmsSetting(BEE_PLUGIN, this.props.Templates.BEETemplate._id, 'open', undefined, isBEESupport);
192
+ this.props.actions.getCmsSetting(BEE_PLUGIN, this.props.Templates.BEETemplate._id, 'open', undefined, isBEESupport, isBEEAppEnable);
193
193
  } else if (this.props.location.query.module !== "library" || (this.props.location.query.module === "library" && !this.props.templateData)) {
194
- this.props.actions.getCmsSetting(BEE_PLUGIN, this.props.Templates.BEETemplate._id, 'create', undefined, isBEESupport);
194
+ this.props.actions.getCmsSetting(BEE_PLUGIN, this.props.Templates.BEETemplate._id, 'create', undefined, isBEESupport, isBEEAppEnable);
195
195
  }
196
196
  }
197
197
  this.setState({ content: (this.props.Templates.selectedEmailLayout ? this.props.Templates.selectedEmailLayout : ''), formData});
@@ -214,6 +214,15 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
214
214
  this.showNext();
215
215
  }
216
216
  }
217
+
218
+ checkBeeEditorAllowedForLibrary = () => {
219
+ const { isFullMode = false, editor } = this.props || {};
220
+ if (editor === "BEE" && !isFullMode) {
221
+ return true;
222
+ }
223
+ return false;
224
+ }
225
+
217
226
  componentWillReceiveProps(nextProps) {
218
227
  // if (this.props.location.query.type === 'embedded') {
219
228
  // this.showNext();
@@ -315,8 +324,9 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
315
324
  if (nextProps.location.query.module === 'library' && nextProps.isGetFormData) {
316
325
  const formData = this.state.formData;
317
326
  let isBeeEditor = false;
327
+ const isBEEEnable = this.checkBeeEditorAllowedForLibrary();
318
328
  _.forEach(formData[0].selectedLanguages, (language) => {
319
- if (formData[0][language].is_drag_drop) {
329
+ if (formData[0][language].is_drag_drop && isBEEEnable) {
320
330
  isBeeEditor = true;
321
331
  }
322
332
  });
@@ -349,7 +359,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
349
359
  const temp = (schema.containers || {})[this.state.currentTab - 1];
350
360
 
351
361
  const { currentTab } = this.state;
352
- if (nextProps.Email.CmsSettings.isDragDrop) {
362
+ if (nextProps.Email.CmsSettings.isDragDrop && this.checkBeeEditorAllowedForLibrary()) {
353
363
  const beeJson = `BEEeditor${currentTab > 1 ? currentTab : ''}json`;
354
364
  const beeToken = `BEEeditor${currentTab > 1 ? currentTab : ''}token`;
355
365
  let beeJsonValue = _.get(nextProps, 'Templates.BEETemplate.versions.base.json-content', '');
@@ -409,7 +419,8 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
409
419
  }
410
420
 
411
421
  this.setState({ formData }, () => {
412
- this.hideEdmOptions(nextProps.Email.CmsSettings.isDragDrop);
422
+ const isDragDrop = this.checkBeeEditorAllowedForLibrary() && nextProps.Email.CmsSettings.isDragDrop;
423
+ this.hideEdmOptions(isDragDrop);
413
424
  });
414
425
  }
415
426
  if (nextProps.Email.createTemplateError && !_.isEqual(nextProps.Email.createTemplateError, this.props.Email.createTemplateError)) {
@@ -469,7 +480,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
469
480
  if ( !_.isEqual(nextProps.Email.uploadAssetSuccess, this.props.Email.uploadAssetSuccess) && nextProps.Email.uploadAssetSuccess) {
470
481
  const isDragDrop = this.state.formData[`${this.state.currentTab - 1}`][this.state.formData[`${this.state.currentTab - 1}`].activeTab].is_drag_drop;
471
482
  const isBEESupport = (this.props.location.query.isBEESupport !== "false") || false;
472
- if (isDragDrop && isBEESupport) {
483
+ if (isDragDrop && isBEESupport && this.checkBeeEditorAllowedForLibrary()) {
473
484
  const evtData = JSON.parse(this.edmEvent.data);
474
485
  if (evtData.action === 'editBackground') {
475
486
  this.edmEvent.source.postMessage(JSON.stringify({
@@ -516,7 +527,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
516
527
  if (!_.isEmpty(nextProps.Email.templateDetails) && _.isEmpty(this.props.Email.templateDetails) ) {
517
528
  const base = nextProps.Email.templateDetails.versions.base;
518
529
  const activeBase = nextProps.Email.templateDetails.versions.base[base.activeTab];
519
- if (activeBase && activeBase.is_drag_drop) {
530
+ if (activeBase && activeBase.is_drag_drop && this.checkBeeEditorAllowedForLibrary()) {
520
531
  this.setState({isDragDrop: true});
521
532
  }
522
533
  }
@@ -581,7 +592,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
581
592
  //this.resetCkEditorInstance(data, formData);
582
593
  const schema = _.cloneDeep(this.state.schema);
583
594
  const container = schema.containers[`${data - 1}`];
584
- if (formData[`${data - 1}`][formData[`${data - 1}`].activeTab].is_drag_drop) {
595
+ if (formData[`${data - 1}`][formData[`${data - 1}`].activeTab].is_drag_drop && this.checkBeeEditorAllowedForLibrary()) {
585
596
  container.tabBarExtraContent.sections[0].inputFields[0].cols[4].content.sections[0].inputFields[3].cols[0].style = {display: ""};
586
597
  container.tabBarExtraContent.sections[0].inputFields[0].cols[2].style.display = "none";
587
598
  } else {
@@ -606,7 +617,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
606
617
  const formData = _.cloneDeep(this.state.formData);
607
618
  const isBEESupport = (this.props.location.query.isBEESupport !== "false") || false;
608
619
 
609
- if (isDragDrop && isBEESupport) {
620
+ if (isDragDrop && isBEESupport && this.checkBeeEditorAllowedForLibrary()) {
610
621
  let msg = {};
611
622
  if (data === "unsubscribe") {
612
623
  const anchor = `<a href='{{${data}}}'>${data}</a>`;
@@ -649,9 +660,9 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
649
660
  const base = formData.base || {};
650
661
  const isDragDrop = _.get(base[base.activeTab], 'is_drag_drop');
651
662
  let editorType = '';
652
- if ( isDragDrop === true) {
663
+ if ( isDragDrop === true && this.checkBeeEditorAllowedForLibrary()) {
653
664
  editorType = 'edmEditor';
654
- } else if (isDragDrop === false) {
665
+ } else if (isDragDrop === false && !this.checkBeeEditorAllowedForLibrary()) {
655
666
  editorType = 'ckEditor';
656
667
  }
657
668
  GA.timeTracker.stopTimer(isEdit ? TRACK_EDIT_EMAIL : TRACK_CREATE_EMAIL, {
@@ -706,7 +717,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
706
717
  _.forEach(formData, (val, index) => {
707
718
  if (!isNaN(index)) {
708
719
  _.forEach(val.selectedLanguages, (language) => {
709
- if (val[language].is_drag_drop) {
720
+ if (val[language].is_drag_drop && this.checkBeeEditorAllowedForLibrary()) {
710
721
  that.props.actions.getCmsData(BEE_PLUGIN, id, language);
711
722
  }
712
723
  });
@@ -907,6 +918,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
907
918
  if (this.props.isFullMode) {
908
919
  this.props.showTemplateName({formData, onFormDataChange: this.onFormDataChange});
909
920
  }
921
+ const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary();
910
922
  _.forEach((editData.versions.base.selectedLanguages), (language) => {
911
923
  // if (formData[this.state.currentTab - 1].tabKey === formData[this.state.currentTab - 1][language].tabKey) {
912
924
  // formData[this.state.currentTab - 1].activeTab = language;
@@ -914,8 +926,8 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
914
926
  // if (formData.base.tabKey === formData.base[language].tabKey) {
915
927
  // formData.base.activeTab = language;
916
928
  // }
917
- if (language && editData.versions.base[language].is_drag_drop) {
918
- this.props.actions.getCmsSetting(BEE_PLUGIN, editData._id, 'open', language, isBEESupport);
929
+ if (language && editData.versions.base[language].is_drag_drop && isBEEAppEnable) {
930
+ this.props.actions.getCmsSetting(BEE_PLUGIN, editData._id, 'open', language, isBEESupport, isBEEAppEnable);
919
931
  }
920
932
  });
921
933
 
@@ -998,11 +1010,12 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
998
1010
  }
999
1011
  saveValidationData = () => {
1000
1012
  let saveCount = 0;
1013
+ const isBeeEnable = this.checkBeeEditorAllowedForLibrary();
1001
1014
  this.setState({saveEdmDataMode: 'validation', saveCount: 0, cmsDataCount: 0}, () => {
1002
1015
  _.forEach(this.state.formData, (newdata, index) => {
1003
1016
  if (!isNaN(index)) {
1004
1017
  _.forEach(newdata.selectedLanguages, (language) => {
1005
- if (newdata[language].is_drag_drop && ((parseInt(index, 10) + 1) === this.state.currentTab)) {
1018
+ if (newdata[language].is_drag_drop && isBeeEnable && ((parseInt(index, 10) + 1) === this.state.currentTab)) {
1006
1019
  saveCount += 1;
1007
1020
  }
1008
1021
  });
@@ -1119,14 +1132,14 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1119
1132
 
1120
1133
  copyPrimaryLanguage = () => {
1121
1134
  const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
1122
-
1135
+ const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary();
1123
1136
  this.setState({addLanguageType: "copyPrimaryLanguage"}, () => {
1124
1137
  this.setState({showModal: false});
1125
1138
  const formData = _.cloneDeep(this.state.formData);
1126
1139
  const currentTab = this.state.currentTab - 1;
1127
1140
  const baseLanguage = this.props.currentOrgDetails.basic_details.base_language ? this.props.currentOrgDetails.basic_details.base_language : 'en';
1128
- if (formData[currentTab][baseLanguage].is_drag_drop) {
1129
- this.props.actions.getCmsSetting(BEE_PLUGIN, formData[currentTab][baseLanguage].drag_drop_id, 'duplicate', baseLanguage, isEdmSupport);
1141
+ if (formData[currentTab][baseLanguage].is_drag_drop && isBEEAppEnable) {
1142
+ this.props.actions.getCmsSetting(BEE_PLUGIN, formData[currentTab][baseLanguage].drag_drop_id, 'duplicate', baseLanguage, isEdmSupport, isBEEAppEnable);
1130
1143
  }
1131
1144
  });
1132
1145
  }
@@ -1504,7 +1517,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1504
1517
  const data = _.find(this.props.Email.assetList, {_id: id});
1505
1518
 
1506
1519
  if (data) {
1507
- if (isDragDrop && isEdmSupport) {
1520
+ if (isDragDrop && isEdmSupport && this.checkBeeEditorAllowedForLibrary()) {
1508
1521
  const evtData = JSON.parse(this.edmEvent.data);
1509
1522
  if (evtData.action === 'editBackground') {
1510
1523
  this.edmEvent.source.postMessage(JSON.stringify({
@@ -1539,7 +1552,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
1539
1552
 
1540
1553
  toggleEmailPreview = () => {
1541
1554
  const isDragDrop = this.state.formData[`${this.state.currentTab - 1}`][this.state.formData[`${this.state.currentTab - 1}`].activeTab].is_drag_drop;
1542
- if (isDragDrop && !this.state.showEmailPreview) {
1555
+ if (isDragDrop && !this.state.showEmailPreview && this.checkBeeEditorAllowedForLibrary()) {
1543
1556
  this.handleEdmSave();
1544
1557
  this.setState({mode: "preview", gettingPreviewData: true});
1545
1558
  } else if (this.state.showEmailPreview) {
@@ -2118,9 +2131,10 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2118
2131
  "language": this.supportedLanguages[languageIndex].language,
2119
2132
  "template-content": templates.html_content,
2120
2133
  };
2121
- if (templates.drag_drop_id) {
2134
+ const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary();
2135
+ if (templates.drag_drop_id && isBEEAppEnable) {
2122
2136
  tempData.drag_drop_id = templates.drag_drop_id;
2123
- this.props.actions.getCmsSetting(BEE_PLUGIN, tempData._id, 'open', tempData.iso_code, isEdmSupport);
2137
+ this.props.actions.getCmsSetting(BEE_PLUGIN, tempData._id, 'open', tempData.iso_code, isEdmSupport, isBEEAppEnable);
2124
2138
  }
2125
2139
  // formData.usingTabContainer = true;
2126
2140
  // formData.tabCount = 1;
@@ -2144,9 +2158,10 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2144
2158
 
2145
2159
  this.setState({formData, loading: false, injectedTags: data.tags, tabKey, isDragDrop: (data.base.is_drag_drop !== 0 )}, () => {
2146
2160
  // this.setState({tabKey: ''});
2161
+ const isBEEEnable = this.checkBeeEditorAllowedForLibrary();
2147
2162
  _.forEach(formData[0].selectedLanguages, (language) => {
2148
- if (formData[0][language].is_drag_drop) {
2149
- this.props.actions.getCmsSetting(BEE_PLUGIN, formData[0][language].drag_drop_id, 'open', language, isEdmSupport);
2163
+ if (formData[0][language].is_drag_drop && isBEEEnable) {
2164
+ this.props.actions.getCmsSetting(BEE_PLUGIN, formData[0][language].drag_drop_id, 'open', language, isEdmSupport, isBEEEnable);
2150
2165
  }
2151
2166
  });
2152
2167
  });
@@ -2483,8 +2498,8 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
2483
2498
  // const isEdmSupport = (this.props.location.query.isEdmSupport) ? this.props.location.query.isEdmSupport : true;
2484
2499
  // let getQuery = '';
2485
2500
  const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
2486
-
2487
- this.props.actions.getCmsSetting(BEE_PLUGIN, data._id, 'create', this.state.formData[this.state.currentTab - 1].activeTab, isEdmSupport);
2501
+ const isBEEAppEnable = this.checkBeeEditorAllowedForLibrary();
2502
+ this.props.actions.getCmsSetting(BEE_PLUGIN, data._id, 'create', this.state.formData[this.state.currentTab - 1].activeTab, isEdmSupport, isBEEAppEnable);
2488
2503
  // this.props.templatesActions.setEdmTemplate(data);
2489
2504
  this.toggleEdmEmailTemplateSelection();
2490
2505
  // if (type && type.toLowerCase() === 'email') {
@@ -51,9 +51,9 @@ export function* getAllAssets(assetType, queryParams) {
51
51
  }
52
52
  }
53
53
 
54
- export function* getCmsSetting({cmsType, projectId, cmsMode, langId, isEdmSupport}) {
54
+ export function* getCmsSetting({cmsType, projectId, cmsMode, langId, isEdmSupport, isBEEAppEnable}) {
55
55
  try {
56
- const result = yield call(Api.getCmsTemplateSettingsV2, cmsType, projectId, cmsMode, langId, isEdmSupport);
56
+ const result = yield call(Api.getCmsTemplateSettingsV2, cmsType, projectId, cmsMode, langId, isEdmSupport, isBEEAppEnable);
57
57
 
58
58
  yield put({ type: types.GET_CMS_EDITOR_DETAILS_SUCCESS, settings: result.data.response.cmsDetails });
59
59
  } catch (error) {
@@ -196,6 +196,7 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
196
196
  onPreviewContentClicked,
197
197
  onTestContentClicked,
198
198
  cmsTemplatesLoader,
199
+ editor,
199
200
  } = this.props;
200
201
  const {
201
202
  templateName,
@@ -259,6 +260,7 @@ export class EmailWrapper extends React.Component { // eslint-disable-line react
259
260
  selectedOfferDetails={selectedOfferDetails}
260
261
  onPreviewContentClicked={onPreviewContentClicked}
261
262
  onTestContentClicked={onTestContentClicked}
263
+ editor={editor}
262
264
  />}
263
265
  {!isShowEmailCreate && (
264
266
  <CmsTemplatesComponent
@@ -52,6 +52,7 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
52
52
  //'wechat': {content: this.getTemplatesComponent('wechat'), tab: 'Wechat', key: 'wechat'},
53
53
  mPush: {content: <></>, tab: intl.formatMessage(messages.pushNotification), key: 'mobilepush'},
54
54
  line: {content: <></>, tab: intl.formatMessage(messages.line), key: 'line'},
55
+
55
56
  };
56
57
  let filteredPanes = Object.keys(defaultPanes)
57
58
  .filter((key) => !channelsToHide.includes(key)).reduce((obj = [], key) => {
@@ -152,14 +153,12 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
152
153
  );
153
154
  }
154
155
 
155
- getLineComponent = () => {
156
- return (
157
- <Line
158
- {...this.props}
159
- isCreateFlow
156
+ getLineComponent = () => (
157
+ <Line
158
+ {...this.props}
159
+ isCreateFlow
160
160
  />
161
161
  )
162
- }
163
162
 
164
163
  getTemplatesComponent(channel) {
165
164
  // const templates = this.props.Templates[`${channel}Templates`];
@@ -876,7 +876,7 @@ export class MapTemplates extends React.Component { // eslint-disable-line react
876
876
  }
877
877
 
878
878
  getMappedEvent(id, event) {
879
- return this.state.map[id][event];
879
+ return (this.state.map[id] && this.state.map[id][event] ? this.state.map[id][event] : () => {});
880
880
  }
881
881
 
882
882
  handleOnTagsContextChange = (data) => {