@capillarytech/creatives-library 7.6.0 → 7.6.1
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/config/app.js +0 -2
- package/index.js +0 -6
- package/package.json +1 -1
- package/reducers.js +1 -2
- package/routes.js +0 -5
- package/services/api.js +1 -34
- package/utils/common.js +1 -13
- package/v2Components/TemplatePreview/index.js +2 -19
- package/v2Containers/App/constants.js +0 -21
- package/v2Containers/Cap/messages.js +0 -30
- package/v2Containers/CreativesContainer/SlideBoxContent.js +1 -55
- package/v2Containers/CreativesContainer/index.js +8 -18
- package/v2Containers/Facebook/actions.js +0 -62
- package/v2Containers/Facebook/constants.js +1 -25
- package/v2Containers/Facebook/index.js +107 -135
- package/v2Containers/Facebook/reducer.js +1 -95
- package/v2Containers/Facebook/sagas.js +0 -136
- package/v2Containers/Facebook/selectors.js +0 -10
- package/v2Containers/Line/Container/Video/index.js +41 -38
- package/v2Containers/Templates/_templates.scss +0 -26
- package/v2Containers/Templates/actions.js +1 -14
- package/v2Containers/Templates/constants.js +0 -8
- package/v2Containers/Templates/index.js +10 -117
- package/v2Containers/Templates/messages.js +4 -8
- package/v2Containers/Templates/reducer.js +0 -22
- package/v2Containers/Templates/sagas.js +1 -26
- package/v2Containers/TemplatesV2/index.js +13 -13
- package/v2Containers/Viber/index.js +1 -2
|
@@ -24,8 +24,7 @@ import styles, { CampaignDetailCapColumn } from './Facebook.style';
|
|
|
24
24
|
import * as actions from './actions';
|
|
25
25
|
import withStyles from '../../hoc/withStyles';
|
|
26
26
|
import MarketingObjective from '../../v2Components/MarketingObjective';
|
|
27
|
-
import { makeSelectMarketingObjectiveList
|
|
28
|
-
import Advertisement from './Advertisement';
|
|
27
|
+
import { makeSelectMarketingObjectiveList } from './selectors';
|
|
29
28
|
import {
|
|
30
29
|
VALUE_APP_INSTALLS,
|
|
31
30
|
VALUE_BRAND_AWARENESS,
|
|
@@ -150,7 +149,9 @@ const getCategorizedMarketingObjectiveList = (marketingObjectivesList, formatMes
|
|
|
150
149
|
const Facebook = (props) => {
|
|
151
150
|
const {
|
|
152
151
|
className,
|
|
153
|
-
templateData
|
|
152
|
+
templateData: {
|
|
153
|
+
selectedMarketingObjective: fbMarketingObjectiveValue = VALUE_REACH,
|
|
154
|
+
} = {},
|
|
154
155
|
cap: {
|
|
155
156
|
campaignDetails: {
|
|
156
157
|
name: fbCampaignValue,
|
|
@@ -178,25 +179,13 @@ const Facebook = (props) => {
|
|
|
178
179
|
marketingObjectiveList,
|
|
179
180
|
facebookActions,
|
|
180
181
|
intl,
|
|
181
|
-
isFullMode,
|
|
182
|
-
fbADData,
|
|
183
|
-
onCreateComplete,
|
|
184
|
-
params,
|
|
185
|
-
facebookTemplateData,
|
|
186
182
|
} = props;
|
|
187
|
-
|
|
188
|
-
selectedMarketingObjective: fbMarketingObjectiveValue = VALUE_REACH,
|
|
189
|
-
} = templateData || {};
|
|
183
|
+
|
|
190
184
|
const [isDrawerVisible, setDrawerVisibility] = useState(false);
|
|
191
185
|
const [selectedMarketingObjective, setMarketingObjective] = useState(socialObjective || fbMarketingObjectiveValue);
|
|
192
186
|
|
|
193
187
|
useEffect(() => {
|
|
194
|
-
|
|
195
|
-
facebookActions.getMarketingObjectives();
|
|
196
|
-
} else {
|
|
197
|
-
const orgId = window.localStorage.getItem('orgID');
|
|
198
|
-
facebookActions.getOrgOUs(orgId);
|
|
199
|
-
}
|
|
188
|
+
facebookActions.getMarketingObjectives();
|
|
200
189
|
}, []);
|
|
201
190
|
|
|
202
191
|
const categorizedMarketingObjectiveList = getCategorizedMarketingObjectiveList(marketingObjectiveList, intl.formatMessage);
|
|
@@ -226,158 +215,141 @@ const Facebook = (props) => {
|
|
|
226
215
|
const onMarketingObjectiveSelect = (value) => setMarketingObjective(value);
|
|
227
216
|
|
|
228
217
|
return (
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
218
|
+
<div className={className}>
|
|
219
|
+
<div className="is-scrollable-section">
|
|
220
|
+
<div className="account-details-wrapper">
|
|
221
|
+
<div className="account-name-section">
|
|
222
|
+
<CapHeading type="h4">
|
|
223
|
+
<FormattedMessage {...messages.fbAccount} />
|
|
224
|
+
</CapHeading>
|
|
225
|
+
<CapHeading type="h3">{accountName}</CapHeading>
|
|
226
|
+
</div>
|
|
238
227
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
228
|
+
<div className="account-section-container">
|
|
229
|
+
<CapHeading type="h3">
|
|
230
|
+
<FormattedMessage {...messages.fbAdCampaignSetDetailsTitle} />
|
|
231
|
+
</CapHeading>
|
|
232
|
+
<CapLabel type="label1">
|
|
233
|
+
<FormattedMessage
|
|
234
|
+
{...messages.fbAdCampaignSetDetailsDescription}
|
|
246
235
|
/>
|
|
247
|
-
|
|
248
|
-
|
|
236
|
+
</CapLabel>
|
|
237
|
+
</div>
|
|
249
238
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
239
|
+
<CapRow span={12} type="flex">
|
|
240
|
+
{campaignDataList.map(({ label, value, onChange }, index) => (
|
|
241
|
+
<StyledCampaignDetailCapColumn
|
|
242
|
+
span={index % 2 === 0 ? 6 : 14}
|
|
243
|
+
key={label}
|
|
255
244
|
>
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
245
|
+
<CapRow>
|
|
246
|
+
<CapLabel type="label2">
|
|
247
|
+
<FormattedMessage {...messages[label]} />
|
|
248
|
+
</CapLabel>
|
|
249
|
+
<CapHeading type="h4">
|
|
250
|
+
{value}
|
|
251
|
+
{!socialRemoteCampaignId && onChange && (
|
|
252
|
+
<CapButton
|
|
253
|
+
type="flat"
|
|
254
|
+
className="marketingObjective-change-button facebook-marketing-objective-change"
|
|
255
|
+
onClick={onChange}
|
|
267
256
|
>
|
|
268
|
-
|
|
269
|
-
|
|
257
|
+
<FormattedMessage {...messages.fbChange} />
|
|
258
|
+
</CapButton>
|
|
270
259
|
)}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
260
|
+
</CapHeading>
|
|
261
|
+
</CapRow>
|
|
262
|
+
</StyledCampaignDetailCapColumn>
|
|
274
263
|
))}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
264
|
+
</CapRow>
|
|
265
|
+
<CapDrawer
|
|
266
|
+
content={
|
|
267
|
+
<MarketingObjective
|
|
268
|
+
selectedMarketingObjective={selectedMarketingObjective}
|
|
269
|
+
onMarketingObjectiveSelect={onMarketingObjectiveSelect}
|
|
270
|
+
defaultmarketingObjective={socialObjective || fbMarketingObjectiveValue}
|
|
271
|
+
onSubmit={setDrawerVisibility}
|
|
272
|
+
marketingObjectiveList={categorizedMarketingObjectiveList}
|
|
284
273
|
/>
|
|
285
274
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
275
|
+
visible={isDrawerVisible}
|
|
276
|
+
width={380}
|
|
277
|
+
onClose={() => setDrawerVisibility(false)}
|
|
289
278
|
/>
|
|
290
|
-
|
|
279
|
+
</div>
|
|
291
280
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
281
|
+
<div className="ad-section">
|
|
282
|
+
<div className="account-section-container">
|
|
283
|
+
<CapHeading type="h3">
|
|
284
|
+
<FormattedMessage {...messages.fbAdsTitle} />
|
|
285
|
+
</CapHeading>
|
|
286
|
+
<CapLabel type="label1">
|
|
287
|
+
<FormattedMessage {...messages.fbAdsDescription} />
|
|
288
|
+
</CapLabel>
|
|
289
|
+
</div>
|
|
301
290
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
291
|
+
<div>
|
|
292
|
+
<CapRow span={12} type="flex">
|
|
293
|
+
<CapColumn span={6}>
|
|
294
|
+
<CapCustomCard
|
|
295
|
+
type="Facebook"
|
|
296
|
+
FBDynamicComponent={() => (
|
|
297
|
+
<CapIcon
|
|
298
|
+
size="l"
|
|
299
|
+
type="scenery"
|
|
300
|
+
className="facebook-dynamic-content"
|
|
312
301
|
/>
|
|
313
302
|
)}
|
|
314
303
|
/>
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
304
|
+
</CapColumn>
|
|
305
|
+
<CapColumn span={16}>
|
|
306
|
+
<ul className="parameter-list">
|
|
307
|
+
{adSetParameters.map((parameter, index) => (
|
|
308
|
+
<li key={parameter} className="parameter-list-item">
|
|
309
|
+
<CapLabel type="label2" className="parameter-index">
|
|
310
|
+
{index + 1}
|
|
311
|
+
</CapLabel>
|
|
312
|
+
<CapHeading type="h5">
|
|
313
|
+
<FormattedMessage {...messages[parameter]} />
|
|
314
|
+
</CapHeading>
|
|
315
|
+
</li>
|
|
327
316
|
))}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
317
|
+
</ul>
|
|
318
|
+
</CapColumn>
|
|
319
|
+
</CapRow>
|
|
320
|
+
</div>
|
|
321
|
+
</div>
|
|
322
|
+
</div>
|
|
323
|
+
<CapButton
|
|
324
|
+
className="facebook-confirm-button"
|
|
325
|
+
type="primary"
|
|
326
|
+
onClick={() =>
|
|
338
327
|
onFacebookSubmit({ channel: "FACEBOOK", selectedMarketingObjective, accountId })
|
|
339
328
|
}
|
|
340
329
|
>
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
<Advertisement
|
|
345
|
-
isFullMode={isFullMode}
|
|
346
|
-
actions={facebookActions}
|
|
347
|
-
fbADData={fbADData}
|
|
348
|
-
onCreateComplete={onCreateComplete}
|
|
349
|
-
templateData={templateData}
|
|
350
|
-
params={params}
|
|
351
|
-
facebookTemplateData={facebookTemplateData}
|
|
352
|
-
/></div>
|
|
330
|
+
<FormattedMessage {...messages.fbConfirm} />
|
|
331
|
+
</CapButton>
|
|
332
|
+
</div>
|
|
353
333
|
);
|
|
354
334
|
};
|
|
355
335
|
|
|
356
336
|
Facebook.propTypes = {
|
|
357
|
-
className: PropTypes.string,
|
|
337
|
+
className: PropTypes.string.isRequired,
|
|
358
338
|
templateData: PropTypes.object,
|
|
359
339
|
cap: PropTypes.object,
|
|
360
340
|
messageDetails: PropTypes.object,
|
|
361
|
-
|
|
362
|
-
onFacebookSubmit: PropTypes.func,
|
|
341
|
+
onFacebookSubmit: PropTypes.func.isRequired,
|
|
363
342
|
marketingObjectiveList: PropTypes.arrayOf(PropTypes.string),
|
|
364
|
-
facebookActions: PropTypes.func,
|
|
365
|
-
intl: intlShape,
|
|
366
|
-
isFullMode: PropTypes.boolean,
|
|
367
|
-
fbADData: PropTypes.object,
|
|
368
|
-
onCreateComplete: PropTypes.func,
|
|
369
|
-
facebookTemplateData: PropTypes.object,
|
|
343
|
+
facebookActions: PropTypes.func.isRequired,
|
|
344
|
+
intl: intlShape.isRequired,
|
|
370
345
|
};
|
|
371
346
|
|
|
372
347
|
Facebook.defaultProps = {
|
|
373
|
-
marketingObjectiveList: [
|
|
374
|
-
|
|
348
|
+
marketingObjectiveList: [],
|
|
375
349
|
};
|
|
376
350
|
|
|
377
351
|
const mapStateToProps = createStructuredSelector({
|
|
378
352
|
marketingObjectiveList: makeSelectMarketingObjectiveList(),
|
|
379
|
-
fbADData: makeSelectFbAd(),
|
|
380
|
-
facebookTemplateData: makeSelectTemplate(),
|
|
381
353
|
});
|
|
382
354
|
|
|
383
355
|
const mapDispatchToProps = (dispatch) => ({
|
|
@@ -8,34 +8,14 @@ import { fromJS } from 'immutable';
|
|
|
8
8
|
import {
|
|
9
9
|
SET_MARKETING_OBJECTIVES_SUCCESS,
|
|
10
10
|
SET_MARKETING_OBJECTIVES_FAILURE,
|
|
11
|
-
UPLOAD_FB_AD_ASSET_REQUEST,
|
|
12
|
-
UPLOAD_FB_AD_ASSET_SUCCESS,
|
|
13
|
-
UPLOAD_FB_AD_ASSET_FAILURE,
|
|
14
|
-
CREATE_FACEBOOK_AD_TEMPLATE_REQUEST,
|
|
15
|
-
CREATE_FACEBOOK_AD_TEMPLATE_SUCCESS,
|
|
16
|
-
CREATE_FACEBOOK_AD_TEMPLATE_FAILURE,
|
|
17
|
-
CLEAR_FACEBOOK_AD_ASSET,
|
|
18
|
-
EDIT_FACEBOOK_AD_TEMPLATE_REQUEST,
|
|
19
|
-
EDIT_FACEBOOK_AD_TEMPLATE_SUCCESS,
|
|
20
|
-
EDIT_FACEBOOK_AD_TEMPLATE_FAILURE,
|
|
21
|
-
GET_FACEBOOK_AD_TEMPLATE_DETAILS_REQUEST,
|
|
22
|
-
GET_FACEBOOK_AD_TEMPLATE_DETAILS_SUCCESS,
|
|
23
|
-
GET_FACEBOOK_AD_TEMPLATE_DETAILS_FAILURE,
|
|
24
|
-
CLEAR_FACEBOOK_AD_EDIT_RESPONSE_REQUEST,
|
|
25
|
-
CLEAR_FACEBOOK_AD_CREATE_RESPONSE_REQUEST,
|
|
26
|
-
CLEAR_FACEBOOK_AD_DATA,
|
|
27
|
-
GET_ORG_OU_LIST_REQUEST,
|
|
28
|
-
GET_ORG_OU_LIST_FAILURE,
|
|
29
|
-
GET_ORG_OU_LIST_SUCCESS,
|
|
30
11
|
} from './constants';
|
|
31
12
|
|
|
32
13
|
export const initialState = fromJS({
|
|
33
14
|
marketinObjectives: {},
|
|
34
|
-
uploadedAssetData: {},
|
|
35
15
|
});
|
|
36
16
|
|
|
37
17
|
function facebookReducer(state = initialState, action) {
|
|
38
|
-
const { type, payload
|
|
18
|
+
const { type, payload } = action;
|
|
39
19
|
switch (type) {
|
|
40
20
|
case SET_MARKETING_OBJECTIVES_SUCCESS: {
|
|
41
21
|
return state.set('marketinObjectivesData', payload).set('marketinObjectivesError', null);
|
|
@@ -43,80 +23,6 @@ function facebookReducer(state = initialState, action) {
|
|
|
43
23
|
case SET_MARKETING_OBJECTIVES_FAILURE: {
|
|
44
24
|
return state.set('marketinObjectivesData', []).set('marketinObjectivesError', payload);
|
|
45
25
|
}
|
|
46
|
-
case UPLOAD_FB_AD_ASSET_REQUEST:
|
|
47
|
-
return state
|
|
48
|
-
.set('uploadAssetSuccess', false)
|
|
49
|
-
.set(templateType !== undefined ? `assetUploading${templateType}` : 'assetUploading', true);
|
|
50
|
-
case UPLOAD_FB_AD_ASSET_SUCCESS:
|
|
51
|
-
return state
|
|
52
|
-
.set('uploadAssetSuccess', (action.statusCode !== undefined && action.statusCode !== '' && action.statusCode < 300))
|
|
53
|
-
.set(templateType !== undefined ? `assetUploading${templateType}` : 'assetUploading', false)
|
|
54
|
-
.set(templateType !== undefined ? `uploadedAssetData${templateType}` : 'uploadedAssetData', action.data);
|
|
55
|
-
case UPLOAD_FB_AD_ASSET_FAILURE:
|
|
56
|
-
return state
|
|
57
|
-
.set('uploadAssetSuccess', false)
|
|
58
|
-
.set(templateType !== undefined ? `assetUploading${templateType}` : 'assetUploading', false);
|
|
59
|
-
case CREATE_FACEBOOK_AD_TEMPLATE_REQUEST:
|
|
60
|
-
return state
|
|
61
|
-
.set('createTemplateInProgress', true)
|
|
62
|
-
.set('createTemplateError', false)
|
|
63
|
-
.set('createTemplateErrorMessage', fromJS(""));
|
|
64
|
-
case CREATE_FACEBOOK_AD_TEMPLATE_SUCCESS:
|
|
65
|
-
return state.set('createTemplateInProgress', false)
|
|
66
|
-
.set('response', action.data)
|
|
67
|
-
.set('createTemplateError', (action.statusCode !== undefined && action.statusCode > 300))
|
|
68
|
-
.set('createTemplateErrorMessage', fromJS(action.errorMsg));
|
|
69
|
-
case CREATE_FACEBOOK_AD_TEMPLATE_FAILURE:
|
|
70
|
-
return state
|
|
71
|
-
.set('createTemplateInProgress', false)
|
|
72
|
-
.set('createTemplateError', true)
|
|
73
|
-
.set('createTemplateErrorMessage', fromJS(action.errorMsg));
|
|
74
|
-
case CLEAR_FACEBOOK_AD_ASSET:
|
|
75
|
-
return state
|
|
76
|
-
.delete(templateType !== undefined ? `uploadedAssetData${templateType}` : 'uploadedAssetData');
|
|
77
|
-
// FOR EDIT
|
|
78
|
-
case EDIT_FACEBOOK_AD_TEMPLATE_REQUEST:
|
|
79
|
-
return state
|
|
80
|
-
.set('editTemplateInProgress', true)
|
|
81
|
-
.set('editTemplateError', false)
|
|
82
|
-
.set('editTemplateErrorMessage', fromJS(""));
|
|
83
|
-
case EDIT_FACEBOOK_AD_TEMPLATE_SUCCESS:
|
|
84
|
-
return state.set('editTemplateInProgress', false)
|
|
85
|
-
.set('editResponse', action.data)
|
|
86
|
-
.set('editTemplateError', (action.statusCode !== undefined && action.statusCode > 300))
|
|
87
|
-
.set('editTemplateErrorMessage', fromJS(action.errorMsg));
|
|
88
|
-
case EDIT_FACEBOOK_AD_TEMPLATE_FAILURE:
|
|
89
|
-
return state
|
|
90
|
-
.set('editTemplateInProgress', false)
|
|
91
|
-
.set('editTemplateError', true)
|
|
92
|
-
.set('editTemplateErrorMessage', fromJS(action.errorMsg));
|
|
93
|
-
case GET_FACEBOOK_AD_TEMPLATE_DETAILS_REQUEST:
|
|
94
|
-
return state.set('getTemplateDetailsInProgress', true);
|
|
95
|
-
case GET_FACEBOOK_AD_TEMPLATE_DETAILS_SUCCESS:
|
|
96
|
-
return state.set('getTemplateDetailsInProgress', false)
|
|
97
|
-
.set('templateDetails', action.data);
|
|
98
|
-
case GET_FACEBOOK_AD_TEMPLATE_DETAILS_FAILURE:
|
|
99
|
-
case CLEAR_FACEBOOK_AD_EDIT_RESPONSE_REQUEST:
|
|
100
|
-
return state.set('editResponse', {});
|
|
101
|
-
case CLEAR_FACEBOOK_AD_CREATE_RESPONSE_REQUEST:
|
|
102
|
-
return state.set('response', {});
|
|
103
|
-
case CLEAR_FACEBOOK_AD_DATA:
|
|
104
|
-
return state
|
|
105
|
-
.delete('uploadedAssetData')
|
|
106
|
-
.delete('metaEntities')
|
|
107
|
-
.delete('templateDetails');
|
|
108
|
-
case GET_ORG_OU_LIST_REQUEST: {
|
|
109
|
-
return state.set('orgOuData', fromJS({ status: 'REQUEST' }));
|
|
110
|
-
}
|
|
111
|
-
case GET_ORG_OU_LIST_SUCCESS: {
|
|
112
|
-
return state.set(
|
|
113
|
-
'orgOuData',
|
|
114
|
-
fromJS({ status: 'SUCCESS', data: action.payload }),
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
case GET_ORG_OU_LIST_FAILURE: {
|
|
118
|
-
return state.set('orgOuData', fromJS({ status: 'FAILURE' }));
|
|
119
|
-
}
|
|
120
26
|
default:
|
|
121
27
|
return state;
|
|
122
28
|
}
|
|
@@ -5,21 +5,6 @@ import {
|
|
|
5
5
|
GET_MARKETING_OBJECTIVES,
|
|
6
6
|
SET_MARKETING_OBJECTIVES_SUCCESS,
|
|
7
7
|
SET_MARKETING_OBJECTIVES_FAILURE,
|
|
8
|
-
UPLOAD_FB_AD_ASSET_REQUEST,
|
|
9
|
-
UPLOAD_FB_AD_ASSET_SUCCESS,
|
|
10
|
-
UPLOAD_FB_AD_ASSET_FAILURE,
|
|
11
|
-
CREATE_FACEBOOK_AD_TEMPLATE_REQUEST,
|
|
12
|
-
CREATE_FACEBOOK_AD_TEMPLATE_SUCCESS,
|
|
13
|
-
CREATE_FACEBOOK_AD_TEMPLATE_FAILURE,
|
|
14
|
-
EDIT_FACEBOOK_AD_TEMPLATE_REQUEST,
|
|
15
|
-
EDIT_TEMPLATE_FACEBOOK_AD_SUCCESS,
|
|
16
|
-
EDIT_FACEBOOK_AD_TEMPLATE_FAILURE,
|
|
17
|
-
GET_FACEBOOK_AD_TEMPLATE_DETAILS_REQUEST,
|
|
18
|
-
GET_FACEBOOK_AD_TEMPLATE_DETAILS_SUCCESS,
|
|
19
|
-
GET_FACEBOOK_AD_TEMPLATE_DETAILS_FAILURE,
|
|
20
|
-
GET_ORG_OU_LIST_FAILURE,
|
|
21
|
-
GET_ORG_OU_LIST_SUCCESS,
|
|
22
|
-
GET_ORG_OU_LIST_REQUEST,
|
|
23
8
|
} from './constants';
|
|
24
9
|
|
|
25
10
|
export function* fetchMarketingObjectives() {
|
|
@@ -44,134 +29,13 @@ export function* fetchMarketingObjectives() {
|
|
|
44
29
|
});
|
|
45
30
|
}
|
|
46
31
|
}
|
|
47
|
-
export function* getOrgOUs({ orgID } = {}) {
|
|
48
|
-
try {
|
|
49
|
-
const apiResponse = yield call(Api.getOrgOUs, { orgID });
|
|
50
|
-
if (apiResponse.status === 200) {
|
|
51
|
-
yield put({
|
|
52
|
-
type: GET_ORG_OU_LIST_SUCCESS,
|
|
53
|
-
payload: apiResponse.result,
|
|
54
|
-
});
|
|
55
|
-
} else {
|
|
56
|
-
yield put({
|
|
57
|
-
type: GET_ORG_OU_LIST_FAILURE,
|
|
58
|
-
payload: apiResponse,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
} catch (error) {
|
|
62
|
-
yield put({
|
|
63
|
-
type: GET_ORG_OU_LIST_FAILURE,
|
|
64
|
-
payload: error,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function* uploadFbAdAsset(file, assetType, fileParams ) {
|
|
70
|
-
try {
|
|
71
|
-
const result = yield call(Api.uploadFile, file, assetType, fileParams);
|
|
72
|
-
yield put({
|
|
73
|
-
type: UPLOAD_FB_AD_ASSET_SUCCESS,
|
|
74
|
-
data: result.response.asset,
|
|
75
|
-
statusCode: result.status ? result.status.code : '',
|
|
76
|
-
templateType: file.templateType,
|
|
77
|
-
});
|
|
78
|
-
} catch (error) {
|
|
79
|
-
yield put({ type: UPLOAD_FB_AD_ASSET_FAILURE, error });
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
export function* createFacebookADTemplate({ template, callback }) {
|
|
83
|
-
let errorMsg;
|
|
84
|
-
try {
|
|
85
|
-
const result = yield call(Api.createFacebookADTemplate, { template });
|
|
86
|
-
if (result.status.code >= 400) {
|
|
87
|
-
errorMsg = result.message;
|
|
88
|
-
throw errorMsg;
|
|
89
|
-
}
|
|
90
|
-
yield put({ type: CREATE_FACEBOOK_AD_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
|
|
91
|
-
if (callback) {
|
|
92
|
-
callback(result.response);
|
|
93
|
-
}
|
|
94
|
-
} catch (error) {
|
|
95
|
-
yield put({ type: CREATE_FACEBOOK_AD_TEMPLATE_FAILURE, error, errorMsg });
|
|
96
|
-
if (callback) {
|
|
97
|
-
callback(null, errorMsg);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
export function* editTemplate({ template, callback }) {
|
|
104
|
-
let errorMsg;
|
|
105
|
-
try {
|
|
106
|
-
const result = yield call(Api.createFacebookADTemplate, {template});
|
|
107
|
-
if (result.status.code >= 400) {
|
|
108
|
-
errorMsg = result.message;
|
|
109
|
-
throw errorMsg;
|
|
110
|
-
}
|
|
111
|
-
if (callback) {
|
|
112
|
-
callback(result.response);
|
|
113
|
-
}
|
|
114
|
-
yield put({ type: EDIT_TEMPLATE_FACEBOOK_AD_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
|
|
115
|
-
} catch (error) {
|
|
116
|
-
yield put({ type: EDIT_FACEBOOK_AD_TEMPLATE_FAILURE, error, errorMsg });
|
|
117
|
-
if (callback) {
|
|
118
|
-
callback(null, errorMsg);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export function* getTemplateDetails({id, callback}) {
|
|
124
|
-
try {
|
|
125
|
-
const result = yield call(Api.getTemplateDetails, {id, channel: 'FACEBOOK'});
|
|
126
|
-
yield put({ type: GET_FACEBOOK_AD_TEMPLATE_DETAILS_SUCCESS, data: result.response });
|
|
127
|
-
if (callback) {
|
|
128
|
-
callback(false);
|
|
129
|
-
}
|
|
130
|
-
} catch (error) {
|
|
131
|
-
yield put({ type: GET_FACEBOOK_AD_TEMPLATE_DETAILS_FAILURE, error });
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
function* watchCreateTemplate() {
|
|
137
|
-
const watcher = yield takeLatest(CREATE_FACEBOOK_AD_TEMPLATE_REQUEST, createFacebookADTemplate);
|
|
138
|
-
yield take(LOCATION_CHANGE);
|
|
139
|
-
yield cancel(watcher);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
function* watchGetTemplateDetails() {
|
|
143
|
-
const watcher = yield takeLatest(GET_FACEBOOK_AD_TEMPLATE_DETAILS_REQUEST, getTemplateDetails);
|
|
144
|
-
yield take(LOCATION_CHANGE);
|
|
145
|
-
yield cancel(watcher);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
function* watchEditTemplate() {
|
|
149
|
-
const watcher = yield takeLatest(EDIT_FACEBOOK_AD_TEMPLATE_REQUEST, editTemplate);
|
|
150
|
-
yield take(LOCATION_CHANGE);
|
|
151
|
-
yield cancel(watcher);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
32
|
|
|
155
33
|
function* watchFetchMarketingObjective() {
|
|
156
34
|
const watcher = yield takeLatest(GET_MARKETING_OBJECTIVES, fetchMarketingObjectives);
|
|
157
35
|
yield take(LOCATION_CHANGE);
|
|
158
36
|
yield cancel(watcher);
|
|
159
37
|
}
|
|
160
|
-
function* watchUploadFbADAsset() {
|
|
161
|
-
const watcher = yield takeLatest(UPLOAD_FB_AD_ASSET_REQUEST, uploadFbAdAsset);
|
|
162
|
-
yield take(LOCATION_CHANGE);
|
|
163
|
-
yield cancel(watcher);
|
|
164
|
-
}
|
|
165
|
-
export function* watchGetOrgOUs() {
|
|
166
|
-
yield takeLatest(GET_ORG_OU_LIST_REQUEST, getOrgOUs);
|
|
167
|
-
}
|
|
168
38
|
|
|
169
39
|
export default [
|
|
170
40
|
watchFetchMarketingObjective,
|
|
171
|
-
watchUploadFbADAsset,
|
|
172
|
-
watchEditTemplate,
|
|
173
|
-
watchGetTemplateDetails,
|
|
174
|
-
watchCreateTemplate,
|
|
175
|
-
watchGetOrgOUs,
|
|
176
41
|
];
|
|
177
|
-
|
|
@@ -5,11 +5,6 @@ import { createSelector } from 'reselect';
|
|
|
5
5
|
*/
|
|
6
6
|
const selectFacebookDomain = () => (state) => state.get('facebook');
|
|
7
7
|
|
|
8
|
-
const selectTemplateDomain = () => (state) => state.get('templates');
|
|
9
|
-
export const makeSelectTemplate = () => createSelector(
|
|
10
|
-
selectTemplateDomain(),
|
|
11
|
-
(substate) => substate && substate.toJS()
|
|
12
|
-
);
|
|
13
8
|
/**
|
|
14
9
|
* Other specific selectors
|
|
15
10
|
*/
|
|
@@ -23,8 +18,3 @@ export const makeSelectMarketingObjectiveList = () => createSelector(
|
|
|
23
18
|
selectFacebookDomain(),
|
|
24
19
|
(substate) => substate && substate.get('marketinObjectivesData'),
|
|
25
20
|
);
|
|
26
|
-
|
|
27
|
-
export const makeSelectFbAd = () => createSelector(
|
|
28
|
-
selectFacebookDomain(),
|
|
29
|
-
(substate) => substate && substate.toJS()
|
|
30
|
-
);
|