@capillarytech/creatives-library 7.12.1 → 7.12.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/index.js +6 -0
- package/package.json +1 -1
- package/routes.js +7 -2
- package/services/api.js +8 -2
- package/v2Components/CapImageUpload/index.js +24 -11
- package/v2Components/CapImageUpload/index.scss +12 -27
- package/v2Components/CapImageUpload/messages.js +10 -5
- package/v2Components/TemplatePreview/_templatePreview.scss +13 -0
- package/v2Components/TemplatePreview/index.js +41 -1
- package/v2Components/TemplatePreview/tests/__snapshots__/index.test.js.snap +33 -1
- package/v2Components/TemplatePreview/tests/index.test.js +7 -7
- package/v2Containers/App/constants.js +2 -1
- package/v2Containers/Assets/images/addCreativesIllustration.svg +30 -0
- package/v2Containers/Cap/messages.js +20 -1
- package/v2Containers/CreativesContainer/SlideBoxContent.js +57 -11
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -0
- package/v2Containers/CreativesContainer/constants.js +1 -0
- package/v2Containers/CreativesContainer/messages.js +4 -0
- package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +24 -4
- package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +23 -4
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +147 -2
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -0
- package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +71 -0
- package/v2Containers/CreativesContainer/tests/index.test.js +21 -9
- package/v2Containers/Facebook/Advertisement/index.js +4 -2
- package/v2Containers/Rcs/actions.js +57 -0
- package/v2Containers/Rcs/constants.js +50 -0
- package/v2Containers/Rcs/index.js +1064 -0
- package/v2Containers/Rcs/index.scss +72 -0
- package/v2Containers/Rcs/messages.js +122 -0
- package/v2Containers/Rcs/reducer.js +107 -0
- package/v2Containers/Rcs/sagas.js +141 -0
- package/v2Containers/Rcs/selectors.js +8 -0
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +145080 -0
- package/v2Containers/Rcs/tests/index.test.js +226 -0
- package/v2Containers/Rcs/tests/mockData.js +169 -0
- package/v2Containers/Rcs/utils.js +40 -0
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +4 -4
- package/v2Containers/Templates/_templates.scss +9 -1
- package/v2Containers/Templates/actions.js +2 -1
- package/v2Containers/Templates/constants.js +1 -0
- package/v2Containers/Templates/index.js +234 -174
- package/v2Containers/Templates/messages.js +20 -0
- package/v2Containers/Templates/reducer.js +2 -0
- package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +520 -80
- package/v2Containers/TemplatesV2/index.js +2 -1
- package/v2Containers/TemplatesV2/messages.js +4 -0
- package/v2Containers/Whatsapp/index.js +4 -2
- package/v2Containers/Whatsapp/messages.js +0 -13
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +13 -13
- package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +32 -26
- package/v2Containers/mockdata.js +567 -1588
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
@import '~@capillarytech/cap-ui-library/styles/_variables';
|
|
2
|
+
|
|
3
|
+
.cap-rcs-creatives {
|
|
4
|
+
.rcs-scroll-div {
|
|
5
|
+
margin-bottom: 150px;
|
|
6
|
+
}
|
|
7
|
+
.rcs-preview-container {
|
|
8
|
+
.cap-row-v2 {
|
|
9
|
+
position: fixed;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
.rcs-optional-label {
|
|
13
|
+
margin-left: 8px;
|
|
14
|
+
color: $FONT_COLOR_03;
|
|
15
|
+
font-weight: normal;
|
|
16
|
+
}
|
|
17
|
+
.rcs-radio > label.ant-radio-wrapper {
|
|
18
|
+
margin-right: 50px;
|
|
19
|
+
}
|
|
20
|
+
.rcs-dlt-fallback-card {
|
|
21
|
+
max-width: 420px;
|
|
22
|
+
}
|
|
23
|
+
.rcs-dlt-fallback-card.ant-card-bordered > div {
|
|
24
|
+
padding: 12px;
|
|
25
|
+
}
|
|
26
|
+
.rcs-listing-content {
|
|
27
|
+
display: -webkit-box;
|
|
28
|
+
-webkit-box-orient: vertical;
|
|
29
|
+
overflow: hidden;
|
|
30
|
+
&.title{
|
|
31
|
+
-webkit-line-clamp: 1;
|
|
32
|
+
}
|
|
33
|
+
&.desc{
|
|
34
|
+
-webkit-line-clamp: 5;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
.rcs-listing-image {
|
|
38
|
+
margin-bottom: 8px;
|
|
39
|
+
width: 220px;
|
|
40
|
+
height: 103px;
|
|
41
|
+
}
|
|
42
|
+
.fallback-sms-length {
|
|
43
|
+
margin-top: 13px;
|
|
44
|
+
float: right;
|
|
45
|
+
}
|
|
46
|
+
.rcs-fallback-len-error{
|
|
47
|
+
margin-top: 8px;
|
|
48
|
+
}
|
|
49
|
+
#rcs-template-title-input {
|
|
50
|
+
padding-right: 10%;
|
|
51
|
+
}
|
|
52
|
+
#rcs-template-message-label .ant-btn.cap-button-v2 {
|
|
53
|
+
height: 32px;
|
|
54
|
+
}
|
|
55
|
+
#rcs-template-message-label {
|
|
56
|
+
margin-top: 20px;
|
|
57
|
+
}
|
|
58
|
+
.cap-custom-image-upload {
|
|
59
|
+
.dragger-button.re-upload {
|
|
60
|
+
margin-top: 50px;
|
|
61
|
+
top: 46px;
|
|
62
|
+
position: absolute;
|
|
63
|
+
right: 20px;
|
|
64
|
+
color: $FONT_COLOR_05;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
.rcs-fallback-preview > .cap-slide-box-v2-container.size-r{
|
|
69
|
+
min-width: 430px;
|
|
70
|
+
max-width: 430px;
|
|
71
|
+
width: 430px;
|
|
72
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl';
|
|
2
|
+
const prefix = `creatives.containersV2.Rcs`;
|
|
3
|
+
|
|
4
|
+
export default defineMessages({
|
|
5
|
+
mediaLabel: {
|
|
6
|
+
id: `${prefix}.mediaLabel`,
|
|
7
|
+
defaultMessage: 'Media',
|
|
8
|
+
},
|
|
9
|
+
mediaNone: {
|
|
10
|
+
id: `${prefix}.mediaNone`,
|
|
11
|
+
defaultMessage: 'None',
|
|
12
|
+
},
|
|
13
|
+
mediaImage: {
|
|
14
|
+
id: `${prefix}.mediaImage`,
|
|
15
|
+
defaultMessage: 'Image',
|
|
16
|
+
},
|
|
17
|
+
image: {
|
|
18
|
+
id: `${prefix}.image`,
|
|
19
|
+
defaultMessage: 'image',
|
|
20
|
+
},
|
|
21
|
+
mediaVideo: {
|
|
22
|
+
id: `${prefix}.mediaVideo`,
|
|
23
|
+
defaultMessage: 'Video/Slideshow',
|
|
24
|
+
},
|
|
25
|
+
disabledMediaTooltip: {
|
|
26
|
+
id: `${prefix}.disabledMediaTooltip`,
|
|
27
|
+
defaultMessage: 'Not yet enabled. Coming soon!',
|
|
28
|
+
},
|
|
29
|
+
templateTitlePlaceholder: {
|
|
30
|
+
id: `${prefix}.templateTitlePlaceholder`,
|
|
31
|
+
defaultMessage: 'Enter title',
|
|
32
|
+
},
|
|
33
|
+
templateTitle: {
|
|
34
|
+
id: `${prefix}.templateTitle`,
|
|
35
|
+
defaultMessage: 'Title',
|
|
36
|
+
},
|
|
37
|
+
optional: {
|
|
38
|
+
id: `${prefix}.optional`,
|
|
39
|
+
defaultMessage: ' (Optional)',
|
|
40
|
+
},
|
|
41
|
+
templateDescPlaceholder: {
|
|
42
|
+
id: `${prefix}.templateDescPlaceholder`,
|
|
43
|
+
defaultMessage: 'Enter the text message',
|
|
44
|
+
},
|
|
45
|
+
emptyTemplateDescErrorMessage: {
|
|
46
|
+
id: `${prefix}.emptyTemplateDescErrorMessage`,
|
|
47
|
+
defaultMessage: 'Template message cannot be empty',
|
|
48
|
+
},
|
|
49
|
+
templateDescLabel: {
|
|
50
|
+
id: `${prefix}.templateDescLabel`,
|
|
51
|
+
defaultMessage: 'Text message',
|
|
52
|
+
},
|
|
53
|
+
textMessage: {
|
|
54
|
+
id: `${prefix}.textMessage`,
|
|
55
|
+
defaultMessage: 'text message',
|
|
56
|
+
},
|
|
57
|
+
templateDescLengthError: {
|
|
58
|
+
id: `${prefix}.templateDescLengthError`,
|
|
59
|
+
defaultMessage: 'Template message length cannot exceed 1000',
|
|
60
|
+
},
|
|
61
|
+
rcsDoneBtnToolTip: {
|
|
62
|
+
id: `${prefix}.rcsDoneBtnToolTip`,
|
|
63
|
+
defaultMessage: 'Please add template name & {type} to proceed further',
|
|
64
|
+
},
|
|
65
|
+
fallbackLabel: {
|
|
66
|
+
id: `${prefix}.fallbackLabel`,
|
|
67
|
+
defaultMessage: 'Fallback SMS message',
|
|
68
|
+
},
|
|
69
|
+
fallbackDesc: {
|
|
70
|
+
id: `${prefix}.fallbackDesc`,
|
|
71
|
+
defaultMessage: 'We would suggest to add fallback SMS',
|
|
72
|
+
},
|
|
73
|
+
fallbackToolTip: {
|
|
74
|
+
id: `${prefix}.fallbackToolTip`,
|
|
75
|
+
defaultMessage:
|
|
76
|
+
'This is to deliver an RCS message as an SMS message to end users whose phones do not support RCS',
|
|
77
|
+
},
|
|
78
|
+
fallbackMsgLenError: {
|
|
79
|
+
id: `${prefix}.fallbackMsgLenError`,
|
|
80
|
+
defaultMessage: 'Only 1 SMS (160 characters) allowed for fallback sms',
|
|
81
|
+
},
|
|
82
|
+
fallbackTextAreaLabel: {
|
|
83
|
+
id: `${prefix}.fallbackTextAreaLabel`,
|
|
84
|
+
defaultMessage: 'SMS message',
|
|
85
|
+
},
|
|
86
|
+
fallbackMsgPlaceholder: {
|
|
87
|
+
id: `${prefix}.fallbackMsgPlaceholder`,
|
|
88
|
+
defaultMessage: 'Enter the text message content for fallback SMS',
|
|
89
|
+
},
|
|
90
|
+
totalCharacters: {
|
|
91
|
+
id: `${prefix}.totalCharacters`,
|
|
92
|
+
defaultMessage: '{smsCount} SMS ({number} characters)',
|
|
93
|
+
},
|
|
94
|
+
addSmsCreative: {
|
|
95
|
+
id: `${prefix}.addSmsCreative`,
|
|
96
|
+
defaultMessage: 'Add SMS creative',
|
|
97
|
+
},
|
|
98
|
+
rcsDltTitle: {
|
|
99
|
+
id: `${prefix}.rcsDltTitle`,
|
|
100
|
+
defaultMessage: 'SMS creative templates',
|
|
101
|
+
},
|
|
102
|
+
rcsDltDesc: {
|
|
103
|
+
id: `${prefix}.rcsDltDesc`,
|
|
104
|
+
defaultMessage: 'Select any of the existing templates',
|
|
105
|
+
},
|
|
106
|
+
dltEditHeader: {
|
|
107
|
+
id: `${prefix}.dltEditHeader`,
|
|
108
|
+
defaultMessage: 'Edit SMS',
|
|
109
|
+
},
|
|
110
|
+
rcsCreateNotification: {
|
|
111
|
+
id: `${prefix}.rcsCreateNotification`,
|
|
112
|
+
defaultMessage: 'RCS template created successfully',
|
|
113
|
+
},
|
|
114
|
+
rcsEditNotification: {
|
|
115
|
+
id: `${prefix}.rcsEditNotification`,
|
|
116
|
+
defaultMessage: 'RCS template updated successfully',
|
|
117
|
+
},
|
|
118
|
+
fallbackPreviewtitle: {
|
|
119
|
+
id: `${prefix}.fallbackPreviewtitle`,
|
|
120
|
+
defaultMessage: 'Preview of fallback SMS',
|
|
121
|
+
},
|
|
122
|
+
});
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { fromJS } from 'immutable';
|
|
2
|
+
import {
|
|
3
|
+
UPLOAD_RCS_ASSET_REQUEST,
|
|
4
|
+
UPLOAD_RCS_ASSET_SUCCESS,
|
|
5
|
+
UPLOAD_RCS_ASSET_FAILURE,
|
|
6
|
+
CLEAR_RCS_ASSET,
|
|
7
|
+
CREATE_RCS_TEMPLATE_REQUEST,
|
|
8
|
+
CREATE_RCS_TEMPLATE_SUCCESS,
|
|
9
|
+
CREATE_RCS_TEMPLATE_FAILURE,
|
|
10
|
+
CLEAR_CREATE_RESPONSE_REQUEST,
|
|
11
|
+
GET_RCS_TEMPLATE_DETAILS_REQUEST,
|
|
12
|
+
GET_RCS_TEMPLATE_DETAILS_SUCCESS,
|
|
13
|
+
GET_RCS_TEMPLATE_DETAILS_FAILURE,
|
|
14
|
+
EDIT_RCS_TEMPLATE_REQUEST,
|
|
15
|
+
EDIT_RCS_TEMPLATE_SUCCESS,
|
|
16
|
+
EDIT_RCS_TEMPLATE_FAILURE,
|
|
17
|
+
CLEAR_EDIT_RESPONSE_REQUEST,
|
|
18
|
+
} from './constants';
|
|
19
|
+
|
|
20
|
+
export const initialState = fromJS({
|
|
21
|
+
uploadedAssetData: {},
|
|
22
|
+
createTemplateInProgress: false,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
function rcsReducer(state = initialState, action) {
|
|
26
|
+
const { type, statusCode, templateType, data, errorMsg } = action;
|
|
27
|
+
switch (type) {
|
|
28
|
+
case UPLOAD_RCS_ASSET_REQUEST:
|
|
29
|
+
return state.set('uploadAssetSuccess', false).set('assetUploading', true);
|
|
30
|
+
case UPLOAD_RCS_ASSET_SUCCESS:
|
|
31
|
+
return state
|
|
32
|
+
.set(
|
|
33
|
+
'uploadAssetSuccess',
|
|
34
|
+
statusCode !== undefined && statusCode !== '' && statusCode < 300,
|
|
35
|
+
)
|
|
36
|
+
.set('assetUploading', false)
|
|
37
|
+
.set(
|
|
38
|
+
templateType !== undefined
|
|
39
|
+
? `uploadedAssetData${templateType}`
|
|
40
|
+
: 'uploadedAssetData',
|
|
41
|
+
data,
|
|
42
|
+
);
|
|
43
|
+
case UPLOAD_RCS_ASSET_FAILURE:
|
|
44
|
+
return state
|
|
45
|
+
.set('uploadAssetSuccess', false)
|
|
46
|
+
.set('assetUploading', false);
|
|
47
|
+
case CLEAR_RCS_ASSET:
|
|
48
|
+
return state.delete(
|
|
49
|
+
templateType !== undefined
|
|
50
|
+
? `uploadedAssetData${templateType}`
|
|
51
|
+
: 'uploadedAssetData',
|
|
52
|
+
);
|
|
53
|
+
case CREATE_RCS_TEMPLATE_REQUEST:
|
|
54
|
+
return state
|
|
55
|
+
.set('createTemplateInProgress', true)
|
|
56
|
+
.set('createTemplateError', false)
|
|
57
|
+
.set('createTemplateErrorMessage', fromJS(''));
|
|
58
|
+
case CREATE_RCS_TEMPLATE_SUCCESS:
|
|
59
|
+
return state
|
|
60
|
+
.set('createTemplateInProgress', false)
|
|
61
|
+
.set('response', data)
|
|
62
|
+
.set(
|
|
63
|
+
'createTemplateError',
|
|
64
|
+
statusCode !== undefined && statusCode > 300,
|
|
65
|
+
)
|
|
66
|
+
.set('createTemplateErrorMessage', fromJS(errorMsg));
|
|
67
|
+
case CREATE_RCS_TEMPLATE_FAILURE:
|
|
68
|
+
return state
|
|
69
|
+
.set('createTemplateInProgress', false)
|
|
70
|
+
.set('createTemplateError', true)
|
|
71
|
+
.set('createTemplateErrorMessage', fromJS(errorMsg));
|
|
72
|
+
case CLEAR_CREATE_RESPONSE_REQUEST:
|
|
73
|
+
return state.set('response', {});
|
|
74
|
+
// FOR EDIT
|
|
75
|
+
case GET_RCS_TEMPLATE_DETAILS_REQUEST:
|
|
76
|
+
return state.set('getTemplateDetailsInProgress', true);
|
|
77
|
+
case GET_RCS_TEMPLATE_DETAILS_SUCCESS:
|
|
78
|
+
return state
|
|
79
|
+
.set('getTemplateDetailsInProgress', false)
|
|
80
|
+
.set('templateDetails', data);
|
|
81
|
+
case GET_RCS_TEMPLATE_DETAILS_FAILURE:
|
|
82
|
+
return state.set('getTemplateDetailsInProgress', false);
|
|
83
|
+
// FOR EDIT
|
|
84
|
+
case EDIT_RCS_TEMPLATE_REQUEST:
|
|
85
|
+
return state
|
|
86
|
+
.set('editTemplateInProgress', true)
|
|
87
|
+
.set('editTemplateError', false)
|
|
88
|
+
.set('editTemplateErrorMessage', fromJS(''));
|
|
89
|
+
case EDIT_RCS_TEMPLATE_SUCCESS:
|
|
90
|
+
return state
|
|
91
|
+
.set('editTemplateInProgress', false)
|
|
92
|
+
.set('editResponse', data)
|
|
93
|
+
.set('editTemplateError', statusCode !== undefined && statusCode > 300)
|
|
94
|
+
.set('editTemplateErrorMessage', fromJS(errorMsg));
|
|
95
|
+
case EDIT_RCS_TEMPLATE_FAILURE:
|
|
96
|
+
return state
|
|
97
|
+
.set('editTemplateInProgress', false)
|
|
98
|
+
.set('editTemplateError', true)
|
|
99
|
+
.set('editTemplateErrorMessage', fromJS(errorMsg));
|
|
100
|
+
case CLEAR_EDIT_RESPONSE_REQUEST:
|
|
101
|
+
return state.set('templateDetails', {});
|
|
102
|
+
default:
|
|
103
|
+
return state;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export default rcsReducer;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { take, cancel, call, put, takeLatest } from 'redux-saga/effects';
|
|
2
|
+
import { LOCATION_CHANGE } from 'react-router-redux';
|
|
3
|
+
import * as Api from '../../services/api';
|
|
4
|
+
import {
|
|
5
|
+
RCS,
|
|
6
|
+
UPLOAD_RCS_ASSET_REQUEST,
|
|
7
|
+
UPLOAD_RCS_ASSET_SUCCESS,
|
|
8
|
+
UPLOAD_RCS_ASSET_FAILURE,
|
|
9
|
+
CREATE_RCS_TEMPLATE_REQUEST,
|
|
10
|
+
CREATE_RCS_TEMPLATE_SUCCESS,
|
|
11
|
+
CREATE_RCS_TEMPLATE_FAILURE,
|
|
12
|
+
GET_RCS_TEMPLATE_DETAILS_REQUEST,
|
|
13
|
+
GET_RCS_TEMPLATE_DETAILS_SUCCESS,
|
|
14
|
+
GET_RCS_TEMPLATE_DETAILS_FAILURE,
|
|
15
|
+
EDIT_RCS_TEMPLATE_REQUEST,
|
|
16
|
+
EDIT_RCS_TEMPLATE_SUCCESS,
|
|
17
|
+
EDIT_RCS_TEMPLATE_FAILURE,
|
|
18
|
+
} from './constants';
|
|
19
|
+
|
|
20
|
+
export function* uploadRcsAsset(file, assetType, fileParams) {
|
|
21
|
+
try {
|
|
22
|
+
const result = yield call(Api.uploadFile, file, assetType, fileParams);
|
|
23
|
+
yield put({
|
|
24
|
+
type: UPLOAD_RCS_ASSET_SUCCESS,
|
|
25
|
+
data: result.response.asset,
|
|
26
|
+
statusCode: result.status ? result.status.code : '',
|
|
27
|
+
templateType: file.templateType,
|
|
28
|
+
});
|
|
29
|
+
} catch (error) {
|
|
30
|
+
yield put({ UPLOAD_RCS_ASSET_FAILURE, error });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function* watchUploadRcsAsset() {
|
|
34
|
+
const watcher = yield takeLatest(UPLOAD_RCS_ASSET_REQUEST, uploadRcsAsset);
|
|
35
|
+
yield take(LOCATION_CHANGE);
|
|
36
|
+
yield cancel(watcher);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function* createRCSTemplate({ template, callback }) {
|
|
40
|
+
let errorMsg;
|
|
41
|
+
try {
|
|
42
|
+
const result = yield call(Api.createChannelWiseTemplate, {
|
|
43
|
+
channel: RCS,
|
|
44
|
+
template,
|
|
45
|
+
});
|
|
46
|
+
if (result.status.code >= 400) {
|
|
47
|
+
errorMsg = result.message;
|
|
48
|
+
throw errorMsg;
|
|
49
|
+
}
|
|
50
|
+
yield put({
|
|
51
|
+
type: CREATE_RCS_TEMPLATE_SUCCESS,
|
|
52
|
+
data: result.response,
|
|
53
|
+
statusCode: result.status ? result.status.code : '',
|
|
54
|
+
errorMsg,
|
|
55
|
+
});
|
|
56
|
+
if (callback) {
|
|
57
|
+
callback(result.response);
|
|
58
|
+
}
|
|
59
|
+
} catch (error) {
|
|
60
|
+
yield put({ type: CREATE_RCS_TEMPLATE_FAILURE, error, errorMsg });
|
|
61
|
+
if (callback) {
|
|
62
|
+
callback(null, errorMsg);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function* watchCreateTemplate() {
|
|
67
|
+
const watcher = yield takeLatest(
|
|
68
|
+
CREATE_RCS_TEMPLATE_REQUEST,
|
|
69
|
+
createRCSTemplate,
|
|
70
|
+
);
|
|
71
|
+
yield take(LOCATION_CHANGE);
|
|
72
|
+
yield cancel(watcher);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// FOR EDIT
|
|
76
|
+
export function* editTemplate({ template, callback }) {
|
|
77
|
+
let errorMsg;
|
|
78
|
+
try {
|
|
79
|
+
const result = yield call(Api.createChannelWiseTemplate, {
|
|
80
|
+
channel: RCS,
|
|
81
|
+
template,
|
|
82
|
+
});
|
|
83
|
+
if (result.status.code >= 400) {
|
|
84
|
+
errorMsg = result.message;
|
|
85
|
+
throw errorMsg;
|
|
86
|
+
}
|
|
87
|
+
yield put({
|
|
88
|
+
type: EDIT_RCS_TEMPLATE_SUCCESS,
|
|
89
|
+
data: result.response,
|
|
90
|
+
statusCode: result.status ? result.status.code : '',
|
|
91
|
+
errorMsg,
|
|
92
|
+
});
|
|
93
|
+
if (callback) {
|
|
94
|
+
callback(result.response);
|
|
95
|
+
}
|
|
96
|
+
} catch (error) {
|
|
97
|
+
yield put({ type: EDIT_RCS_TEMPLATE_FAILURE, error, errorMsg });
|
|
98
|
+
if (callback) {
|
|
99
|
+
callback(null, errorMsg);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function* watchEditTemplate() {
|
|
104
|
+
const watcher = yield takeLatest(EDIT_RCS_TEMPLATE_REQUEST, editTemplate);
|
|
105
|
+
yield take(LOCATION_CHANGE);
|
|
106
|
+
yield cancel(watcher);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export function* getTemplateDetails({ id, callback }) {
|
|
110
|
+
try {
|
|
111
|
+
const result = yield call(Api.getTemplateDetails, {
|
|
112
|
+
id,
|
|
113
|
+
channel: RCS,
|
|
114
|
+
});
|
|
115
|
+
yield put({
|
|
116
|
+
type: GET_RCS_TEMPLATE_DETAILS_SUCCESS,
|
|
117
|
+
data: result.response,
|
|
118
|
+
});
|
|
119
|
+
if (callback) {
|
|
120
|
+
callback(false);
|
|
121
|
+
}
|
|
122
|
+
} catch (error) {
|
|
123
|
+
yield put({ type: GET_RCS_TEMPLATE_DETAILS_FAILURE, error });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function* watchGetTemplateDetails() {
|
|
127
|
+
const watcher = yield takeLatest(
|
|
128
|
+
GET_RCS_TEMPLATE_DETAILS_REQUEST,
|
|
129
|
+
getTemplateDetails,
|
|
130
|
+
);
|
|
131
|
+
yield take(LOCATION_CHANGE);
|
|
132
|
+
yield cancel(watcher);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// All sagas to be loaded
|
|
136
|
+
export default [
|
|
137
|
+
watchUploadRcsAsset,
|
|
138
|
+
watchCreateTemplate,
|
|
139
|
+
watchGetTemplateDetails,
|
|
140
|
+
watchEditTemplate,
|
|
141
|
+
];
|