@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.
- package/config/app.js +2 -0
- package/index.js +6 -0
- package/package.json +1 -1
- package/reducers.js +2 -1
- package/routes.js +5 -0
- package/services/api.js +30 -1
- package/utils/common.js +13 -1
- package/v2Components/CapVideoUpload/index.js +14 -6
- package/v2Components/TemplatePreview/index.js +23 -2
- package/v2Containers/App/constants.js +21 -0
- package/v2Containers/Cap/messages.js +30 -0
- package/v2Containers/CapFacebookPreview/actions.js +3 -15
- package/v2Containers/CapFacebookPreview/constants.js +3 -11
- package/v2Containers/CapFacebookPreview/index.js +6 -6
- package/v2Containers/CapFacebookPreview/reducer.js +3 -9
- package/v2Containers/CapFacebookPreview/sagas.js +6 -65
- package/v2Containers/CreativesContainer/SlideBoxContent.js +64 -1
- package/v2Containers/CreativesContainer/index.js +19 -8
- package/v2Containers/Facebook/Advertisement/index.js +38 -15
- package/v2Containers/Facebook/Advertisement/index.scss +9 -0
- package/v2Containers/Facebook/Advertisement/messages.js +2 -2
- package/v2Containers/Facebook/actions.js +63 -0
- package/v2Containers/Facebook/constants.js +25 -1
- package/v2Containers/Facebook/index.js +135 -107
- package/v2Containers/Facebook/reducer.js +98 -1
- package/v2Containers/Facebook/sagas.js +147 -0
- package/v2Containers/Facebook/selectors.js +10 -0
- package/v2Containers/Line/Container/Video/index.js +38 -41
- package/v2Containers/Templates/_templates.scss +26 -0
- package/v2Containers/Templates/actions.js +14 -1
- package/v2Containers/Templates/constants.js +8 -0
- package/v2Containers/Templates/index.js +138 -10
- package/v2Containers/Templates/messages.js +8 -4
- package/v2Containers/Templates/reducer.js +22 -0
- package/v2Containers/Templates/sagas.js +26 -1
- package/v2Containers/TemplatesV2/index.js +13 -13
- 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
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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"
|
|
514
|
+
type="input"
|
|
515
|
+
onChange={onChangeButtonText}
|
|
515
516
|
label={formatMessage(messages.buttonText)}
|
|
516
517
|
defaultValue={buttonText}
|
|
517
518
|
value={buttonText}
|