@capillarytech/creatives-library 6.9.2 → 6.9.5
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/components/CapTagList/index.js +1 -1
- package/components/Edmeditor/index.js +1 -1
- package/components/FormBuilder/index.js +1 -0
- package/components/TemplatePreview/_templatePreview.scss +6 -0
- package/components/TemplatePreview/index.js +35 -28
- package/config/app.js +1 -1
- package/containers/TagList/index.js +4 -5
- package/index.html +0 -5
- package/package.json +1 -2
- package/services/api.js +1 -16
- package/v2Components/CapTagList/index.js +26 -55
- package/v2Components/Carousel/index.js +120 -0
- package/v2Components/Carousel/style.scss +40 -0
- package/v2Components/CmsTemplatesComponent/index.js +4 -4
- package/v2Components/Edmeditor/index.js +1 -1
- package/v2Components/EmailPreview/_emailPreview.scss +2 -2
- package/v2Components/FormBuilder/index.js +43 -79
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +151 -151
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +33 -33
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/tests/index.test.js +10 -10
- package/v2Components/TemplatePreview/_templatePreview.scss +1 -0
- package/v2Components/TemplatePreview/assets/images/androidPushMessage.svg +44 -44
- package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +21 -21
- package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +16 -16
- package/v2Components/TemplatePreview/assets/images/iPhonePushMessage.svg +134 -134
- package/v2Components/TemplatePreview/assets/images/mobile.svg +23 -23
- package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -22
- package/v2Components/TemplatePreview/assets/images/user-icon.svg +18 -18
- package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +21 -21
- package/v2Components/TemplatePreview/assets/images/wechat-mobile.svg +77 -77
- package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -20
- package/v2Components/TemplatePreview/index.js +36 -29
- package/v2Components/TemplatePreview/tests/index.test.js +10 -10
- package/v2Containers/CreativesContainer/SlideBoxContent.js +7 -1
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +51 -51
- package/v2Containers/CreativesContainer/actions.js +27 -27
- package/v2Containers/CreativesContainer/constants.js +17 -17
- package/v2Containers/CreativesContainer/index.js +2 -7
- package/v2Containers/CreativesContainer/index.scss +44 -44
- package/v2Containers/CreativesContainer/messages.js +305 -305
- package/v2Containers/CreativesContainer/reducer.js +29 -29
- package/v2Containers/CreativesContainer/sagas.js +11 -11
- package/v2Containers/CreativesContainer/selectors.js +30 -30
- package/v2Containers/CreativesContainer/tests/actions.test.js +18 -18
- package/v2Containers/CreativesContainer/tests/index.test.js +10 -10
- package/v2Containers/CreativesContainer/tests/reducer.test.js +9 -9
- package/v2Containers/CreativesContainer/tests/sagas.test.js +15 -15
- package/v2Containers/CreativesContainer/tests/selectors.test.js +10 -10
- package/v2Containers/Email/constants.js +0 -1
- package/v2Containers/Email/index.js +115 -169
- package/v2Containers/Email/initialSchema.js +3 -18
- package/v2Containers/Email/sagas.js +2 -2
- package/v2Containers/Email/selectors.js +0 -5
- package/v2Containers/EmailWrapper/index.js +3 -19
- package/v2Containers/Line/Container/Image/index.js +21 -19
- package/v2Containers/Line/Container/ImageCarousel/Content.js +554 -0
- package/v2Containers/Line/Container/ImageCarousel/constants.js +10 -0
- package/v2Containers/Line/Container/ImageCarousel/index.js +526 -0
- package/v2Containers/Line/Container/ImageCarousel/messages.js +178 -0
- package/v2Containers/Line/Container/ImageCarousel/style.js +61 -0
- package/v2Containers/Line/Container/ImageMap/constants.js +2 -1
- package/v2Containers/Line/Container/ImageMap/index.js +31 -6
- package/v2Containers/Line/Container/ImageMap/messages.js +12 -0
- package/v2Containers/Line/Container/Wrapper/index.js +5 -1
- package/v2Containers/Line/Container/Wrapper/messages.js +4 -0
- package/v2Containers/Line/Container/Wrapper/utils.js +15 -16
- package/v2Containers/Line/Container/_lineCreate.scss +2 -2
- package/v2Containers/Line/Container/actions.js +4 -2
- package/v2Containers/Line/Container/constants.js +3 -0
- package/v2Containers/Line/Container/index.js +49 -11
- package/v2Containers/Line/Container/reducer.js +2 -2
- package/v2Containers/Line/Container/sagas.js +2 -2
- package/v2Containers/Line/Container/style.js +2 -1
- package/v2Containers/TagList/index.js +0 -6
- package/v2Containers/Templates/_templates.scss +9 -0
- package/v2Containers/Templates/actions.js +117 -122
- package/v2Containers/Templates/constants.js +47 -49
- package/v2Containers/Templates/index.js +47 -36
- package/v2Containers/Templates/messages.js +4 -8
- package/v2Containers/Templates/reducer.js +145 -153
- package/v2Containers/Templates/sagas.js +179 -179
- package/v2Containers/Templates/selectors.js +1 -19
- package/v2Containers/Templates/tests/actions.test.js +18 -18
- package/v2Containers/Templates/tests/index.test.js +10 -10
- package/v2Containers/Templates/tests/reducer.test.js +9 -9
- package/v2Containers/Templates/tests/sagas.test.js +15 -15
- package/v2Containers/Templates/tests/selectors.test.js +10 -10
- package/v2Containers/TemplatesV2/TemplatesV2.style.js +29 -29
- package/v2Containers/TemplatesV2/actions.js +16 -16
- package/v2Containers/TemplatesV2/constants.js +10 -10
- package/v2Containers/TemplatesV2/messages.js +61 -61
- package/v2Containers/TemplatesV2/selectors.js +25 -25
- package/v2Containers/TemplatesV2/tests/actions.test.js +18 -18
- package/v2Containers/TemplatesV2/tests/index.test.js +10 -10
- package/v2Containers/TemplatesV2/tests/reducer.test.js +9 -9
- package/v2Containers/TemplatesV2/tests/sagas.test.js +15 -15
- package/v2Containers/TemplatesV2/tests/selectors.test.js +10 -10
- package/v2Components/BeeEditor/index.js +0 -272
- package/v2Components/BeeEditor/index.scss +0 -11
- package/v2Components/BeeEditor/messages.js +0 -47
- package/v2Components/BeeEditor/tests/index.test.js +0 -10
|
@@ -1,153 +1,145 @@
|
|
|
1
|
-
/*
|
|
2
|
-
*
|
|
3
|
-
* Create reducer
|
|
4
|
-
*
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { fromJS } from 'immutable';
|
|
8
|
-
import * as types from './constants';
|
|
9
|
-
|
|
10
|
-
const initialState = fromJS({
|
|
11
|
-
getAllTemplatesInProgress: false,
|
|
12
|
-
templates: [],
|
|
13
|
-
deleteResponse: {},
|
|
14
|
-
deleteTemplateInProgress: false,
|
|
15
|
-
templateError: {},
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
function templatesReducer(state = initialState, action) {
|
|
19
|
-
switch (action.type) {
|
|
20
|
-
case types.DEFAULT_ACTION:
|
|
21
|
-
return state;
|
|
22
|
-
case types.GET_ALL_TEMPLATES_REQUEST:
|
|
23
|
-
return state.set('getAllTemplatesInProgress', true).set('templateError', {});
|
|
24
|
-
case types.GET_ALL_TEMPLATES_SUCCESS:
|
|
25
|
-
if (action.isReset) {
|
|
26
|
-
return state.set('getAllTemplatesInProgress', false)
|
|
27
|
-
.set('templates', action.data ? action.data.templates : [])
|
|
28
|
-
.set('isSearch', action.data ? action.data.search : false)
|
|
29
|
-
.set('weCRMtemplates', action.weCRMTemplate ? action.weCRMTemplate : []).set('templateError', {});
|
|
30
|
-
}
|
|
31
|
-
return state.set('getAllTemplatesInProgress', false)
|
|
32
|
-
.set('templates', action.data ? state.get('templates').concat(action.data.templates) : [])
|
|
33
|
-
.set('isSearch', action.data ? action.data.search : false)
|
|
34
|
-
.set('weCRMtemplates', action.weCRMTemplate ? state.get('weCRMtemplates').concat(action.weCRMTemplate) : []);
|
|
35
|
-
case types.GET_ALL_TEMPLATES_FAILURE:
|
|
36
|
-
return state.set('getAllTemplatesInProgress', false).set('templateError', action.error);
|
|
37
|
-
case types.DELETE_TEMPLATE_REQUEST:
|
|
38
|
-
return state.set('deleteTemplateInProgress', true);
|
|
39
|
-
case types.DELETE_TEMPLATE_SUCCESS:
|
|
40
|
-
return state.set('deleteTemplateInProgress', false)
|
|
41
|
-
.set('deleteResponse', action.data);
|
|
42
|
-
case types.DELETE_TEMPLATE_FAILURE:
|
|
43
|
-
return state.set('deleteTemplateInProgress', false);
|
|
44
|
-
case types.GET_USER_LIST_REQUEST:
|
|
45
|
-
return state
|
|
46
|
-
.set('fetchingUserList', true)
|
|
47
|
-
.set('userList', fromJS({}))
|
|
48
|
-
.set('userListFetchError', false);
|
|
49
|
-
case types.GET_USER_LIST_SUCCESS:
|
|
50
|
-
return state
|
|
51
|
-
.set('fetchingUserList', false)
|
|
52
|
-
.set('userList', fromJS(action.data))
|
|
53
|
-
.set('userListFetchError', false);
|
|
54
|
-
case types.GET_USER_LIST_FAILURE:
|
|
55
|
-
return state
|
|
56
|
-
.set('fetchingUserList', false)
|
|
57
|
-
.set('userList', fromJS({}))
|
|
58
|
-
.set('userListFetchError', true);
|
|
59
|
-
case types.GET_WECRM_ACCOUNTS_REQUEST:
|
|
60
|
-
return state
|
|
61
|
-
.set('fetchingWeCrmAccounts', true)
|
|
62
|
-
.set('weCrmAccountFetchingError', false);
|
|
63
|
-
case types.GET_WECRM_ACCOUNTS_SUCCESS:
|
|
64
|
-
return state
|
|
65
|
-
.set('fetchingWeCrmAccounts', false)
|
|
66
|
-
.set('weCrmAccounts', fromJS(action.data));
|
|
67
|
-
case types.GET_WECRM_ACCOUNTS_FAILURE:
|
|
68
|
-
return state
|
|
69
|
-
.set('fetchingWeCrmAccounts', false)
|
|
70
|
-
.set('weCrmAccountFetchingError', true);
|
|
71
|
-
case types.SET_WECHAT_ACCOUNT:
|
|
72
|
-
return state
|
|
73
|
-
.set('selectedWeChatAccount', fromJS(action.weChatAccount));
|
|
74
|
-
case types.SET_LINE_ACCOUNT:
|
|
75
|
-
return state.set('selectedLineAccount', fromJS(action.lineAccount));
|
|
76
|
-
case types.RESET_ACCOUNT:
|
|
77
|
-
return state
|
|
78
|
-
.remove('selectedWeChatAccount')
|
|
79
|
-
.remove('weCrmAccounts');
|
|
80
|
-
case types.RESET_TEMPLATE:
|
|
81
|
-
return state
|
|
82
|
-
.set('weCRMtemplates', fromJS([]))
|
|
83
|
-
.set('weChatDefaultTemplate', fromJS([]))
|
|
84
|
-
.set('templates', []);
|
|
85
|
-
case types.SET_SELECTED_LAYOUT:
|
|
86
|
-
return state
|
|
87
|
-
.set('selectedEmailLayout', fromJS(action.selectedTemplate))
|
|
88
|
-
.set('edmTemplate', fromJS({}))
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
.set('
|
|
96
|
-
.set('
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
.set('
|
|
101
|
-
.set('
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
.set('
|
|
107
|
-
.set('
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
case types.
|
|
111
|
-
return state.set('getCmsTemplatesInProgress',
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
case types.
|
|
116
|
-
return state
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
.set('
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
.set('
|
|
131
|
-
.set('templateDetails', fromJS(
|
|
132
|
-
case types.
|
|
133
|
-
return state
|
|
134
|
-
.set('getTemplateDetailsInProgress',
|
|
135
|
-
.set('templateDetails', fromJS({}));
|
|
136
|
-
case types.
|
|
137
|
-
return state
|
|
138
|
-
.set('
|
|
139
|
-
.set('
|
|
140
|
-
|
|
141
|
-
return state
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
.set('templates', [])
|
|
147
|
-
.set('weCRMtemplates', fromJS({}));
|
|
148
|
-
default:
|
|
149
|
-
return state;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export default templatesReducer;
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* Create reducer
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { fromJS } from 'immutable';
|
|
8
|
+
import * as types from './constants';
|
|
9
|
+
|
|
10
|
+
const initialState = fromJS({
|
|
11
|
+
getAllTemplatesInProgress: false,
|
|
12
|
+
templates: [],
|
|
13
|
+
deleteResponse: {},
|
|
14
|
+
deleteTemplateInProgress: false,
|
|
15
|
+
templateError: {},
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
function templatesReducer(state = initialState, action) {
|
|
19
|
+
switch (action.type) {
|
|
20
|
+
case types.DEFAULT_ACTION:
|
|
21
|
+
return state;
|
|
22
|
+
case types.GET_ALL_TEMPLATES_REQUEST:
|
|
23
|
+
return state.set('getAllTemplatesInProgress', true).set('templateError', {});
|
|
24
|
+
case types.GET_ALL_TEMPLATES_SUCCESS:
|
|
25
|
+
if (action.isReset) {
|
|
26
|
+
return state.set('getAllTemplatesInProgress', false)
|
|
27
|
+
.set('templates', action.data ? action.data.templates : [])
|
|
28
|
+
.set('isSearch', action.data ? action.data.search : false)
|
|
29
|
+
.set('weCRMtemplates', action.weCRMTemplate ? action.weCRMTemplate : []).set('templateError', {});
|
|
30
|
+
}
|
|
31
|
+
return state.set('getAllTemplatesInProgress', false)
|
|
32
|
+
.set('templates', action.data ? state.get('templates').concat(action.data.templates) : [])
|
|
33
|
+
.set('isSearch', action.data ? action.data.search : false)
|
|
34
|
+
.set('weCRMtemplates', action.weCRMTemplate ? state.get('weCRMtemplates').concat(action.weCRMTemplate) : []);
|
|
35
|
+
case types.GET_ALL_TEMPLATES_FAILURE:
|
|
36
|
+
return state.set('getAllTemplatesInProgress', false).set('templateError', action.error);
|
|
37
|
+
case types.DELETE_TEMPLATE_REQUEST:
|
|
38
|
+
return state.set('deleteTemplateInProgress', true);
|
|
39
|
+
case types.DELETE_TEMPLATE_SUCCESS:
|
|
40
|
+
return state.set('deleteTemplateInProgress', false)
|
|
41
|
+
.set('deleteResponse', action.data);
|
|
42
|
+
case types.DELETE_TEMPLATE_FAILURE:
|
|
43
|
+
return state.set('deleteTemplateInProgress', false);
|
|
44
|
+
case types.GET_USER_LIST_REQUEST:
|
|
45
|
+
return state
|
|
46
|
+
.set('fetchingUserList', true)
|
|
47
|
+
.set('userList', fromJS({}))
|
|
48
|
+
.set('userListFetchError', false);
|
|
49
|
+
case types.GET_USER_LIST_SUCCESS:
|
|
50
|
+
return state
|
|
51
|
+
.set('fetchingUserList', false)
|
|
52
|
+
.set('userList', fromJS(action.data))
|
|
53
|
+
.set('userListFetchError', false);
|
|
54
|
+
case types.GET_USER_LIST_FAILURE:
|
|
55
|
+
return state
|
|
56
|
+
.set('fetchingUserList', false)
|
|
57
|
+
.set('userList', fromJS({}))
|
|
58
|
+
.set('userListFetchError', true);
|
|
59
|
+
case types.GET_WECRM_ACCOUNTS_REQUEST:
|
|
60
|
+
return state
|
|
61
|
+
.set('fetchingWeCrmAccounts', true)
|
|
62
|
+
.set('weCrmAccountFetchingError', false);
|
|
63
|
+
case types.GET_WECRM_ACCOUNTS_SUCCESS:
|
|
64
|
+
return state
|
|
65
|
+
.set('fetchingWeCrmAccounts', false)
|
|
66
|
+
.set('weCrmAccounts', fromJS(action.data));
|
|
67
|
+
case types.GET_WECRM_ACCOUNTS_FAILURE:
|
|
68
|
+
return state
|
|
69
|
+
.set('fetchingWeCrmAccounts', false)
|
|
70
|
+
.set('weCrmAccountFetchingError', true);
|
|
71
|
+
case types.SET_WECHAT_ACCOUNT:
|
|
72
|
+
return state
|
|
73
|
+
.set('selectedWeChatAccount', fromJS(action.weChatAccount));
|
|
74
|
+
case types.SET_LINE_ACCOUNT:
|
|
75
|
+
return state.set('selectedLineAccount', fromJS(action.lineAccount));
|
|
76
|
+
case types.RESET_ACCOUNT:
|
|
77
|
+
return state
|
|
78
|
+
.remove('selectedWeChatAccount')
|
|
79
|
+
.remove('weCrmAccounts');
|
|
80
|
+
case types.RESET_TEMPLATE:
|
|
81
|
+
return state
|
|
82
|
+
.set('weCRMtemplates', fromJS([]))
|
|
83
|
+
.set('weChatDefaultTemplate', fromJS([]))
|
|
84
|
+
.set('templates', []);
|
|
85
|
+
case types.SET_SELECTED_LAYOUT:
|
|
86
|
+
return state
|
|
87
|
+
.set('selectedEmailLayout', fromJS(action.selectedTemplate))
|
|
88
|
+
.set('edmTemplate', fromJS({}));
|
|
89
|
+
case types.RESET_UPLOAD_DATA:
|
|
90
|
+
return state
|
|
91
|
+
.set('selectedEmailLayout', "");
|
|
92
|
+
case types.SEND_ZIPPED_FILE_REQUEST:
|
|
93
|
+
return state
|
|
94
|
+
.set('sendingFile', true)
|
|
95
|
+
.set('errorSendingFile', false)
|
|
96
|
+
.set('selectedEmailLayout', "");
|
|
97
|
+
case types.SEND_ZIPPED_FILE_SUCCESS:
|
|
98
|
+
return state
|
|
99
|
+
.set('sendingFile', false)
|
|
100
|
+
.set('selectedEmailLayout', fromJS(action.selectedTemplate))
|
|
101
|
+
.set('edmTemplate', fromJS({}));
|
|
102
|
+
case types.SEND_ZIPPED_FILE_FAILURE:
|
|
103
|
+
return state
|
|
104
|
+
.set('sendingFile', false)
|
|
105
|
+
.set('errorSendingFile', true)
|
|
106
|
+
.set('errorMessage', action.data)
|
|
107
|
+
.set('selectedEmailLayout', "");
|
|
108
|
+
case types.GET_EDM_DEAFULT_TEMPLATES_REQUEST:
|
|
109
|
+
return state.set('getCmsTemplatesInProgress', true);
|
|
110
|
+
case types.GET_EDM_DEAFULT_TEMPLATES_SUCCESS:
|
|
111
|
+
return state.set('getCmsTemplatesInProgress', false)
|
|
112
|
+
.set('cmsTemplates', action.data ? fromJS(action.data.templates) : []);
|
|
113
|
+
case types.GET_EDM_DEAFULT_TEMPLATES_FAILURE:
|
|
114
|
+
return state.set('getCmsTemplatesInProgress', false);
|
|
115
|
+
case types.SET_EDM_TEMPLATE:
|
|
116
|
+
return state
|
|
117
|
+
.set('edmTemplate', fromJS(action.template))
|
|
118
|
+
.set('selectedEmailLayout', "");
|
|
119
|
+
case types.RESET_TEMPLATE_DATA:
|
|
120
|
+
return state
|
|
121
|
+
.set('edmTemplate', fromJS({}))
|
|
122
|
+
.set('selectedEmailLayout', "")
|
|
123
|
+
.set('templateDetails', fromJS({}));
|
|
124
|
+
case types.GET_TEMPLATE_DETAILS_REQUEST:
|
|
125
|
+
return state
|
|
126
|
+
.set('getTemplateDetailsInProgress', true)
|
|
127
|
+
.set('templateDetails', fromJS({}));
|
|
128
|
+
case types.GET_TEMPLATE_DETAILS_SUCCESS:
|
|
129
|
+
return state
|
|
130
|
+
.set('getTemplateDetailsInProgress', false)
|
|
131
|
+
.set('templateDetails', fromJS(action.data));
|
|
132
|
+
case types.GET_TEMPLATE_DETAILS_FAILURE:
|
|
133
|
+
return state
|
|
134
|
+
.set('getTemplateDetailsInProgress', false)
|
|
135
|
+
.set('templateDetails', fromJS({}));
|
|
136
|
+
case types.CLEAR_TEMPLATE_STORE_DATA:
|
|
137
|
+
return state
|
|
138
|
+
.set('templates', [])
|
|
139
|
+
.set('weCRMtemplates', fromJS({}));
|
|
140
|
+
default:
|
|
141
|
+
return state;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export default templatesReducer;
|
|
@@ -1,179 +1,179 @@
|
|
|
1
|
-
import { call, put, takeLatest, take, cancel } from 'redux-saga/effects';
|
|
2
|
-
import { LOCATION_CHANGE } from 'react-router-redux';
|
|
3
|
-
// import { schema, normalize } from 'normalizr';
|
|
4
|
-
import * as Api from '../../services/api';
|
|
5
|
-
import * as types from './constants';
|
|
6
|
-
|
|
7
|
-
// Individual exports for testing
|
|
8
|
-
export function* getAllTemplates(channel, queryParams) {
|
|
9
|
-
try {
|
|
10
|
-
const result = yield call(Api.getAllTemplates, channel, queryParams);
|
|
11
|
-
const channelTemplates = (channel.channel === 'wechat') ? {templates: [...result.response.mapped, ...result.response.richmedia]} : result.response;
|
|
12
|
-
// const sidebar = result.response.sidebar;
|
|
13
|
-
if (channel.channel === 'wechat' && channel.queryParams && channel.queryParams.sortBy && channel.queryParams.sortBy.toLocaleLowerCase() === ("Most Recent").toLocaleLowerCase()) {
|
|
14
|
-
channelTemplates.templates.sort((a, b) => {
|
|
15
|
-
const dateA = new Date(a.updatedAt);
|
|
16
|
-
const dateB = new Date(b.updatedAt);
|
|
17
|
-
return dateB - dateA;
|
|
18
|
-
});
|
|
19
|
-
} else if (channel.channel === 'wechat' && channel.queryParams && channel.queryParams.sortBy && channel.queryParams.sortBy.toLocaleLowerCase() === ("Alphabetically").toLocaleLowerCase()) {
|
|
20
|
-
channelTemplates.templates.sort((a, b) => b.name - a.name);
|
|
21
|
-
}
|
|
22
|
-
yield put({ type: types.GET_ALL_TEMPLATES_SUCCESS, data: channelTemplates, weCRMTemplate: result.response.unMapped, isReset: channel.queryParams.page === 1 });
|
|
23
|
-
} catch (error) {
|
|
24
|
-
yield put({ type: types.GET_ALL_TEMPLATES_FAILURE, error });
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function* deleteTemplate(channel, id) {
|
|
29
|
-
try {
|
|
30
|
-
const result = yield call(Api.deleteTemplate, channel, id);
|
|
31
|
-
// const sidebar = result.response.sidebar;
|
|
32
|
-
yield put({ type: types.DELETE_TEMPLATE_SUCCESS, data: result.response });
|
|
33
|
-
} catch (error) {
|
|
34
|
-
yield put({ type: types.DELETE_TEMPLATE_FAILURE, error });
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export function* fetchUserList() {
|
|
39
|
-
try {
|
|
40
|
-
const result = yield call(Api.getUserList);
|
|
41
|
-
yield [
|
|
42
|
-
put({
|
|
43
|
-
type: types.GET_USER_LIST_SUCCESS,
|
|
44
|
-
data: result.data.result,
|
|
45
|
-
}),
|
|
46
|
-
];
|
|
47
|
-
} catch (error) {
|
|
48
|
-
yield [
|
|
49
|
-
put({
|
|
50
|
-
type: types.GET_USER_LIST_FAILURE,
|
|
51
|
-
data: error,
|
|
52
|
-
}),
|
|
53
|
-
];
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export function* fetchWeCrmAccounts(action) {
|
|
58
|
-
try {
|
|
59
|
-
const result = yield call(Api.fetchWeCrmAccounts, action.source);
|
|
60
|
-
yield [
|
|
61
|
-
put({
|
|
62
|
-
type: types.GET_WECRM_ACCOUNTS_SUCCESS,
|
|
63
|
-
data: result.response,
|
|
64
|
-
}),
|
|
65
|
-
];
|
|
66
|
-
} catch (error) {
|
|
67
|
-
yield [
|
|
68
|
-
put({
|
|
69
|
-
type: types.GET_WECRM_ACCOUNTS_FAILURE,
|
|
70
|
-
data: error,
|
|
71
|
-
}),
|
|
72
|
-
];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export function* sendZippedFile({selectedFile, errorHandler, successHandler}) {
|
|
77
|
-
let errorMessage = "";
|
|
78
|
-
try {
|
|
79
|
-
const result = yield call(Api.sendZippedFile, selectedFile);
|
|
80
|
-
if (result.status.isError) {
|
|
81
|
-
errorMessage = result.message;
|
|
82
|
-
yield errorHandler(errorMessage);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
console.log("Got Result ", result);
|
|
86
|
-
console.log("Got decoded result", decodeURIComponent(result.response.metaEntity.htmlContent));
|
|
87
|
-
yield [
|
|
88
|
-
put({
|
|
89
|
-
type: types.SEND_ZIPPED_FILE_SUCCESS,
|
|
90
|
-
selectedTemplate: decodeURIComponent(result.response.metaEntity.htmlContent),
|
|
91
|
-
}),
|
|
92
|
-
];
|
|
93
|
-
yield successHandler();
|
|
94
|
-
} catch (error) {
|
|
95
|
-
yield errorHandler();
|
|
96
|
-
yield [
|
|
97
|
-
put({
|
|
98
|
-
type: types.SEND_ZIPPED_FILE_FAILURE,
|
|
99
|
-
data: errorMessage,
|
|
100
|
-
}),
|
|
101
|
-
];
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export function*
|
|
106
|
-
try {
|
|
107
|
-
console.log('saga getAllTemplates');
|
|
108
|
-
const result = yield call(Api.
|
|
109
|
-
const edmTemplates = result.response;
|
|
110
|
-
yield put({ type: types.
|
|
111
|
-
} catch (error) {
|
|
112
|
-
yield put({ type: types.
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export function* getTemplateDetails(id, channel) {
|
|
117
|
-
try {
|
|
118
|
-
console.log('saga get Template details', id);
|
|
119
|
-
const result = yield call(Api.getTemplateDetails, id, channel);
|
|
120
|
-
// const sidebar = result.response.sidebar;
|
|
121
|
-
yield put({ type: types.GET_TEMPLATE_DETAILS_SUCCESS, data: result.response });
|
|
122
|
-
} catch (error) {
|
|
123
|
-
yield put({ type: types.GET_TEMPLATE_DETAILS_FAILURE, error });
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
function* watchGetAllTemplates() {
|
|
128
|
-
const watcher = yield takeLatest(types.GET_ALL_TEMPLATES_REQUEST, getAllTemplates);
|
|
129
|
-
yield take(LOCATION_CHANGE);
|
|
130
|
-
yield cancel(watcher);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function* watchDeleteTemplate() {
|
|
134
|
-
const watcher = yield takeLatest(types.DELETE_TEMPLATE_REQUEST, deleteTemplate);
|
|
135
|
-
yield take(LOCATION_CHANGE);
|
|
136
|
-
yield cancel(watcher);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
function* watchGetUserList() {
|
|
140
|
-
const watcher = yield takeLatest(types.GET_USER_LIST_REQUEST, fetchUserList);
|
|
141
|
-
yield take(LOCATION_CHANGE);
|
|
142
|
-
yield cancel(watcher);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
function* watchFetchWeCrmAccounts() {
|
|
146
|
-
console.log('watching wecrm accounts');
|
|
147
|
-
const watcher = yield takeLatest(types.GET_WECRM_ACCOUNTS_REQUEST, fetchWeCrmAccounts);
|
|
148
|
-
yield take(LOCATION_CHANGE);
|
|
149
|
-
yield cancel(watcher);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
function* watchSendingFile() {
|
|
153
|
-
const watcher = yield takeLatest(types.SEND_ZIPPED_FILE_REQUEST, sendZippedFile);
|
|
154
|
-
yield take(LOCATION_CHANGE);
|
|
155
|
-
yield cancel(watcher);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
function*
|
|
159
|
-
const watcher = yield takeLatest(types.
|
|
160
|
-
yield take(LOCATION_CHANGE);
|
|
161
|
-
yield cancel(watcher);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function* watchGetTemplateDetails() {
|
|
165
|
-
const watcher = yield takeLatest(types.GET_TEMPLATE_DETAILS_REQUEST, getTemplateDetails);
|
|
166
|
-
yield take(LOCATION_CHANGE);
|
|
167
|
-
yield cancel(watcher);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// All sagas to be loaded
|
|
171
|
-
export default [
|
|
172
|
-
watchGetAllTemplates,
|
|
173
|
-
watchDeleteTemplate,
|
|
174
|
-
watchGetUserList,
|
|
175
|
-
watchFetchWeCrmAccounts,
|
|
176
|
-
watchSendingFile,
|
|
177
|
-
|
|
178
|
-
watchGetTemplateDetails,
|
|
179
|
-
];
|
|
1
|
+
import { call, put, takeLatest, take, cancel } from 'redux-saga/effects';
|
|
2
|
+
import { LOCATION_CHANGE } from 'react-router-redux';
|
|
3
|
+
// import { schema, normalize } from 'normalizr';
|
|
4
|
+
import * as Api from '../../services/api';
|
|
5
|
+
import * as types from './constants';
|
|
6
|
+
|
|
7
|
+
// Individual exports for testing
|
|
8
|
+
export function* getAllTemplates(channel, queryParams) {
|
|
9
|
+
try {
|
|
10
|
+
const result = yield call(Api.getAllTemplates, channel, queryParams);
|
|
11
|
+
const channelTemplates = (channel.channel === 'wechat') ? {templates: [...result.response.mapped, ...result.response.richmedia]} : result.response;
|
|
12
|
+
// const sidebar = result.response.sidebar;
|
|
13
|
+
if (channel.channel === 'wechat' && channel.queryParams && channel.queryParams.sortBy && channel.queryParams.sortBy.toLocaleLowerCase() === ("Most Recent").toLocaleLowerCase()) {
|
|
14
|
+
channelTemplates.templates.sort((a, b) => {
|
|
15
|
+
const dateA = new Date(a.updatedAt);
|
|
16
|
+
const dateB = new Date(b.updatedAt);
|
|
17
|
+
return dateB - dateA;
|
|
18
|
+
});
|
|
19
|
+
} else if (channel.channel === 'wechat' && channel.queryParams && channel.queryParams.sortBy && channel.queryParams.sortBy.toLocaleLowerCase() === ("Alphabetically").toLocaleLowerCase()) {
|
|
20
|
+
channelTemplates.templates.sort((a, b) => b.name - a.name);
|
|
21
|
+
}
|
|
22
|
+
yield put({ type: types.GET_ALL_TEMPLATES_SUCCESS, data: channelTemplates, weCRMTemplate: result.response.unMapped, isReset: channel.queryParams.page === 1 });
|
|
23
|
+
} catch (error) {
|
|
24
|
+
yield put({ type: types.GET_ALL_TEMPLATES_FAILURE, error });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function* deleteTemplate(channel, id) {
|
|
29
|
+
try {
|
|
30
|
+
const result = yield call(Api.deleteTemplate, channel, id);
|
|
31
|
+
// const sidebar = result.response.sidebar;
|
|
32
|
+
yield put({ type: types.DELETE_TEMPLATE_SUCCESS, data: result.response });
|
|
33
|
+
} catch (error) {
|
|
34
|
+
yield put({ type: types.DELETE_TEMPLATE_FAILURE, error });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function* fetchUserList() {
|
|
39
|
+
try {
|
|
40
|
+
const result = yield call(Api.getUserList);
|
|
41
|
+
yield [
|
|
42
|
+
put({
|
|
43
|
+
type: types.GET_USER_LIST_SUCCESS,
|
|
44
|
+
data: result.data.result,
|
|
45
|
+
}),
|
|
46
|
+
];
|
|
47
|
+
} catch (error) {
|
|
48
|
+
yield [
|
|
49
|
+
put({
|
|
50
|
+
type: types.GET_USER_LIST_FAILURE,
|
|
51
|
+
data: error,
|
|
52
|
+
}),
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function* fetchWeCrmAccounts(action) {
|
|
58
|
+
try {
|
|
59
|
+
const result = yield call(Api.fetchWeCrmAccounts, action.source);
|
|
60
|
+
yield [
|
|
61
|
+
put({
|
|
62
|
+
type: types.GET_WECRM_ACCOUNTS_SUCCESS,
|
|
63
|
+
data: result.response,
|
|
64
|
+
}),
|
|
65
|
+
];
|
|
66
|
+
} catch (error) {
|
|
67
|
+
yield [
|
|
68
|
+
put({
|
|
69
|
+
type: types.GET_WECRM_ACCOUNTS_FAILURE,
|
|
70
|
+
data: error,
|
|
71
|
+
}),
|
|
72
|
+
];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function* sendZippedFile({selectedFile, errorHandler, successHandler}) {
|
|
77
|
+
let errorMessage = "";
|
|
78
|
+
try {
|
|
79
|
+
const result = yield call(Api.sendZippedFile, selectedFile);
|
|
80
|
+
if (result.status.isError) {
|
|
81
|
+
errorMessage = result.message;
|
|
82
|
+
yield errorHandler(errorMessage);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
console.log("Got Result ", result);
|
|
86
|
+
console.log("Got decoded result", decodeURIComponent(result.response.metaEntity.htmlContent));
|
|
87
|
+
yield [
|
|
88
|
+
put({
|
|
89
|
+
type: types.SEND_ZIPPED_FILE_SUCCESS,
|
|
90
|
+
selectedTemplate: decodeURIComponent(result.response.metaEntity.htmlContent),
|
|
91
|
+
}),
|
|
92
|
+
];
|
|
93
|
+
yield successHandler();
|
|
94
|
+
} catch (error) {
|
|
95
|
+
yield errorHandler();
|
|
96
|
+
yield [
|
|
97
|
+
put({
|
|
98
|
+
type: types.SEND_ZIPPED_FILE_FAILURE,
|
|
99
|
+
data: errorMessage,
|
|
100
|
+
}),
|
|
101
|
+
];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function* getEdmTemplates() {
|
|
106
|
+
try {
|
|
107
|
+
console.log('saga getAllTemplates');
|
|
108
|
+
const result = yield call(Api.getEdmTemplates);
|
|
109
|
+
const edmTemplates = result.response;
|
|
110
|
+
yield put({ type: types.GET_EDM_DEAFULT_TEMPLATES_SUCCESS, data: edmTemplates });
|
|
111
|
+
} catch (error) {
|
|
112
|
+
yield put({ type: types.GET_EDM_DEAFULT_TEMPLATES_FAILURE, error });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function* getTemplateDetails(id, channel) {
|
|
117
|
+
try {
|
|
118
|
+
console.log('saga get Template details', id);
|
|
119
|
+
const result = yield call(Api.getTemplateDetails, id, channel);
|
|
120
|
+
// const sidebar = result.response.sidebar;
|
|
121
|
+
yield put({ type: types.GET_TEMPLATE_DETAILS_SUCCESS, data: result.response });
|
|
122
|
+
} catch (error) {
|
|
123
|
+
yield put({ type: types.GET_TEMPLATE_DETAILS_FAILURE, error });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function* watchGetAllTemplates() {
|
|
128
|
+
const watcher = yield takeLatest(types.GET_ALL_TEMPLATES_REQUEST, getAllTemplates);
|
|
129
|
+
yield take(LOCATION_CHANGE);
|
|
130
|
+
yield cancel(watcher);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function* watchDeleteTemplate() {
|
|
134
|
+
const watcher = yield takeLatest(types.DELETE_TEMPLATE_REQUEST, deleteTemplate);
|
|
135
|
+
yield take(LOCATION_CHANGE);
|
|
136
|
+
yield cancel(watcher);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function* watchGetUserList() {
|
|
140
|
+
const watcher = yield takeLatest(types.GET_USER_LIST_REQUEST, fetchUserList);
|
|
141
|
+
yield take(LOCATION_CHANGE);
|
|
142
|
+
yield cancel(watcher);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function* watchFetchWeCrmAccounts() {
|
|
146
|
+
console.log('watching wecrm accounts');
|
|
147
|
+
const watcher = yield takeLatest(types.GET_WECRM_ACCOUNTS_REQUEST, fetchWeCrmAccounts);
|
|
148
|
+
yield take(LOCATION_CHANGE);
|
|
149
|
+
yield cancel(watcher);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function* watchSendingFile() {
|
|
153
|
+
const watcher = yield takeLatest(types.SEND_ZIPPED_FILE_REQUEST, sendZippedFile);
|
|
154
|
+
yield take(LOCATION_CHANGE);
|
|
155
|
+
yield cancel(watcher);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function* watchGetEdmDefaultTemplates() {
|
|
159
|
+
const watcher = yield takeLatest(types.GET_EDM_DEAFULT_TEMPLATES_REQUEST, getEdmTemplates);
|
|
160
|
+
yield take(LOCATION_CHANGE);
|
|
161
|
+
yield cancel(watcher);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function* watchGetTemplateDetails() {
|
|
165
|
+
const watcher = yield takeLatest(types.GET_TEMPLATE_DETAILS_REQUEST, getTemplateDetails);
|
|
166
|
+
yield take(LOCATION_CHANGE);
|
|
167
|
+
yield cancel(watcher);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// All sagas to be loaded
|
|
171
|
+
export default [
|
|
172
|
+
watchGetAllTemplates,
|
|
173
|
+
watchDeleteTemplate,
|
|
174
|
+
watchGetUserList,
|
|
175
|
+
watchFetchWeCrmAccounts,
|
|
176
|
+
watchSendingFile,
|
|
177
|
+
watchGetEdmDefaultTemplates,
|
|
178
|
+
watchGetTemplateDetails,
|
|
179
|
+
];
|