@capillarytech/creatives-library 7.6.1 → 7.6.3

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 (37) hide show
  1. package/config/app.js +2 -0
  2. package/index.js +6 -0
  3. package/package.json +1 -1
  4. package/reducers.js +2 -1
  5. package/routes.js +5 -0
  6. package/services/api.js +30 -1
  7. package/utils/common.js +13 -1
  8. package/v2Components/CapVideoUpload/index.js +14 -6
  9. package/v2Components/TemplatePreview/index.js +23 -2
  10. package/v2Containers/App/constants.js +21 -0
  11. package/v2Containers/Cap/messages.js +30 -0
  12. package/v2Containers/CapFacebookPreview/actions.js +3 -15
  13. package/v2Containers/CapFacebookPreview/constants.js +3 -11
  14. package/v2Containers/CapFacebookPreview/index.js +6 -6
  15. package/v2Containers/CapFacebookPreview/reducer.js +3 -9
  16. package/v2Containers/CapFacebookPreview/sagas.js +6 -65
  17. package/v2Containers/CreativesContainer/SlideBoxContent.js +64 -1
  18. package/v2Containers/CreativesContainer/index.js +19 -8
  19. package/v2Containers/Facebook/Advertisement/index.js +38 -15
  20. package/v2Containers/Facebook/Advertisement/index.scss +9 -0
  21. package/v2Containers/Facebook/Advertisement/messages.js +2 -2
  22. package/v2Containers/Facebook/actions.js +63 -0
  23. package/v2Containers/Facebook/constants.js +25 -1
  24. package/v2Containers/Facebook/index.js +135 -107
  25. package/v2Containers/Facebook/reducer.js +98 -1
  26. package/v2Containers/Facebook/sagas.js +147 -0
  27. package/v2Containers/Facebook/selectors.js +10 -0
  28. package/v2Containers/Line/Container/Video/index.js +38 -41
  29. package/v2Containers/Templates/_templates.scss +26 -0
  30. package/v2Containers/Templates/actions.js +14 -1
  31. package/v2Containers/Templates/constants.js +8 -0
  32. package/v2Containers/Templates/index.js +138 -10
  33. package/v2Containers/Templates/messages.js +8 -4
  34. package/v2Containers/Templates/reducer.js +22 -0
  35. package/v2Containers/Templates/sagas.js +26 -1
  36. package/v2Containers/TemplatesV2/index.js +13 -13
  37. package/v2Containers/Viber/index.js +2 -1
@@ -9,10 +9,18 @@ import * as types from './constants';
9
9
 
10
10
  const initialState = fromJS({
11
11
  getAllTemplatesInProgress: false,
12
+ fetchingOrgLevelCampaignSettings: true,
12
13
  templates: [],
13
14
  deleteResponse: {},
14
15
  deleteTemplateInProgress: false,
15
16
  templateError: {},
17
+ campaignSettings: {
18
+ messageSettings: {
19
+ enableLinkTracking: false,
20
+ },
21
+ alertsSettings: {},
22
+ reportsSettings: {},
23
+ },
16
24
  });
17
25
 
18
26
  function templatesReducer(state = initialState, action) {
@@ -75,6 +83,8 @@ function templatesReducer(state = initialState, action) {
75
83
  return state.set('selectedLineAccount', fromJS(action.lineAccount));
76
84
  case types.SET_VIBER_ACCOUNT:
77
85
  return state.set('selectedViberAccount', fromJS(action.viberAccount));
86
+ case types.SET_FACEBOOK_ACCOUNT:
87
+ return state.set('selectedFacebookAccount', fromJS(action.faceBookAccount));
78
88
  case types.RESET_ACCOUNT:
79
89
  return state
80
90
  .remove('selectedWeChatAccount')
@@ -147,6 +157,18 @@ function templatesReducer(state = initialState, action) {
147
157
  return state
148
158
  .set('templates', [])
149
159
  .set('weCRMtemplates', fromJS({}));
160
+ case types.GET_ORG_LEVEL_CAMPAIGN_SETTINGS_REQUEST:
161
+ return state.set('fetchingOrgLevelCampaignSettings', true);
162
+ case types.GET_ORG_LEVEL_CAMPAIGN_SETTINGS_SUCCESS:
163
+ return state.set('fetchingOrgLevelCampaignSettings', false).set(
164
+ 'campaignSettings',
165
+ fromJS({
166
+ ...state.get('campaignSettings'),
167
+ ...(action.result || {}).entity,
168
+ }),
169
+ );
170
+ case types.GET_ORG_LEVEL_CAMPAIGN_SETTINGS_FAILURE:
171
+ return state.set('fetchingOrgLevelCampaignSettings', false);
150
172
  default:
151
173
  return state;
152
174
  }
@@ -1,4 +1,4 @@
1
- import { call, put, takeLatest, take, cancel } from 'redux-saga/effects';
1
+ import { call, put, takeLatest, take, cancel, select } from 'redux-saga/effects';
2
2
  import { LOCATION_CHANGE } from 'react-router-redux';
3
3
  // import { schema, normalize } from 'normalizr';
4
4
  import * as Api from '../../services/api';
@@ -73,6 +73,30 @@ export function* fetchWeCrmAccounts(action) {
73
73
  }
74
74
  }
75
75
 
76
+ export function* getOrgLevelCampaignSettings() {
77
+ try {
78
+ const result = yield call(Api.getOrgLevelCampaignSettings);
79
+ yield put({
80
+ type: types.GET_ORG_LEVEL_CAMPAIGN_SETTINGS_SUCCESS,
81
+ result,
82
+ });
83
+ } catch (error) {
84
+ yield put({ type: types.GET_ORG_LEVEL_CAMPAIGN_SETTINGS_FAILURE, error });
85
+ }
86
+ }
87
+
88
+ export function* watchGetOrgLevelCampaignSettings() {
89
+ const watcher = yield takeLatest(
90
+ types.GET_ORG_LEVEL_CAMPAIGN_SETTINGS_REQUEST,
91
+ getOrgLevelCampaignSettings,
92
+ );
93
+ yield take(LOCATION_CHANGE);
94
+ const store = yield select();
95
+ if (!store.getIn(['router', 'location', 'pathname']).includes('/settings/')) {
96
+ yield cancel(watcher);
97
+ }
98
+ }
99
+
76
100
  export function* sendZippedFile({selectedFile, errorHandler, successHandler}) {
77
101
  let errorMessage = "";
78
102
  try {
@@ -176,4 +200,5 @@ export default [
176
200
  watchSendingFile,
177
201
  watchGetDefaultBeeTemplates,
178
202
  watchGetTemplateDetails,
203
+ watchGetOrgLevelCampaignSettings,
179
204
  ];
@@ -55,8 +55,7 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
55
55
  mPush: {content: <></>, tab: intl.formatMessage(messages.pushNotification), key: 'mobilepush'},
56
56
  line: {content: <></>, tab: intl.formatMessage(messages.line), key: 'line'},
57
57
  viber: {content: <></>, tab: intl.formatMessage(messages.viber), key: 'viber'},
58
-
59
-
58
+ facebook: {content: <div></div>, tab: intl.formatMessage(messages.facebook), key: 'facebook'},
60
59
  };
61
60
  let filteredPanes = Object.keys(defaultPanes)
62
61
  .filter((key) => !channelsToHide.includes(key)).reduce((obj = [], key) => {
@@ -70,15 +69,13 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
70
69
  if (!channelsToHide.includes('callTask')) {
71
70
  filteredPanes.push({content: <div></div>, tab: intl.formatMessage(messages.callTask), key: 'call_task'});
72
71
  }
73
- if (!channelsToHide.includes('facebook')) {
74
- filteredPanes.push({content: <div></div>, tab: intl.formatMessage(messages.facebook), key: 'facebook'});
75
- }
76
72
  if (!channelsToHide.includes('FTP')) {
77
73
  filteredPanes.push({content: <></>, tab: intl.formatMessage(messages.FTP), key: 'ftp'});
78
74
  defaultChannel = 'FTP';
79
75
  }
80
76
  }
81
77
 
78
+
82
79
  filteredPanes = filteredPanes.map( (pane) => {
83
80
  if (channelsToDisable.includes(pane.key)) {
84
81
  // eslint-disable-next-line no-param-reassign
@@ -151,9 +148,10 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
151
148
  );
152
149
 
153
150
  getFacebookComponent = () => {
154
- const { messageDetails, cap, onFacebookSubmit } = this.props;
151
+ const { messageDetails, cap, onFacebookSubmit, isFullMode } = this.props;
155
152
  return (
156
153
  <Facebook
154
+ {...this.props}
157
155
  messageDetails={messageDetails}
158
156
  cap={cap}
159
157
  onFacebookSubmit={onFacebookSubmit}
@@ -182,11 +180,15 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
182
180
  let query = {};
183
181
  if (!this.props.isFullMode) {
184
182
  query = {type: 'embedded', module: 'library'};
185
- if (channel === 'line') {
186
- return this.getLineComponent();
187
- }
188
- if (channel === 'ftp') {
189
- return this.getFTPComponent();
183
+ switch (channel) {
184
+ case 'line':
185
+ return this.getLineComponent();
186
+ case 'ftp':
187
+ return this.getFTPComponent();
188
+ case 'facebook':
189
+ return this.getFacebookComponent();
190
+ default:
191
+ break;
190
192
  }
191
193
  }
192
194
  const location = {pathname: `/${channel}`, search: '', query};
@@ -195,8 +197,6 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
195
197
  return this.getCallTaskComponent();
196
198
  case 'assets':
197
199
  return this.getGalleryComponent(location);
198
- case 'facebook':
199
- return this.getFacebookComponent();
200
200
  default:
201
201
  return (<Templates
202
202
  key={channel}
@@ -511,7 +511,8 @@ const Viber = (props) => {
511
511
  const ButtonViber = (<>
512
512
  <CapInput
513
513
  id="viber-button-text"
514
- type="input" onChange={onChangeButtonText}
514
+ type="input"
515
+ onChange={onChangeButtonText}
515
516
  label={formatMessage(messages.buttonText)}
516
517
  defaultValue={buttonText}
517
518
  value={buttonText}