@capillarytech/creatives-library 7.17.39-alpha.5 → 7.17.39
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/CapTagList/messages.js +4 -0
- package/components/FormBuilder/index.js +2 -2
- package/components/FormBuilder/messages.js +8 -0
- package/containers/Assets/Gallery/index.js +1 -1
- package/containers/Assets/Gallery/messages.js +4 -0
- package/containers/Email/index.js +1 -1
- package/containers/Templates/index.js +1 -1
- package/containers/Templates/messages.js +4 -0
- package/index.js +2 -2
- package/package.json +1 -1
- package/services/api.js +6 -6
- package/utils/common.js +3 -2
- package/utils/tests/common.test.js +5 -5
- package/v2Components/CapTagList/index.js +1 -2
- package/v2Components/FormBuilder/index.js +1 -1
- package/v2Components/FormBuilder/messages.js +4 -0
- package/v2Containers/CreativesContainer/SlideBoxContent.js +6 -12
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +3 -2
- package/v2Containers/CreativesContainer/index.js +7 -55
- package/v2Containers/CreativesContainer/messages.js +9 -1
- package/v2Containers/TagList/index.js +0 -2
- package/v2Containers/Templates/index.js +3 -17
- package/v2Containers/Templates/messages.js +0 -4
- package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +129 -28
- package/v2Containers/TemplatesV2/tests/index.test.js +0 -1
- package/v2Containers/Zalo/constants.js +1 -0
- package/v2Containers/Zalo/index.js +185 -301
- package/v2Containers/Zalo/index.scss +4 -3
- package/v2Containers/Zalo/messages.js +5 -17
- package/v2Containers/Zalo/saga.js +4 -10
- package/v2Containers/Zalo/selectors.js +10 -8
- package/v2Containers/Zalo/tests/index.test.js +48 -67
- package/v2Containers/Zalo/tests/mockData.js +5045 -5056
- package/v2Containers/Zalo/tests/reducer.test.js +3 -3
- package/v2Containers/Zalo/tests/saga.test.js +2 -5
- package/v2Containers/Zalo/tests/selectors.test.js +52 -0
- package/v2Containers/Zalo/tests/selector.test.js +0 -28
|
@@ -183,7 +183,7 @@ class CapTagList extends React.Component { // eslint-disable-line react/prefer-s
|
|
|
183
183
|
onVisibleChange={this.togglePopoverVisibility}
|
|
184
184
|
content={<div>
|
|
185
185
|
<Spin tip="Getting tags..." spinning={this.props.loading}>
|
|
186
|
-
<Search style={{ marginBottom: 8, width: '250px'}} placeholder=
|
|
186
|
+
<Search style={{ marginBottom: 8, width: '250px'}} placeholder={this.props.intl.formatMessage(messages.searchText)} onChange={this.onChange} />
|
|
187
187
|
{this.props.moduleFilterEnabled ? <CapSelect getPopupContainer={(triggerNode) => triggerNode.parentNode} style={{width: '250px', marginBottom: '16px', minWidth: 'initial', display: 'inherit'}} onChange={this.props.onContextChange} defaultValue="All" options={options}>
|
|
188
188
|
</CapSelect> : ''}
|
|
189
189
|
<Tree
|
|
@@ -1516,8 +1516,8 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
1516
1516
|
this.setState({errorData: formData});
|
|
1517
1517
|
} else {
|
|
1518
1518
|
const tempTab = ifError ? currentTab : this.state.currentTab;
|
|
1519
|
-
const version =
|
|
1520
|
-
formData[tabCount].name =
|
|
1519
|
+
const version = `${this.props.intl.formatMessage(messages.version)} ${this.state.currentTab}`;
|
|
1520
|
+
formData[tabCount].name = `${this.props.intl.formatMessage(messages.copyOf)} ${formData[tempTab - 1].name ? formData[tempTab - 1].name : version}`;
|
|
1521
1521
|
formData[tabCount].base = false;
|
|
1522
1522
|
const initialTab = this.state.currentTab;
|
|
1523
1523
|
this.setState({formData, tabCount: tabCount + 1, currentTab: tabCount + 1, tabKey: formData[tabCount].tabKey}, () => {
|
|
@@ -54,4 +54,12 @@ export default defineMessages({
|
|
|
54
54
|
id: 'creatives.components.FormBuilder.ok',
|
|
55
55
|
defaultMessage: 'Ok',
|
|
56
56
|
},
|
|
57
|
+
copyOf: {
|
|
58
|
+
id: 'creatives.components.FormBuilder.copyOf',
|
|
59
|
+
defaultMessage: 'Copy of',
|
|
60
|
+
},
|
|
61
|
+
Version: {
|
|
62
|
+
id: 'creatives.components.FormBuilder.version',
|
|
63
|
+
defaultMessage: 'Version',
|
|
64
|
+
},
|
|
57
65
|
});
|
|
@@ -336,7 +336,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
336
336
|
<CapInput
|
|
337
337
|
className="search-text"
|
|
338
338
|
style={{width: '210px'}}
|
|
339
|
-
placeholder=
|
|
339
|
+
placeholder={this.props.intl.formatMessage(messages.searchText)}
|
|
340
340
|
prefix={<i className="material-icons" style={{color: '#707070', fontSize: '16px'}}>search</i>}
|
|
341
341
|
value={this.state.searchText}
|
|
342
342
|
onChange={(e) => this.searchAsset(e.target.value)}
|
|
@@ -3104,7 +3104,7 @@ export class Email extends React.Component { // eslint-disable-line react/prefer
|
|
|
3104
3104
|
<CapInput
|
|
3105
3105
|
className="search-text"
|
|
3106
3106
|
style={{width: '210px'}}
|
|
3107
|
-
placeholder=
|
|
3107
|
+
placeholder={this.props.intl.formatMessage(messages.searchText)}
|
|
3108
3108
|
prefix={<i className="material-icons" style={{color: '#707070', fontSize: '16px'}}>search</i>}
|
|
3109
3109
|
value={this.state.searchText}
|
|
3110
3110
|
onChange={(e) => this.searchAsset(e.target.value)}
|
|
@@ -866,7 +866,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
866
866
|
duplicateTemplate(template) {
|
|
867
867
|
|
|
868
868
|
const duplicateObj = _.cloneDeep(template);
|
|
869
|
-
duplicateObj.name =
|
|
869
|
+
duplicateObj.name = `${this.props.intl.formatMessage(messages.copyOf)} ${template.name} ${moment().format('MM-DD-YYYY HH:mm:ss')}`;
|
|
870
870
|
delete duplicateObj._id;
|
|
871
871
|
if (this.state.channel.toLowerCase() === "sms") {
|
|
872
872
|
this.props.smsActions.createTemplate(duplicateObj);
|
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 };
|
|
127
128
|
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,
|
|
176
177
|
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(statusText);
|
|
93
|
+
const error = new Error({ statusText, status });
|
|
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
|
+
}
|
package/utils/common.js
CHANGED
|
@@ -294,8 +294,8 @@ export const isTraiDLTEnable = (isFullMode, smsRegister) => {
|
|
|
294
294
|
return isTraiDltFeature;
|
|
295
295
|
};
|
|
296
296
|
|
|
297
|
-
|
|
298
|
-
export const intlKeyGenerator = (value = "") => String(value).replace(/[^a-zA-Z0-9_]/g, "").toLowerCase();
|
|
297
|
+
//Input: " Spaces In Input "---> Output: "spaces_in_input"
|
|
298
|
+
export const intlKeyGenerator = (value = "") => String(value).replace(/[^a-zA-Z0-9_ ]/g, "").replace(/ /g, "_").toLowerCase();
|
|
299
299
|
|
|
300
300
|
export const handleInjectedData = (data, scope) => {
|
|
301
301
|
let tagType;
|
|
@@ -307,6 +307,7 @@ export const handleInjectedData = (data, scope) => {
|
|
|
307
307
|
} else if (tag?.name === CUSTOMER_EXTENDED_FIELD) {
|
|
308
308
|
tagType = EXTENDED_TAG;
|
|
309
309
|
}
|
|
310
|
+
|
|
310
311
|
if (tag?.name) {
|
|
311
312
|
const name = tag.name;
|
|
312
313
|
const key = intlKeyGenerator(name);
|
|
@@ -51,7 +51,7 @@ describe("handleInjectedData", () => {
|
|
|
51
51
|
const result = handleInjectedData(data, "scope");
|
|
52
52
|
const intlKey = intlKeyGenerator("scope");
|
|
53
53
|
expect(intlKey).toEqual('scope');
|
|
54
|
-
expect(result.tag1.name).toEqual(<FormattedMessage defaultMessage="Registration Fields" id="scope.
|
|
54
|
+
expect(result.tag1.name).toEqual(<FormattedMessage defaultMessage="Registration Fields" id="scope.registration_fields" values={{}} />);
|
|
55
55
|
});
|
|
56
56
|
|
|
57
57
|
it("adds tagType for Registration custom fields", () => {
|
|
@@ -65,7 +65,7 @@ describe("handleInjectedData", () => {
|
|
|
65
65
|
const intlKey = intlKeyGenerator();
|
|
66
66
|
expect(intlKey).toEqual('');
|
|
67
67
|
expect(result.tag1.name).toEqual(
|
|
68
|
-
<FormattedMessage defaultMessage="Registration custom fields" id="scope.
|
|
68
|
+
<FormattedMessage defaultMessage="Registration custom fields" id="scope.registration_custom_fields_name.CustomTagMessage" values={{}} />
|
|
69
69
|
);
|
|
70
70
|
});
|
|
71
71
|
|
|
@@ -79,7 +79,7 @@ describe("handleInjectedData", () => {
|
|
|
79
79
|
const result = handleInjectedData(data, "scope");
|
|
80
80
|
|
|
81
81
|
expect(result.tag1.name).toEqual(
|
|
82
|
-
<FormattedMessage defaultMessage="Customer extended fields" id="scope.
|
|
82
|
+
<FormattedMessage defaultMessage="Customer extended fields" id="scope.customer_extended_fields_name.ExtendedTagMessage" values={{}} />
|
|
83
83
|
);
|
|
84
84
|
});
|
|
85
85
|
it("adds tagType for Customer extended fields fields", () => {
|
|
@@ -157,7 +157,7 @@ describe("handleInjectedData", () => {
|
|
|
157
157
|
const result = handleInjectedData(data, "scope");
|
|
158
158
|
|
|
159
159
|
expect(result.tag1.subtags.subtag1.desc).toEqual(
|
|
160
|
-
<FormattedMessage defaultMessage="Enter your first name" id="scope.
|
|
160
|
+
<FormattedMessage defaultMessage="Enter your first name" id="scope.enter_your_first_name" values={{}} />
|
|
161
161
|
);
|
|
162
162
|
});
|
|
163
163
|
it("replaces subtag name desc with intl key", () => {
|
|
@@ -175,7 +175,7 @@ describe("handleInjectedData", () => {
|
|
|
175
175
|
const result = handleInjectedData(data, "scope");
|
|
176
176
|
|
|
177
177
|
expect(result.tag1.subtags.subtag1.desc).toEqual(
|
|
178
|
-
<FormattedMessage defaultMessage="Enter your first name" id="scope.
|
|
178
|
+
<FormattedMessage defaultMessage="Enter your first name" id="scope.enter_your_first_name" values={{}} />
|
|
179
179
|
);
|
|
180
180
|
});
|
|
181
181
|
});
|
|
@@ -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
|
|
324
|
+
<CapButton isAddBtn type="flat">{label || ''}</CapButton>
|
|
325
325
|
</CapPopover>
|
|
326
326
|
}
|
|
327
327
|
<CapModal
|
|
@@ -358,7 +358,6 @@ CapTagList.propTypes = {
|
|
|
358
358
|
disableTagsDetails: PropTypes.object,
|
|
359
359
|
currentOrgDetails: PropTypes.object,
|
|
360
360
|
channel: PropTypes.string,
|
|
361
|
-
disabled: PropTypes.bool
|
|
362
361
|
};
|
|
363
362
|
|
|
364
363
|
CapTagList.defaultValue = {
|
|
@@ -1669,7 +1669,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
1669
1669
|
} else {
|
|
1670
1670
|
const tempTab = ifError ? currentTab : this.state.currentTab;
|
|
1671
1671
|
const version = `Version ${this.state.currentTab}`;
|
|
1672
|
-
formData[tabCount].name =
|
|
1672
|
+
formData[tabCount].name = `${this.props.intl.formatMessage(messages.copyOf)} ${formData[tempTab - 1].name ? formData[tempTab - 1].name : version}`;
|
|
1673
1673
|
formData[tabCount].base = false;
|
|
1674
1674
|
const initialTab = this.state.currentTab;
|
|
1675
1675
|
this.setState({formData, tabCount: tabCount + 1, currentTab: tabCount + 1, tabKey: formData[tabCount].tabKey}, () => {
|
|
@@ -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
|
|
216
|
+
isEditZalo = isEdit && channel === constants.ZALO
|
|
217
217
|
}
|
|
218
218
|
const isDltEnabled = commonUtil.isTraiDLTEnable(isFullMode, smsRegister);
|
|
219
219
|
const hasJPLocaleHideFeatureEnabled = commonUtil?.hasJPLocaleHideFeatureEnabled();
|
|
@@ -510,17 +510,11 @@ export function SlideBoxContent(props) {
|
|
|
510
510
|
{
|
|
511
511
|
isEditZalo &&
|
|
512
512
|
<Zalo
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
519
|
-
location={{
|
|
520
|
-
pathname: `/zalo/edit`,
|
|
521
|
-
query,
|
|
522
|
-
search: '',
|
|
523
|
-
}}
|
|
513
|
+
templateData={templateData}
|
|
514
|
+
location={creativesLocationProps}
|
|
515
|
+
selectedOfferDetails={selectedOfferDetails}
|
|
516
|
+
getDefaultTags={type}
|
|
517
|
+
channel={channel}
|
|
524
518
|
/>
|
|
525
519
|
}
|
|
526
520
|
{
|
|
@@ -61,8 +61,9 @@ export function SlideBoxHeader(props) {
|
|
|
61
61
|
email: <FormattedMessage {...messages.emailHeader} />,
|
|
62
62
|
mobilepush: <FormattedMessage {...messages.pushNotificationHeader} />,
|
|
63
63
|
wechat: <FormattedMessage {...messages.wechat} />,
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
line: <FormattedMessage {...messages.lineHeader} />,
|
|
65
|
+
no_communication: <FormattedMessage {...messages.noCommunication} />,
|
|
66
|
+
ftp: <FormattedMessage {...messages.ftp} />,
|
|
66
67
|
whatsapp: <FormattedMessage {...messages.whatsappTemplate} />,
|
|
67
68
|
rcs: <FormattedMessage {...messages.rcsCreative} />,
|
|
68
69
|
zalo: <FormattedMessage {...messages.zaloTemplate} />,
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import {
|
|
4
|
-
CapSlideBox,
|
|
5
|
-
|
|
6
|
-
CapLink,
|
|
7
|
-
CapInput,
|
|
8
|
-
CapNotification,
|
|
9
|
-
} from "@capillarytech/cap-ui-library";
|
|
4
|
+
CapSlideBox, CapHeader, CapLink, CapInput,
|
|
5
|
+
} from '@capillarytech/cap-ui-library';
|
|
10
6
|
import { injectIntl, FormattedMessage } from 'react-intl';
|
|
11
7
|
import classnames from 'classnames';
|
|
12
8
|
import {isEmpty, get, forEach, cloneDeep} from 'lodash';
|
|
@@ -27,10 +23,8 @@ import { gtmPush } from '../../utils/gtmTrackers';
|
|
|
27
23
|
import './index.scss';
|
|
28
24
|
import * as templateActions from '../Templates/actions';
|
|
29
25
|
import * as globalActions from '../Cap/actions';
|
|
30
|
-
import * as zaloActions from '../Zalo/actions';
|
|
31
26
|
import {isLoading as isLoadingSelector} from './selectors';
|
|
32
27
|
import messages from './messages';
|
|
33
|
-
import zaloMessages from '../Zalo/messages';
|
|
34
28
|
import { MAP_TEMPLATE } from '../WeChat/Wrapper/constants';
|
|
35
29
|
import { makeSelectFetchingCmsData } from '../Email/selectors';
|
|
36
30
|
import { IMAGE as LINE_IMAGE, IMAGE_MAP, IMAGE_CAROUSEL, VIDEO as LINE_VIDEO, TEMPLATE, STICKER } from '../Line/Container/constants';
|
|
@@ -103,35 +97,12 @@ export class Creatives extends React.Component {
|
|
|
103
97
|
}
|
|
104
98
|
this.setState(data);
|
|
105
99
|
};
|
|
106
|
-
|
|
107
|
-
actionCallback = () => {
|
|
108
|
-
CapNotification.error({
|
|
109
|
-
message: <FormattedMessage {...zaloMessages.zaloFailureNotificationPreview}/>,
|
|
110
|
-
});
|
|
111
|
-
};
|
|
112
|
-
|
|
113
100
|
onPreviewTemplate = (template) => {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
}
|
|
101
|
+
const templateData = template;
|
|
102
|
+
const usersList = commonUtil.getMergedUserList(this.props.templateUserList);
|
|
103
|
+
const userId = parseInt(template.updatedBy, 10);
|
|
104
|
+
templateData.updatedByName = commonUtil.getUserNameById(userId, usersList );
|
|
105
|
+
this.setState({ slidBoxContent: 'preview', templateData });
|
|
135
106
|
};
|
|
136
107
|
onEditTemplate = () => {
|
|
137
108
|
this.setState({ slidBoxContent: 'editTemplate', showSlideBox: true, templateNameExists: true });
|
|
@@ -500,14 +471,6 @@ export class Creatives extends React.Component {
|
|
|
500
471
|
},
|
|
501
472
|
},
|
|
502
473
|
};
|
|
503
|
-
break;
|
|
504
|
-
}
|
|
505
|
-
case constants.ZALO: {
|
|
506
|
-
creativesTemplateData = {
|
|
507
|
-
type: constants.ZALO,
|
|
508
|
-
...templateData,
|
|
509
|
-
};
|
|
510
|
-
break;
|
|
511
474
|
}
|
|
512
475
|
default:
|
|
513
476
|
break;
|
|
@@ -808,15 +771,6 @@ export class Creatives extends React.Component {
|
|
|
808
771
|
}
|
|
809
772
|
}
|
|
810
773
|
break;
|
|
811
|
-
case constants.ZALO: {
|
|
812
|
-
if (template.value) {
|
|
813
|
-
templateData = {
|
|
814
|
-
...template.value,
|
|
815
|
-
};
|
|
816
|
-
templateData?.type && delete templateData.type;
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
break;
|
|
820
774
|
default:
|
|
821
775
|
break;
|
|
822
776
|
}
|
|
@@ -1251,7 +1205,6 @@ Creatives.propTypes = {
|
|
|
1251
1205
|
channel: PropTypes.string,
|
|
1252
1206
|
templateActions: PropTypes.object,
|
|
1253
1207
|
globalActions: PropTypes.object,
|
|
1254
|
-
zaloActions: PropTypes.object,
|
|
1255
1208
|
cap: PropTypes.object,
|
|
1256
1209
|
// isLoading: PropTypes.bool,
|
|
1257
1210
|
templateUserList: PropTypes.array,
|
|
@@ -1280,7 +1233,6 @@ function mapDispatchToProps(dispatch) {
|
|
|
1280
1233
|
templateActions: bindActionCreators(templateActions, dispatch),
|
|
1281
1234
|
globalActions: bindActionCreators(globalActions, dispatch),
|
|
1282
1235
|
actions: bindActionCreators(actions, dispatch),
|
|
1283
|
-
zaloActions: bindActionCreators(zaloActions, dispatch),
|
|
1284
1236
|
};
|
|
1285
1237
|
}
|
|
1286
1238
|
export default connect(mapStatesToProps, mapDispatchToProps)(injectIntl(Creatives));
|
|
@@ -341,5 +341,13 @@ export default defineMessages({
|
|
|
341
341
|
"wechat": {
|
|
342
342
|
id: `${scope}.wechat`,
|
|
343
343
|
defaultMessage: `Wechat`,
|
|
344
|
-
}
|
|
344
|
+
},
|
|
345
|
+
"ftp": {
|
|
346
|
+
id: `${scope}.ftp`,
|
|
347
|
+
defaultMessage: `FTP`,
|
|
348
|
+
},
|
|
349
|
+
"noCommunication": {
|
|
350
|
+
id: `${scope}.noCommunication`,
|
|
351
|
+
defaultMessage: `NO_COMMUNICATION`,
|
|
352
|
+
},
|
|
345
353
|
});
|
|
@@ -260,7 +260,6 @@ 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}
|
|
264
263
|
/>
|
|
265
264
|
</div>
|
|
266
265
|
);
|
|
@@ -287,7 +286,6 @@ TagList.propTypes = {
|
|
|
287
286
|
modalProps: PropTypes.any,
|
|
288
287
|
currentOrgDetails: PropTypes.object,
|
|
289
288
|
channel: PropTypes.string,
|
|
290
|
-
disabled: PropTypes.bool
|
|
291
289
|
};
|
|
292
290
|
|
|
293
291
|
const mapStateToProps = createStructuredSelector({
|
|
@@ -869,11 +869,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
869
869
|
}
|
|
870
870
|
|
|
871
871
|
filterZaloTemplates = (templates) => {
|
|
872
|
-
|
|
873
|
-
selectedZaloStatus = !this.props.isFullMode ? ZALO_STATUSES.ENABLE : selectedZaloStatus;
|
|
872
|
+
const { selectedZaloStatus } = this.state;
|
|
874
873
|
if (selectedZaloStatus) {
|
|
875
|
-
return templates?.filter((template) => template?.versions?.base?.content?.zalo
|
|
876
|
-
}
|
|
874
|
+
return templates?.filter((template) => template?.versions?.base?.content?.zalo.status === selectedZaloStatus);
|
|
875
|
+
}
|
|
877
876
|
return templates;
|
|
878
877
|
}
|
|
879
878
|
|
|
@@ -1910,12 +1909,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1910
1909
|
|
|
1911
1910
|
selectTemplate = (id) => find(this.props.TemplatesList, {_id: id})
|
|
1912
1911
|
|
|
1913
|
-
actionCallback = () => {
|
|
1914
|
-
CapNotification.error({
|
|
1915
|
-
message: this.props.intl.formatMessage(zaloMessages.zaloFailureNotificationPreview),
|
|
1916
|
-
});
|
|
1917
|
-
};
|
|
1918
|
-
|
|
1919
1912
|
handlePreviewClick(template, modeType) {
|
|
1920
1913
|
if (this.state.channel.toLowerCase() !== ZALO_LOWERCASE) {
|
|
1921
1914
|
this.togglePreview();
|
|
@@ -1958,7 +1951,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1958
1951
|
token: token,
|
|
1959
1952
|
id: template?._id,
|
|
1960
1953
|
preview: true,
|
|
1961
|
-
actionCallback: this.actionCallback,
|
|
1962
1954
|
});
|
|
1963
1955
|
}
|
|
1964
1956
|
}
|
|
@@ -2908,12 +2900,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
2908
2900
|
) : null
|
|
2909
2901
|
}
|
|
2910
2902
|
|
|
2911
|
-
{
|
|
2912
|
-
channel.toLowerCase() === ZALO_LOWERCASE && !isFullMode ? (
|
|
2913
|
-
<CapInfoNote message={formatMessage(messages.zaloOnlyApprovedTemplates)} />
|
|
2914
|
-
) : null
|
|
2915
|
-
}
|
|
2916
|
-
|
|
2917
2903
|
<CapRow>
|
|
2918
2904
|
<Pagination onPageChange={templates.length ? this.onPaginationChange : () => {}} paginationSelector="pagination-container">
|
|
2919
2905
|
{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,8 +502,4 @@ 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/approved templates are shown here',
|
|
508
|
-
},
|
|
509
505
|
});
|