@capillarytech/creatives-library 6.8.8 → 6.9.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.
Files changed (101) hide show
  1. package/components/CapTagList/index.js +1 -1
  2. package/components/Edmeditor/index.js +1 -1
  3. package/components/FormBuilder/index.js +0 -1
  4. package/components/TemplatePreview/_templatePreview.scss +0 -6
  5. package/components/TemplatePreview/index.js +28 -35
  6. package/config/app.js +1 -1
  7. package/containers/TagList/index.js +3 -3
  8. package/index.html +5 -0
  9. package/package.json +2 -1
  10. package/services/api.js +16 -1
  11. package/v2Components/BeeEditor/index.js +278 -0
  12. package/v2Components/BeeEditor/index.scss +11 -0
  13. package/v2Components/BeeEditor/messages.js +47 -0
  14. package/v2Components/BeeEditor/tests/index.test.js +10 -0
  15. package/v2Components/CapTagList/index.js +55 -26
  16. package/v2Components/CmsTemplatesComponent/index.js +4 -4
  17. package/v2Components/Edmeditor/index.js +1 -1
  18. package/v2Components/EmailPreview/_emailPreview.scss +2 -2
  19. package/v2Components/FormBuilder/index.js +117 -43
  20. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +151 -151
  21. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +33 -33
  22. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/tests/index.test.js +10 -10
  23. package/v2Components/TemplatePreview/_templatePreview.scss +0 -1
  24. package/v2Components/TemplatePreview/assets/images/androidPushMessage.svg +44 -44
  25. package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +21 -21
  26. package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +16 -16
  27. package/v2Components/TemplatePreview/assets/images/iPhonePushMessage.svg +134 -134
  28. package/v2Components/TemplatePreview/assets/images/mobile.svg +23 -23
  29. package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -22
  30. package/v2Components/TemplatePreview/assets/images/user-icon.svg +18 -18
  31. package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +21 -21
  32. package/v2Components/TemplatePreview/assets/images/wechat-mobile.svg +77 -77
  33. package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -20
  34. package/v2Components/TemplatePreview/index.js +29 -36
  35. package/v2Components/TemplatePreview/tests/index.test.js +10 -10
  36. package/v2Containers/CreativesContainer/SlideBoxContent.js +1 -7
  37. package/v2Containers/CreativesContainer/SlideBoxFooter.js +51 -51
  38. package/v2Containers/CreativesContainer/actions.js +27 -27
  39. package/v2Containers/CreativesContainer/constants.js +17 -17
  40. package/v2Containers/CreativesContainer/index.js +7 -2
  41. package/v2Containers/CreativesContainer/index.scss +44 -44
  42. package/v2Containers/CreativesContainer/messages.js +305 -305
  43. package/v2Containers/CreativesContainer/reducer.js +29 -29
  44. package/v2Containers/CreativesContainer/sagas.js +11 -11
  45. package/v2Containers/CreativesContainer/selectors.js +30 -30
  46. package/v2Containers/CreativesContainer/tests/actions.test.js +18 -18
  47. package/v2Containers/CreativesContainer/tests/index.test.js +10 -10
  48. package/v2Containers/CreativesContainer/tests/reducer.test.js +9 -9
  49. package/v2Containers/CreativesContainer/tests/sagas.test.js +15 -15
  50. package/v2Containers/CreativesContainer/tests/selectors.test.js +10 -10
  51. package/v2Containers/Email/constants.js +1 -0
  52. package/v2Containers/Email/index.js +210 -108
  53. package/v2Containers/Email/initialSchema.js +18 -3
  54. package/v2Containers/Email/sagas.js +2 -2
  55. package/v2Containers/Email/selectors.js +5 -0
  56. package/v2Containers/EmailWrapper/index.js +19 -3
  57. package/v2Containers/Line/Container/Image/index.js +19 -21
  58. package/v2Containers/Line/Container/ImageMap/constants.js +1 -2
  59. package/v2Containers/Line/Container/ImageMap/index.js +6 -31
  60. package/v2Containers/Line/Container/ImageMap/messages.js +0 -12
  61. package/v2Containers/Line/Container/Wrapper/index.js +1 -5
  62. package/v2Containers/Line/Container/Wrapper/messages.js +0 -4
  63. package/v2Containers/Line/Container/Wrapper/utils.js +16 -15
  64. package/v2Containers/Line/Container/_lineCreate.scss +2 -2
  65. package/v2Containers/Line/Container/actions.js +2 -4
  66. package/v2Containers/Line/Container/constants.js +0 -3
  67. package/v2Containers/Line/Container/index.js +11 -49
  68. package/v2Containers/Line/Container/reducer.js +2 -2
  69. package/v2Containers/Line/Container/sagas.js +2 -2
  70. package/v2Containers/Line/Container/style.js +1 -2
  71. package/v2Containers/TagList/index.js +6 -0
  72. package/v2Containers/Templates/_templates.scss +0 -9
  73. package/v2Containers/Templates/actions.js +122 -117
  74. package/v2Containers/Templates/constants.js +49 -47
  75. package/v2Containers/Templates/index.js +34 -42
  76. package/v2Containers/Templates/messages.js +8 -4
  77. package/v2Containers/Templates/reducer.js +153 -145
  78. package/v2Containers/Templates/sagas.js +179 -179
  79. package/v2Containers/Templates/selectors.js +19 -1
  80. package/v2Containers/Templates/tests/actions.test.js +18 -18
  81. package/v2Containers/Templates/tests/index.test.js +10 -10
  82. package/v2Containers/Templates/tests/reducer.test.js +9 -9
  83. package/v2Containers/Templates/tests/sagas.test.js +15 -15
  84. package/v2Containers/Templates/tests/selectors.test.js +10 -10
  85. package/v2Containers/TemplatesV2/TemplatesV2.style.js +29 -29
  86. package/v2Containers/TemplatesV2/actions.js +16 -16
  87. package/v2Containers/TemplatesV2/constants.js +10 -10
  88. package/v2Containers/TemplatesV2/messages.js +61 -61
  89. package/v2Containers/TemplatesV2/selectors.js +25 -25
  90. package/v2Containers/TemplatesV2/tests/actions.test.js +18 -18
  91. package/v2Containers/TemplatesV2/tests/index.test.js +10 -10
  92. package/v2Containers/TemplatesV2/tests/reducer.test.js +9 -9
  93. package/v2Containers/TemplatesV2/tests/sagas.test.js +15 -15
  94. package/v2Containers/TemplatesV2/tests/selectors.test.js +10 -10
  95. package/v2Components/Carousel/index.js +0 -120
  96. package/v2Components/Carousel/style.scss +0 -40
  97. package/v2Containers/Line/Container/ImageCarousel/Content.js +0 -554
  98. package/v2Containers/Line/Container/ImageCarousel/constants.js +0 -10
  99. package/v2Containers/Line/Container/ImageCarousel/index.js +0 -526
  100. package/v2Containers/Line/Container/ImageCarousel/messages.js +0 -178
  101. package/v2Containers/Line/Container/ImageCarousel/style.js +0 -61
@@ -1,145 +1,153 @@
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
+ /*
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
+ .set('BEETemplate', fromJS({}));
90
+ case types.RESET_UPLOAD_DATA:
91
+ return state
92
+ .set('selectedEmailLayout', "");
93
+ case types.SEND_ZIPPED_FILE_REQUEST:
94
+ return state
95
+ .set('sendingFile', true)
96
+ .set('errorSendingFile', false)
97
+ .set('selectedEmailLayout', "");
98
+ case types.SEND_ZIPPED_FILE_SUCCESS:
99
+ return state
100
+ .set('sendingFile', false)
101
+ .set('selectedEmailLayout', fromJS(action.selectedTemplate))
102
+ .set('edmTemplate', fromJS({}))
103
+ .set('BEETemplate', fromJS({}));
104
+ case types.SEND_ZIPPED_FILE_FAILURE:
105
+ return state
106
+ .set('sendingFile', false)
107
+ .set('errorSendingFile', true)
108
+ .set('errorMessage', action.data)
109
+ .set('selectedEmailLayout', "");
110
+ case types.GET_DEAFULT_BEE_TEMPLATES_REQUEST:
111
+ return state.set('getCmsTemplatesInProgress', true);
112
+ case types.GET_DEAFULT_BEE_TEMPLATES_SUCCESS:
113
+ return state.set('getCmsTemplatesInProgress', false)
114
+ .set('cmsTemplates', action.data ? fromJS(action.data.templates) : []);
115
+ case types.GET_DEAFULT_BEE_TEMPLATES_FAILURE:
116
+ return state.set('getCmsTemplatesInProgress', false);
117
+ case types.SET_EDM_TEMPLATE:
118
+ return state
119
+ .set('edmTemplate', fromJS(action.template))
120
+ .set('BEETemplate', fromJS(action.template))
121
+ .set('selectedEmailLayout', "");
122
+ case types.SET_BEE_TEMPLATE:
123
+ return state
124
+ .set('BEETemplate', fromJS(action.template))
125
+ .set('selectedEmailLayout', "");
126
+ case types.RESET_TEMPLATE_DATA:
127
+ return state
128
+ .set('edmTemplate', fromJS({}))
129
+ .set('BEETemplate', fromJS({}))
130
+ .set('selectedEmailLayout', "")
131
+ .set('templateDetails', fromJS({}));
132
+ case types.GET_TEMPLATE_DETAILS_REQUEST:
133
+ return state
134
+ .set('getTemplateDetailsInProgress', true)
135
+ .set('templateDetails', fromJS({}));
136
+ case types.GET_TEMPLATE_DETAILS_SUCCESS:
137
+ return state
138
+ .set('getTemplateDetailsInProgress', false)
139
+ .set('templateDetails', fromJS(action.data));
140
+ case types.GET_TEMPLATE_DETAILS_FAILURE:
141
+ return state
142
+ .set('getTemplateDetailsInProgress', false)
143
+ .set('templateDetails', fromJS({}));
144
+ case types.CLEAR_TEMPLATE_STORE_DATA:
145
+ return state
146
+ .set('templates', [])
147
+ .set('weCRMtemplates', fromJS({}));
148
+ default:
149
+ return state;
150
+ }
151
+ }
152
+
153
+ 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* 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
- ];
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* getDefaultBeeTemplates() {
106
+ try {
107
+ console.log('saga getAllTemplates');
108
+ const result = yield call(Api.getDefaultBeeTemplates);
109
+ const edmTemplates = result.response;
110
+ yield put({ type: types.GET_DEAFULT_BEE_TEMPLATES_SUCCESS, data: edmTemplates });
111
+ } catch (error) {
112
+ yield put({ type: types.GET_DEAFULT_BEE_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* watchGetDefaultBeeTemplates() {
159
+ const watcher = yield takeLatest(types.GET_DEAFULT_BEE_TEMPLATES_REQUEST, getDefaultBeeTemplates);
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
+ watchGetDefaultBeeTemplates,
178
+ watchGetTemplateDetails,
179
+ ];