@capillarytech/creatives-library 7.17.38 → 7.17.39-alpha.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.
- package/index.js +2 -2
- package/package.json +1 -1
- package/services/api.js +6 -6
- package/v2Components/CapTagList/index.js +2 -1
- package/v2Containers/CreativesContainer/SlideBoxContent.js +12 -6
- package/v2Containers/CreativesContainer/index.js +46 -7
- package/v2Containers/TagList/index.js +2 -0
- package/v2Containers/Templates/index.js +17 -3
- package/v2Containers/Templates/messages.js +4 -0
- package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +28 -129
- package/v2Containers/TemplatesV2/tests/index.test.js +1 -0
- package/v2Containers/Zalo/constants.js +0 -1
- package/v2Containers/Zalo/index.js +278 -187
- package/v2Containers/Zalo/index.scss +3 -4
- package/v2Containers/Zalo/messages.js +16 -4
- package/v2Containers/Zalo/saga.js +10 -4
- package/v2Containers/Zalo/selectors.js +8 -10
- package/v2Containers/Zalo/tests/index.test.js +94 -47
- package/v2Containers/Zalo/tests/mockData.js +5101 -5045
- package/v2Containers/Zalo/tests/reducer.test.js +3 -3
- package/v2Containers/Zalo/tests/saga.test.js +5 -2
- package/v2Containers/Zalo/tests/selector.test.js +28 -0
- package/v2Containers/Zalo/tests/selectors.test.js +0 -52
package/index.js
CHANGED
|
@@ -124,8 +124,8 @@ const ViberContainer = {Viber, viberReducer, viberSaga};
|
|
|
124
124
|
const FacebookPreviewContainer = { FacebookPreview, facebookPreviewReducer, facebookPreviewSaga };
|
|
125
125
|
const SmsTraiContainer = {SmsTraiCreate, SmsTraiCreateReducer, SmsTraiCreateSaga};
|
|
126
126
|
const WhatsappContainer = { Whatsapp, whatsappReducer, whatsappSaga };
|
|
127
|
-
const zaloContainer = { Zalo, zaloReducer, zaloSaga };
|
|
128
127
|
const RcsContainer = { Rcs, rcsReducer, rcsSaga };
|
|
128
|
+
const ZaloContainer = { Zalo, zaloReducer, zaloSaga };
|
|
129
129
|
|
|
130
130
|
const GalleryContainer = {Gallery, galleryReducer, gallerySagas};
|
|
131
131
|
const FTPContainer = {FTP, FTPReducer, FTPSagas};
|
|
@@ -173,6 +173,6 @@ export { CapContainer,
|
|
|
173
173
|
FacebookPreviewContainer,
|
|
174
174
|
SmsTraiContainer,
|
|
175
175
|
WhatsappContainer,
|
|
176
|
-
zaloContainer,
|
|
177
176
|
RcsContainer,
|
|
177
|
+
ZaloContainer,
|
|
178
178
|
};
|
package/package.json
CHANGED
package/services/api.js
CHANGED
|
@@ -90,7 +90,7 @@ function checkStatus(response) {
|
|
|
90
90
|
const isLoginPage = window.location.pathname.indexOf('/login') !== -1;
|
|
91
91
|
if (!isLoginPage) redirectIfUnauthenticated(response);
|
|
92
92
|
|
|
93
|
-
const error = new Error(
|
|
93
|
+
const error = new Error(statusText);
|
|
94
94
|
error.response = response;
|
|
95
95
|
error.isError = true;
|
|
96
96
|
error.status = status;
|
|
@@ -493,14 +493,14 @@ export const getSenderDetails = (channel, orgUnitId) => {
|
|
|
493
493
|
export const getCdnTransformationConfig = () => {
|
|
494
494
|
const url = `${API_ENDPOINT}/common/getCdnTransformationConfig`;
|
|
495
495
|
return request(url, getAPICallObject('GET'));
|
|
496
|
-
}
|
|
496
|
+
};
|
|
497
497
|
|
|
498
498
|
export const getS3UrlFileSizes = (data) => {
|
|
499
499
|
const url = `${API_ENDPOINT}/assets/files/metadata`;
|
|
500
500
|
return request(url, getAPICallObject('POST', data));
|
|
501
|
-
}
|
|
501
|
+
};
|
|
502
502
|
|
|
503
503
|
export const getTemplateInfoById = ({id, username, oa_id, token}) => {
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
504
|
+
const url = `${API_ENDPOINT}/templates/${id}/Zalo?username=${username}&oa_id=${oa_id}&token=${token}`;
|
|
505
|
+
return request(url, getAPICallObject('GET'));
|
|
506
|
+
};
|
|
@@ -321,7 +321,7 @@ class CapTagList extends React.Component { // eslint-disable-line react/prefer-s
|
|
|
321
321
|
trigger="click"
|
|
322
322
|
placement={translationLang === "ja-JP" && channel === 'EMAIL' ? "bottom" : "rightTop"}
|
|
323
323
|
>
|
|
324
|
-
<CapButton isAddBtn type="flat">{label || ''}</CapButton>
|
|
324
|
+
<CapButton disabled={this?.props?.disabled} isAddBtn type="flat">{label || ''}</CapButton>
|
|
325
325
|
</CapPopover>
|
|
326
326
|
}
|
|
327
327
|
<CapModal
|
|
@@ -358,6 +358,7 @@ CapTagList.propTypes = {
|
|
|
358
358
|
disableTagsDetails: PropTypes.object,
|
|
359
359
|
currentOrgDetails: PropTypes.object,
|
|
360
360
|
channel: PropTypes.string,
|
|
361
|
+
disabled: PropTypes.bool
|
|
361
362
|
};
|
|
362
363
|
|
|
363
364
|
CapTagList.defaultValue = {
|
|
@@ -213,7 +213,7 @@ export function SlideBoxContent(props) {
|
|
|
213
213
|
isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
|
|
214
214
|
isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
|
|
215
215
|
isEditFTP = isEdit && [constants.NO_COMMUNICATION, constants.FTP].includes(channel);
|
|
216
|
-
isEditZalo = isEdit && channel === constants.ZALO
|
|
216
|
+
isEditZalo = isEdit && channel === constants.ZALO;
|
|
217
217
|
}
|
|
218
218
|
const isDltEnabled = commonUtil.isTraiDLTEnable(isFullMode, smsRegister);
|
|
219
219
|
const hasJPLocaleHideFeatureEnabled = commonUtil?.hasJPLocaleHideFeatureEnabled();
|
|
@@ -510,11 +510,17 @@ export function SlideBoxContent(props) {
|
|
|
510
510
|
{
|
|
511
511
|
isEditZalo &&
|
|
512
512
|
<Zalo
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
513
|
+
isFullMode={isFullMode}
|
|
514
|
+
templateData={templateData}
|
|
515
|
+
getFormData={getFormData}
|
|
516
|
+
getDefaultTags={type}
|
|
517
|
+
forwardedTags={forwardedTags}
|
|
518
|
+
selectedOfferDetails={selectedOfferDetails}
|
|
519
|
+
location={{
|
|
520
|
+
pathname: `/zalo/edit`,
|
|
521
|
+
query,
|
|
522
|
+
search: '',
|
|
523
|
+
}}
|
|
518
524
|
/>
|
|
519
525
|
}
|
|
520
526
|
{
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import {
|
|
4
|
-
CapSlideBox,
|
|
5
|
-
|
|
4
|
+
CapSlideBox,
|
|
5
|
+
CapHeader,
|
|
6
|
+
CapLink,
|
|
7
|
+
CapInput,
|
|
8
|
+
CapNotification,
|
|
9
|
+
} from "@capillarytech/cap-ui-library";
|
|
6
10
|
import { injectIntl, FormattedMessage } from 'react-intl';
|
|
7
11
|
import classnames from 'classnames';
|
|
8
12
|
import {isEmpty, get, forEach, cloneDeep} from 'lodash';
|
|
@@ -23,8 +27,10 @@ import { gtmPush } from '../../utils/gtmTrackers';
|
|
|
23
27
|
import './index.scss';
|
|
24
28
|
import * as templateActions from '../Templates/actions';
|
|
25
29
|
import * as globalActions from '../Cap/actions';
|
|
30
|
+
import * as zaloActions from '../Zalo/actions';
|
|
26
31
|
import {isLoading as isLoadingSelector} from './selectors';
|
|
27
32
|
import messages from './messages';
|
|
33
|
+
import zaloMessages from '../Zalo/messages';
|
|
28
34
|
import { MAP_TEMPLATE } from '../WeChat/Wrapper/constants';
|
|
29
35
|
import { makeSelectFetchingCmsData } from '../Email/selectors';
|
|
30
36
|
import { IMAGE as LINE_IMAGE, IMAGE_MAP, IMAGE_CAROUSEL, VIDEO as LINE_VIDEO, TEMPLATE, STICKER } from '../Line/Container/constants';
|
|
@@ -97,12 +103,35 @@ export class Creatives extends React.Component {
|
|
|
97
103
|
}
|
|
98
104
|
this.setState(data);
|
|
99
105
|
};
|
|
106
|
+
|
|
107
|
+
actionCallback = () => {
|
|
108
|
+
CapNotification.error({
|
|
109
|
+
message: <FormattedMessage {...zaloMessages.zaloFailureNotificationPreview}/>,
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
|
|
100
113
|
onPreviewTemplate = (template) => {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
if (template.type !== constants.ZALO.toLowerCase()) {
|
|
115
|
+
const templateData = template;
|
|
116
|
+
const usersList = commonUtil.getMergedUserList(this.props.templateUserList);
|
|
117
|
+
const userId = parseInt(template.updatedBy, 10);
|
|
118
|
+
templateData.updatedByName = commonUtil.getUserNameById(userId, usersList );
|
|
119
|
+
this.setState({ slidBoxContent: 'preview', templateData });
|
|
120
|
+
} else {
|
|
121
|
+
const {
|
|
122
|
+
name = "",
|
|
123
|
+
sourceAccountIdentifier = "",
|
|
124
|
+
configs: { token = "" } = {},
|
|
125
|
+
} = get(this.props, "Templates.weCrmAccounts[0]", {});
|
|
126
|
+
this.props.zaloActions.getTemplateInfoById({
|
|
127
|
+
username: name,
|
|
128
|
+
oa_id: sourceAccountIdentifier,
|
|
129
|
+
token,
|
|
130
|
+
id: template?._id,
|
|
131
|
+
preview: true,
|
|
132
|
+
actionCallback: this.actionCallback,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
106
135
|
};
|
|
107
136
|
onEditTemplate = () => {
|
|
108
137
|
this.setState({ slidBoxContent: 'editTemplate', showSlideBox: true, templateNameExists: true });
|
|
@@ -771,6 +800,14 @@ export class Creatives extends React.Component {
|
|
|
771
800
|
}
|
|
772
801
|
}
|
|
773
802
|
break;
|
|
803
|
+
case constants.ZALO: {
|
|
804
|
+
if (template.value) {
|
|
805
|
+
templateData = {
|
|
806
|
+
...template.value,
|
|
807
|
+
};
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
break;
|
|
774
811
|
default:
|
|
775
812
|
break;
|
|
776
813
|
}
|
|
@@ -1205,6 +1242,7 @@ Creatives.propTypes = {
|
|
|
1205
1242
|
channel: PropTypes.string,
|
|
1206
1243
|
templateActions: PropTypes.object,
|
|
1207
1244
|
globalActions: PropTypes.object,
|
|
1245
|
+
zaloActions: PropTypes.object,
|
|
1208
1246
|
cap: PropTypes.object,
|
|
1209
1247
|
// isLoading: PropTypes.bool,
|
|
1210
1248
|
templateUserList: PropTypes.array,
|
|
@@ -1233,6 +1271,7 @@ function mapDispatchToProps(dispatch) {
|
|
|
1233
1271
|
templateActions: bindActionCreators(templateActions, dispatch),
|
|
1234
1272
|
globalActions: bindActionCreators(globalActions, dispatch),
|
|
1235
1273
|
actions: bindActionCreators(actions, dispatch),
|
|
1274
|
+
zaloActions: bindActionCreators(zaloActions, dispatch),
|
|
1236
1275
|
};
|
|
1237
1276
|
}
|
|
1238
1277
|
export default connect(mapStatesToProps, mapDispatchToProps)(injectIntl(Creatives));
|
|
@@ -260,6 +260,7 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
|
|
|
260
260
|
modalProps={this.props.modalProps}
|
|
261
261
|
currentOrgDetails={this.props.currentOrgDetails}
|
|
262
262
|
channel={this.props.channel}
|
|
263
|
+
disabled={this.props.disabled}
|
|
263
264
|
/>
|
|
264
265
|
</div>
|
|
265
266
|
);
|
|
@@ -286,6 +287,7 @@ TagList.propTypes = {
|
|
|
286
287
|
modalProps: PropTypes.any,
|
|
287
288
|
currentOrgDetails: PropTypes.object,
|
|
288
289
|
channel: PropTypes.string,
|
|
290
|
+
disabled: PropTypes.bool
|
|
289
291
|
};
|
|
290
292
|
|
|
291
293
|
const mapStateToProps = createStructuredSelector({
|
|
@@ -869,10 +869,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
869
869
|
}
|
|
870
870
|
|
|
871
871
|
filterZaloTemplates = (templates) => {
|
|
872
|
-
|
|
872
|
+
let { selectedZaloStatus } = this.state;
|
|
873
|
+
selectedZaloStatus = !this.props.isFullMode ? ZALO_STATUSES.ENABLE : selectedZaloStatus;
|
|
873
874
|
if (selectedZaloStatus) {
|
|
874
|
-
return templates?.filter((template) => template?.versions?.base?.content?.zalo
|
|
875
|
-
}
|
|
875
|
+
return templates?.filter((template) => template?.versions?.base?.content?.zalo?.status === selectedZaloStatus);
|
|
876
|
+
}
|
|
876
877
|
return templates;
|
|
877
878
|
}
|
|
878
879
|
|
|
@@ -1909,6 +1910,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1909
1910
|
|
|
1910
1911
|
selectTemplate = (id) => find(this.props.TemplatesList, {_id: id})
|
|
1911
1912
|
|
|
1913
|
+
actionCallback = () => {
|
|
1914
|
+
CapNotification.error({
|
|
1915
|
+
message: this.props.intl.formatMessage(zaloMessages.zaloFailureNotificationPreview),
|
|
1916
|
+
});
|
|
1917
|
+
};
|
|
1918
|
+
|
|
1912
1919
|
handlePreviewClick(template, modeType) {
|
|
1913
1920
|
if (this.state.channel.toLowerCase() !== ZALO_LOWERCASE) {
|
|
1914
1921
|
this.togglePreview();
|
|
@@ -1951,6 +1958,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1951
1958
|
token: token,
|
|
1952
1959
|
id: template?._id,
|
|
1953
1960
|
preview: true,
|
|
1961
|
+
actionCallback: this.actionCallback,
|
|
1954
1962
|
});
|
|
1955
1963
|
}
|
|
1956
1964
|
}
|
|
@@ -2900,6 +2908,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
2900
2908
|
) : null
|
|
2901
2909
|
}
|
|
2902
2910
|
|
|
2911
|
+
{
|
|
2912
|
+
channel.toLowerCase() === ZALO_LOWERCASE && !isFullMode ? (
|
|
2913
|
+
<CapInfoNote message={formatMessage(messages.zaloOnlyApprovedTemplates)} />
|
|
2914
|
+
) : null
|
|
2915
|
+
}
|
|
2916
|
+
|
|
2903
2917
|
<CapRow>
|
|
2904
2918
|
<Pagination onPageChange={templates.length ? this.onPaginationChange : () => {}} paginationSelector="pagination-container">
|
|
2905
2919
|
{this.getTemplateDataForGrid({ isLoading, loadingTip, channel: this.state.channel, templates: this.state.searchingZaloTemplate ? this.state.searchedZaloTemplates : this.props.TemplatesList, filterContent, handlers: { handlePreviewClick: this.handlePreviewClick, handleEditClick: this.handleEditClick}})}
|
|
@@ -502,4 +502,8 @@ export default defineMessages({
|
|
|
502
502
|
id: `${scope}.zaloPreview`,
|
|
503
503
|
defaultMessage: 'Open preview in new tab',
|
|
504
504
|
},
|
|
505
|
+
"zaloOnlyApprovedTemplates": {
|
|
506
|
+
id: `${scope}.zaloOnlyApprovedTemplates`,
|
|
507
|
+
defaultMessage: 'Only enabled templates are shown here',
|
|
508
|
+
},
|
|
505
509
|
});
|
|
@@ -1038,134 +1038,6 @@ exports[`Test Templates container Should render temlates when zalo templates are
|
|
|
1038
1038
|
tip="Getting all templates..."
|
|
1039
1039
|
>
|
|
1040
1040
|
<div>
|
|
1041
|
-
<div
|
|
1042
|
-
className="pagination-container"
|
|
1043
|
-
>
|
|
1044
|
-
<CapCustomCardList
|
|
1045
|
-
cardList={
|
|
1046
|
-
Array [
|
|
1047
|
-
Object {
|
|
1048
|
-
"content": <CapLabel
|
|
1049
|
-
className="zalo-listing-content desc"
|
|
1050
|
-
type="label19"
|
|
1051
|
-
>
|
|
1052
|
-
Test1
|
|
1053
|
-
</CapLabel>,
|
|
1054
|
-
"extra": Array [
|
|
1055
|
-
<CapTooltip
|
|
1056
|
-
title="Open preview in new tab"
|
|
1057
|
-
>
|
|
1058
|
-
<CapIcon
|
|
1059
|
-
className="view-zalo"
|
|
1060
|
-
onClick={[Function]}
|
|
1061
|
-
style={
|
|
1062
|
-
Object {
|
|
1063
|
-
"marginRight": "16px",
|
|
1064
|
-
}
|
|
1065
|
-
}
|
|
1066
|
-
type="eye"
|
|
1067
|
-
/>
|
|
1068
|
-
</CapTooltip>,
|
|
1069
|
-
],
|
|
1070
|
-
"hoverOption": <CapButton
|
|
1071
|
-
className="select-zalo"
|
|
1072
|
-
isAddBtn={false}
|
|
1073
|
-
onClick={[Function]}
|
|
1074
|
-
type="primary"
|
|
1075
|
-
>
|
|
1076
|
-
Select
|
|
1077
|
-
</CapButton>,
|
|
1078
|
-
"key": "ZALO-card-Test1",
|
|
1079
|
-
"title": <CapRow>
|
|
1080
|
-
<CapLabel
|
|
1081
|
-
className="zalo-template-name"
|
|
1082
|
-
type="label1"
|
|
1083
|
-
>
|
|
1084
|
-
|
|
1085
|
-
</CapLabel>
|
|
1086
|
-
<CapRow
|
|
1087
|
-
align="middle"
|
|
1088
|
-
className="zalo-status-container"
|
|
1089
|
-
type="flex"
|
|
1090
|
-
>
|
|
1091
|
-
<CapStatus
|
|
1092
|
-
color=""
|
|
1093
|
-
height="0.571rem"
|
|
1094
|
-
labelType="label3"
|
|
1095
|
-
text=""
|
|
1096
|
-
type="pending"
|
|
1097
|
-
width="0.571rem"
|
|
1098
|
-
/>
|
|
1099
|
-
</CapRow>
|
|
1100
|
-
</CapRow>,
|
|
1101
|
-
},
|
|
1102
|
-
Object {
|
|
1103
|
-
"content": <CapLabel
|
|
1104
|
-
className="zalo-listing-content desc"
|
|
1105
|
-
type="label19"
|
|
1106
|
-
>
|
|
1107
|
-
Test2
|
|
1108
|
-
</CapLabel>,
|
|
1109
|
-
"extra": Array [
|
|
1110
|
-
<CapTooltip
|
|
1111
|
-
title="Open preview in new tab"
|
|
1112
|
-
>
|
|
1113
|
-
<CapIcon
|
|
1114
|
-
className="view-zalo"
|
|
1115
|
-
onClick={[Function]}
|
|
1116
|
-
style={
|
|
1117
|
-
Object {
|
|
1118
|
-
"marginRight": "16px",
|
|
1119
|
-
}
|
|
1120
|
-
}
|
|
1121
|
-
type="eye"
|
|
1122
|
-
/>
|
|
1123
|
-
</CapTooltip>,
|
|
1124
|
-
],
|
|
1125
|
-
"hoverOption": <CapButton
|
|
1126
|
-
className="select-zalo"
|
|
1127
|
-
isAddBtn={false}
|
|
1128
|
-
onClick={[Function]}
|
|
1129
|
-
type="primary"
|
|
1130
|
-
>
|
|
1131
|
-
Select
|
|
1132
|
-
</CapButton>,
|
|
1133
|
-
"key": "ZALO-card-Test2",
|
|
1134
|
-
"title": <CapRow>
|
|
1135
|
-
<CapLabel
|
|
1136
|
-
className="zalo-template-name"
|
|
1137
|
-
type="label1"
|
|
1138
|
-
>
|
|
1139
|
-
|
|
1140
|
-
</CapLabel>
|
|
1141
|
-
<CapRow
|
|
1142
|
-
align="middle"
|
|
1143
|
-
className="zalo-status-container"
|
|
1144
|
-
type="flex"
|
|
1145
|
-
>
|
|
1146
|
-
<CapStatus
|
|
1147
|
-
color=""
|
|
1148
|
-
height="0.571rem"
|
|
1149
|
-
labelType="label3"
|
|
1150
|
-
text=""
|
|
1151
|
-
type="pending"
|
|
1152
|
-
width="0.571rem"
|
|
1153
|
-
/>
|
|
1154
|
-
</CapRow>
|
|
1155
|
-
</CapRow>,
|
|
1156
|
-
},
|
|
1157
|
-
]
|
|
1158
|
-
}
|
|
1159
|
-
fbType="list"
|
|
1160
|
-
key="ZALO-card-list"
|
|
1161
|
-
style={
|
|
1162
|
-
Object {
|
|
1163
|
-
"marginLeft": "16px",
|
|
1164
|
-
}
|
|
1165
|
-
}
|
|
1166
|
-
type="ZALO"
|
|
1167
|
-
/>
|
|
1168
|
-
</div>
|
|
1169
1041
|
<div
|
|
1170
1042
|
style={
|
|
1171
1043
|
Object {
|
|
@@ -1173,7 +1045,34 @@ exports[`Test Templates container Should render temlates when zalo templates are
|
|
|
1173
1045
|
"overflow": "auto",
|
|
1174
1046
|
}
|
|
1175
1047
|
}
|
|
1176
|
-
|
|
1048
|
+
>
|
|
1049
|
+
<CapHeader
|
|
1050
|
+
description={
|
|
1051
|
+
<CapLabel
|
|
1052
|
+
style={
|
|
1053
|
+
Object {
|
|
1054
|
+
"textAlign": "center",
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
type="label1"
|
|
1058
|
+
>
|
|
1059
|
+
Please try searching with another term or apply different filter
|
|
1060
|
+
</CapLabel>
|
|
1061
|
+
}
|
|
1062
|
+
descriptionClass=""
|
|
1063
|
+
inline={false}
|
|
1064
|
+
size="large"
|
|
1065
|
+
title={
|
|
1066
|
+
<CapHeading
|
|
1067
|
+
className="channel-specific-illustration-text"
|
|
1068
|
+
type="h3"
|
|
1069
|
+
>
|
|
1070
|
+
Sorry, we couldn’t find any matches
|
|
1071
|
+
</CapHeading>
|
|
1072
|
+
}
|
|
1073
|
+
titleClass=""
|
|
1074
|
+
/>
|
|
1075
|
+
</div>
|
|
1177
1076
|
</div>
|
|
1178
1077
|
</CapSpin>
|
|
1179
1078
|
</div>
|
|
@@ -93,6 +93,7 @@ describe("Test TemplatesV2", () => {
|
|
|
93
93
|
expect(getByText('Viber')).toBeInTheDocument();
|
|
94
94
|
expect(getByText('Facebook')).toBeInTheDocument();
|
|
95
95
|
expect(getByText('WhatsApp')).toBeInTheDocument();
|
|
96
|
+
expect(getByText('Zalo')).toBeInTheDocument();
|
|
96
97
|
expect(getByText('Gallery')).toBeInTheDocument();
|
|
97
98
|
});
|
|
98
99
|
});
|