@capillarytech/creatives-library 7.11.15 → 7.12.0

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 (58) hide show
  1. package/index.js +0 -6
  2. package/package.json +1 -1
  3. package/routes.js +2 -7
  4. package/services/api.js +2 -8
  5. package/v2Components/CapImageUpload/index.js +11 -24
  6. package/v2Components/CapImageUpload/index.scss +27 -12
  7. package/v2Components/CapImageUpload/messages.js +5 -10
  8. package/v2Components/TemplatePreview/_templatePreview.scss +1 -13
  9. package/v2Components/TemplatePreview/index.js +2 -41
  10. package/v2Components/TemplatePreview/tests/__snapshots__/index.test.js.snap +1 -33
  11. package/v2Components/TemplatePreview/tests/index.test.js +7 -7
  12. package/v2Containers/App/constants.js +1 -2
  13. package/v2Containers/Cap/messages.js +1 -20
  14. package/v2Containers/CreativesContainer/SlideBoxContent.js +11 -57
  15. package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -5
  16. package/v2Containers/CreativesContainer/constants.js +0 -1
  17. package/v2Containers/CreativesContainer/messages.js +0 -4
  18. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +4 -24
  19. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +4 -23
  20. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +2 -147
  21. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +1 -99
  22. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -71
  23. package/v2Containers/CreativesContainer/tests/index.test.js +9 -21
  24. package/v2Containers/Facebook/Advertisement/index.js +2 -4
  25. package/v2Containers/MobilePush/Edit/index.js +34 -21
  26. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +4 -4
  27. package/v2Containers/Templates/_templates.scss +1 -9
  28. package/v2Containers/Templates/actions.js +1 -2
  29. package/v2Containers/Templates/constants.js +0 -1
  30. package/v2Containers/Templates/index.js +174 -235
  31. package/v2Containers/Templates/messages.js +0 -20
  32. package/v2Containers/Templates/reducer.js +0 -2
  33. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +80 -520
  34. package/v2Containers/TemplatesV2/index.js +1 -2
  35. package/v2Containers/TemplatesV2/messages.js +0 -4
  36. package/v2Containers/Whatsapp/constants.js +0 -287
  37. package/v2Containers/Whatsapp/index.js +25 -39
  38. package/v2Containers/Whatsapp/index.scss +2 -3
  39. package/v2Containers/Whatsapp/messages.js +13 -284
  40. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +1700 -35583
  41. package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +26 -32
  42. package/v2Containers/Whatsapp/tests/index.test.js +0 -13
  43. package/v2Containers/Whatsapp/tests/utils.test.js +8 -15
  44. package/v2Containers/mockdata.js +2181 -1190
  45. package/v2Containers/Assets/images/addCreativesIllustration.svg +0 -30
  46. package/v2Containers/Assets/images/rcsIllustration.png +0 -0
  47. package/v2Containers/Rcs/actions.js +0 -57
  48. package/v2Containers/Rcs/constants.js +0 -51
  49. package/v2Containers/Rcs/index.js +0 -1064
  50. package/v2Containers/Rcs/index.scss +0 -72
  51. package/v2Containers/Rcs/messages.js +0 -122
  52. package/v2Containers/Rcs/reducer.js +0 -107
  53. package/v2Containers/Rcs/sagas.js +0 -141
  54. package/v2Containers/Rcs/selectors.js +0 -8
  55. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +0 -145080
  56. package/v2Containers/Rcs/tests/index.test.js +0 -226
  57. package/v2Containers/Rcs/tests/mockData.js +0 -169
  58. package/v2Containers/Rcs/utils.js +0 -40
@@ -1,72 +0,0 @@
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
- }
@@ -1,122 +0,0 @@
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
- });
@@ -1,107 +0,0 @@
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;
@@ -1,141 +0,0 @@
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?.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?.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?.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
- ];
@@ -1,8 +0,0 @@
1
- import { createSelector } from 'reselect';
2
-
3
- const selectRcsDomain = () => (state) => state.get('rcs');
4
-
5
- const makeSelectRcs = () =>
6
- createSelector(selectRcsDomain(), (substate) => substate && substate.toJS());
7
-
8
- export { makeSelectRcs };