@capillarytech/creatives-library 8.0.69-alpha.6 → 8.0.69-alpha.8
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/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
+
import Bugsnag from "@bugsnag/js";
|
|
3
4
|
import {
|
|
4
5
|
CapSlideBox,
|
|
5
6
|
CapHeader,
|
|
@@ -139,21 +140,27 @@ export class Creatives extends React.Component {
|
|
|
139
140
|
templateData.updatedByName = commonUtil.getUserNameById(userId, usersList);
|
|
140
141
|
this.setState({ slidBoxContent: constants.PREVIEW, templateData });
|
|
141
142
|
} else {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
143
|
+
if (get(template, 'versions.base.content.zalo.previewUrl')) {
|
|
144
|
+
commonUtil.handlePreviewInNewTab(
|
|
145
|
+
template.versions.base.content.zalo.previewUrl
|
|
146
|
+
);
|
|
147
|
+
} else {
|
|
148
|
+
const {
|
|
149
|
+
name = "",
|
|
150
|
+
sourceAccountIdentifier = "",
|
|
151
|
+
configs: { token = "" } = {},
|
|
152
|
+
hostName = ""
|
|
153
|
+
} = get(this.props, "Templates.selectedZaloAccount", {});
|
|
154
|
+
this.props.zaloActions.getTemplateInfoById({
|
|
155
|
+
username: name,
|
|
156
|
+
oa_id: sourceAccountIdentifier,
|
|
157
|
+
token,
|
|
158
|
+
host: hostName || this.props?.hostName || this.props.Templates?.senderDetails?.hostName,
|
|
159
|
+
id: template?._id,
|
|
160
|
+
preview: true,
|
|
161
|
+
actionCallback: this.actionCallback,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
157
164
|
}
|
|
158
165
|
};
|
|
159
166
|
|
|
@@ -12,6 +12,7 @@ import styled from 'styled-components';
|
|
|
12
12
|
import {injectIntl, intlShape, FormattedMessage } from 'react-intl';
|
|
13
13
|
import { createStructuredSelector } from 'reselect';
|
|
14
14
|
import moment from "moment";
|
|
15
|
+
import Bugsnag from "@bugsnag/js";
|
|
15
16
|
import get from 'lodash/get';
|
|
16
17
|
import isEmpty from 'lodash/isEmpty';
|
|
17
18
|
import isEqual from 'lodash/isEqual';
|
|
@@ -50,7 +51,8 @@ import {
|
|
|
50
51
|
CapImage,
|
|
51
52
|
CapStatus,
|
|
52
53
|
CapColoredTag,
|
|
53
|
-
|
|
54
|
+
CapSpin
|
|
55
|
+
} from "@capillarytech/cap-ui-library";
|
|
54
56
|
import { makeSelectTemplates, makeSelectTemplatesResponse } from './selectors';
|
|
55
57
|
import { makeSelectCreate as makeSelectCreateSms} from '../Sms/Create/selectors';
|
|
56
58
|
import { makeSelectCreate as makeSelectCreateMobilePush } from '../MobilePush/Create/selectors';
|
|
@@ -227,6 +229,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
227
229
|
hostName: '',
|
|
228
230
|
searchedZaloTemplates: [],
|
|
229
231
|
searchingZaloTemplate: false,
|
|
232
|
+
zaloPreviewItemId: {},
|
|
230
233
|
};
|
|
231
234
|
|
|
232
235
|
this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
|
|
@@ -533,8 +536,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
533
536
|
params.accountId = Number(query.account_id);
|
|
534
537
|
this.getAllTemplates({params});
|
|
535
538
|
}
|
|
536
|
-
}
|
|
537
|
-
|
|
539
|
+
}
|
|
540
|
+
|
|
538
541
|
|
|
539
542
|
if (selectedChannel === "ebill" && nextProps.CreateEbill && nextProps.CreateEbill.createResponse && nextProps.CreateEbill.createResponse.templateId && nextProps.CreateEbill.createResponse.templateId !== '') {
|
|
540
543
|
const message = `${this.state.channel} ${this.props.intl.formatMessage(messages.templateDuplicateSuccess)}`;
|
|
@@ -659,10 +662,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
659
662
|
if (weCrmAccountsList?.length && this.state?.defaultAccount && (weCrmChannels.includes(selectedChannel))) {
|
|
660
663
|
const isSingleAccount = weCrmAccountsList?.length === 1;
|
|
661
664
|
const selectedAccount = this.props.Templates[ACCOUNT_MAPPING_ON_CHANNEL[selectedChannel]] || {};
|
|
662
|
-
console.log("***selectedAccount",this.props.Templates, ACCOUNT_MAPPING_ON_CHANNEL ,selectedAccount, weCrmAccountsList, isSingleAccount);
|
|
663
|
-
//check here if isSingleAccount is true then we need to set the hostName to the first account
|
|
664
665
|
const hostName = this.getHostName(isSingleAccount ? weCrmAccountsList[0]?.sourceAccountIdentifier : selectedAccount?.sourceAccountIdentifier, senderDetails?.domainProperties);
|
|
665
|
-
|
|
666
|
+
|
|
666
667
|
if (!isEmpty(hostName)) {
|
|
667
668
|
const paramsDefault = {};
|
|
668
669
|
const {name, sourceAccountIdentifier, configs } = weCrmAccountsList?.[0] || {};
|
|
@@ -684,7 +685,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
684
685
|
paramsDefault.name = this.state.searchText;
|
|
685
686
|
paramsDefault.sortBy = this.state.sortBy;
|
|
686
687
|
}
|
|
687
|
-
console.log("***paramsDefault", paramsDefault);
|
|
688
688
|
this.setState({ defaultAccount: false });
|
|
689
689
|
/**
|
|
690
690
|
* Incase of multiple accounts, getAllTemplates is called on selecting the account. It's handled in onAccountSelect function.
|
|
@@ -697,6 +697,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
697
697
|
}
|
|
698
698
|
const zaloPreviewUrl = get(nextProps, 'Zalo.zaloTemplatePreviewData.versions.base.content.zalo.previewUrl', '');
|
|
699
699
|
if (zaloPreviewUrl && this.state.channel.toLowerCase() === ZALO_LOWERCASE) {
|
|
700
|
+
this.setState({ zaloPreviewItemId: {} });
|
|
700
701
|
handlePreviewInNewTab(zaloPreviewUrl);
|
|
701
702
|
this.props.zaloActions.resetTemplatePreviewData();
|
|
702
703
|
}
|
|
@@ -745,12 +746,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
745
746
|
let hostName = '';
|
|
746
747
|
if (isZaloOrWhatsapp) {
|
|
747
748
|
hostName = this.getHostName(setAcc?.sourceAccountIdentifier, domainProperties);
|
|
748
|
-
|
|
749
|
-
setAcc.hostName = hostName;
|
|
750
|
-
// Ensure the sourceAccountIdentifier is also explicitly set
|
|
751
|
-
setAcc.sourceAccountIdentifier = setAcc.sourceAccountIdentifier || '';
|
|
752
|
-
// this.setState({ hostName });
|
|
753
|
-
}
|
|
749
|
+
setAcc.hostName = hostName;
|
|
754
750
|
}
|
|
755
751
|
this.props.actions.setChannelAccount(selectedChannel?.toUpperCase(), setAcc);
|
|
756
752
|
|
|
@@ -823,13 +819,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
823
819
|
creativesParams.whatsappTemplateName = name;
|
|
824
820
|
creativesParams.whatsappTemplateCategory = get(versions, `base.content.whatsapp.category`, '');
|
|
825
821
|
creativesParams.whatsappTemplateLanguageCode = get(versions, `base.content.whatsapp.languages[0].language`, '');
|
|
826
|
-
// Add source account identifier from selected account
|
|
827
|
-
const whatsappAccountDetails = this.getWhatsappAccountDetails();
|
|
828
|
-
if (this.props.Templates?.selectedWhatsappAccount) {
|
|
829
|
-
creativesParams.sourceAccountIdentifier = this.props.Templates?.selectedWhatsappAccount?.sourceAccountIdentifier;
|
|
830
|
-
creativesParams.hostName = this.props.Templates?.selectedWhatsappAccount?.hostName;
|
|
831
|
-
}
|
|
832
|
-
console.log("***creativesParams", creativesParams, this.props.Templates,whatsappAccountDetails);
|
|
833
822
|
} else if (this.state.channel.toLocaleLowerCase() === ZALO_LOWERCASE) {
|
|
834
823
|
const zaloSelectedTemplateData = this.selectTemplate(parseInt(creativesParams._id, 10)) || {};
|
|
835
824
|
const { name = '' } = zaloSelectedTemplateData;
|
|
@@ -842,12 +831,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
842
831
|
if (this.state.previewOpen) {
|
|
843
832
|
creativesParams.mode = 'preview';
|
|
844
833
|
creativesParams = {...creativesParams, ...this.state.previewTemplate};
|
|
845
|
-
|
|
846
|
-
// Add account details for preview mode
|
|
847
|
-
if (this.state.channel.toLowerCase() === WHATSAPP_LOWERCASE && this.props.Templates?.selectedWhatsappAccount) {
|
|
848
|
-
creativesParams.sourceAccountIdentifier = this.props.Templates.selectedWhatsappAccount.sourceAccountIdentifier;
|
|
849
|
-
creativesParams.hostName = this.props.Templates.selectedWhatsappAccount.hostName;
|
|
850
|
-
}
|
|
851
834
|
}
|
|
852
835
|
return creativesParams;
|
|
853
836
|
}
|
|
@@ -941,7 +924,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
941
924
|
}
|
|
942
925
|
if (
|
|
943
926
|
this.state.channel.toLowerCase() === ZALO_LOWERCASE &&
|
|
944
|
-
!isEmpty(this.props.Templates?.selectedZaloAccount) &&
|
|
927
|
+
!isEmpty(this.props.Templates?.selectedZaloAccount) &&
|
|
945
928
|
!params?.isAccountSelection && !isEmpty(this.props.Templates?.selectedZaloAccount?.hostName)
|
|
946
929
|
) {
|
|
947
930
|
const {
|
|
@@ -1003,7 +986,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1003
986
|
default:
|
|
1004
987
|
return selectedWhatsappCategory === category;
|
|
1005
988
|
}
|
|
1006
|
-
}
|
|
989
|
+
}
|
|
1007
990
|
return true;
|
|
1008
991
|
}
|
|
1009
992
|
filterWhatsappTemplates = (templates) => {
|
|
@@ -1093,7 +1076,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1093
1076
|
) : <>{children}</>
|
|
1094
1077
|
};
|
|
1095
1078
|
|
|
1096
|
-
getTemplateDataForGrid = ({templates = [], handlers, filterContent, channel, isLoading, loadingTip}) => {
|
|
1079
|
+
getTemplateDataForGrid = ({templates = [], handlers, filterContent, channel, isLoading, loadingTip, previewTemplateId }) => {
|
|
1097
1080
|
const currentChannel = channel.toUpperCase();
|
|
1098
1081
|
const {channel: stateChannel} = this.state;
|
|
1099
1082
|
const channelLowerCase = stateChannel.toLowerCase();
|
|
@@ -1125,11 +1108,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1125
1108
|
? this.getCreativesEditText(channelLowerCase)
|
|
1126
1109
|
: messages.selectButton
|
|
1127
1110
|
);
|
|
1128
|
-
|
|
1111
|
+
|
|
1129
1112
|
const cardDataList = filteredTemplates && filteredTemplates.length ? map(filteredTemplates, (template) => {
|
|
1130
1113
|
const androidBodyType = get(template, 'versions.base.content.ANDROID.bodyType');
|
|
1131
1114
|
const iosBodyType = get(template, 'versions.base.content.IOS.bodyType');
|
|
1132
1115
|
const inappBodyType = androidBodyType || iosBodyType;
|
|
1116
|
+
const isZaloPreviewLoading = previewTemplateId === template?._id;
|
|
1133
1117
|
const templateData = {
|
|
1134
1118
|
key: `${currentChannel}-card-${template?.name}`,
|
|
1135
1119
|
title: (
|
|
@@ -1152,20 +1136,27 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1152
1136
|
</span>
|
|
1153
1137
|
),
|
|
1154
1138
|
extra: [
|
|
1155
|
-
|
|
1156
|
-
<
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1139
|
+
currentChannel === ZALO && isZaloPreviewLoading ? (
|
|
1140
|
+
<CapSpin style={{ marginRight: "16px", position: "static", display: "inline" }} spinning />
|
|
1141
|
+
) : (
|
|
1142
|
+
this.getHoverComponent(
|
|
1143
|
+
<CapIcon
|
|
1144
|
+
className={`view-${channelLowerCase}`}
|
|
1145
|
+
style={{ marginRight: "16px" }}
|
|
1146
|
+
type="eye"
|
|
1147
|
+
onClick={() => {
|
|
1148
|
+
if (!this.props.isFullMode || this.props.isDltFromRcs) {
|
|
1149
|
+
if (!get(template, "versions.base.content.zalo.previewUrl", "")) {
|
|
1150
|
+
this.setState({ zaloPreviewItemId: template?._id });
|
|
1151
|
+
}
|
|
1152
|
+
this.props.handlePeviewTemplate(template);
|
|
1153
|
+
} else {
|
|
1154
|
+
handlers.handlePreviewClick(template);
|
|
1155
|
+
}
|
|
1156
|
+
}}
|
|
1157
|
+
/>
|
|
1158
|
+
)
|
|
1159
|
+
)
|
|
1169
1160
|
],
|
|
1170
1161
|
hoverOption: (
|
|
1171
1162
|
<CapButton
|
|
@@ -1174,15 +1165,15 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1174
1165
|
? `edit-${channelLowerCase}`
|
|
1175
1166
|
: `select-${channelLowerCase}`
|
|
1176
1167
|
}
|
|
1177
|
-
onClick={
|
|
1168
|
+
onClick={e =>
|
|
1178
1169
|
handlers.handleEditClick(e, template, undefined, undefined, {
|
|
1179
|
-
account: this.state.selectedAccount
|
|
1170
|
+
account: this.state.selectedAccount
|
|
1180
1171
|
})
|
|
1181
1172
|
}
|
|
1182
1173
|
>
|
|
1183
1174
|
{hoverButtonText}
|
|
1184
1175
|
</CapButton>
|
|
1185
|
-
)
|
|
1176
|
+
)
|
|
1186
1177
|
};
|
|
1187
1178
|
const {
|
|
1188
1179
|
versions: {
|
|
@@ -1241,7 +1232,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1241
1232
|
break;
|
|
1242
1233
|
}
|
|
1243
1234
|
case MOBILE_PUSH:
|
|
1244
|
-
case INAPP:
|
|
1235
|
+
case INAPP:
|
|
1245
1236
|
templateData.content = template;
|
|
1246
1237
|
break;
|
|
1247
1238
|
case WECHAT:
|
|
@@ -2210,21 +2201,26 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
2210
2201
|
this.setState({ previewTemplate: templateInfo });
|
|
2211
2202
|
}
|
|
2212
2203
|
} else {
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2204
|
+
if (get(template, "versions.base.content.zalo.previewUrl", "")) {
|
|
2205
|
+
handlePreviewInNewTab(template.versions.base.content.zalo.previewUrl);
|
|
2206
|
+
} else {
|
|
2207
|
+
this.setState({ zaloPreviewItemId: template._id });
|
|
2208
|
+
const {
|
|
2209
|
+
name = "",
|
|
2210
|
+
sourceAccountIdentifier = "",
|
|
2211
|
+
configs: { token = "" } = {},
|
|
2212
|
+
hostName = ""
|
|
2213
|
+
} = get(this.props, "Templates.selectedZaloAccount", {});
|
|
2214
|
+
this.props.zaloActions.getTemplateInfoById({
|
|
2215
|
+
username: name,
|
|
2216
|
+
oa_id: sourceAccountIdentifier,
|
|
2217
|
+
token,
|
|
2218
|
+
host: hostName || this.state.hostName || this.props.Templates?.senderDetails?.hostName,
|
|
2219
|
+
id: template?._id,
|
|
2220
|
+
preview: true,
|
|
2221
|
+
actionCallback: this.actionCallback
|
|
2222
|
+
});
|
|
2223
|
+
}
|
|
2228
2224
|
}
|
|
2229
2225
|
}
|
|
2230
2226
|
|
|
@@ -2917,18 +2913,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
2917
2913
|
window.open(`/creatives/ui/v2?channel=${WHATSAPP_LOWERCASE}&mode=${CREATE}`, "_blank");
|
|
2918
2914
|
}
|
|
2919
2915
|
|
|
2920
|
-
getWhatsappAccountDetails = () => {
|
|
2921
|
-
const { Templates } = this.props;
|
|
2922
|
-
const selectedAccount = Templates?.selectedWhatsappAccount || {};
|
|
2923
|
-
|
|
2924
|
-
return {
|
|
2925
|
-
sourceAccountIdentifier: selectedAccount?.sourceAccountIdentifier || '',
|
|
2926
|
-
hostName: selectedAccount?.hostName || this.state.hostName || '',
|
|
2927
|
-
accountId: selectedAccount?.id || '',
|
|
2928
|
-
name: selectedAccount?.name || ''
|
|
2929
|
-
};
|
|
2930
|
-
}
|
|
2931
|
-
|
|
2932
2916
|
render() {
|
|
2933
2917
|
const isFullMode = this.isFullMode();
|
|
2934
2918
|
const { activeMode, channel, wechatFilter, lineFilter, smsFilter, templatesCount } = this.state;
|
|
@@ -3215,70 +3199,130 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
3215
3199
|
return (
|
|
3216
3200
|
<>
|
|
3217
3201
|
{activeMode === ACCOUNT_CHANGE_MODE && this.renderAccountSelection()}
|
|
3218
|
-
<div
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3202
|
+
<div
|
|
3203
|
+
className={`creatives-templates-list ${
|
|
3204
|
+
this.props.isFullMode ? "full-mode" : "library-mode"
|
|
3205
|
+
}`}
|
|
3206
|
+
>
|
|
3207
|
+
<input
|
|
3208
|
+
type="file"
|
|
3209
|
+
id="filename"
|
|
3210
|
+
style={{ display: "none" }}
|
|
3211
|
+
accept=".zip, .html, .htm"
|
|
3212
|
+
onChange={event =>
|
|
3213
|
+
this.handleFileUpload(event, { files: event.target.files })
|
|
3214
|
+
}
|
|
3215
|
+
/>
|
|
3226
3216
|
|
|
3227
|
-
{
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
}
|
|
3217
|
+
{channel.toLowerCase() === WHATSAPP_LOWERCASE &&
|
|
3218
|
+
showWhatsappCountWarning ? (
|
|
3219
|
+
<CapAlert message={whatsappCountExceedText} type="info" />
|
|
3220
|
+
) : null}
|
|
3232
3221
|
|
|
3233
|
-
{
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
}
|
|
3222
|
+
{channel.toLowerCase() === WHATSAPP_LOWERCASE && !isFullMode ? (
|
|
3223
|
+
<CapInfoNote
|
|
3224
|
+
message={formatMessage(messages.whatsappOnlyApprovedTemplates)}
|
|
3225
|
+
/>
|
|
3226
|
+
) : null}
|
|
3238
3227
|
|
|
3228
|
+
{channel.toLowerCase() === ZALO_LOWERCASE && !isFullMode ? (
|
|
3229
|
+
<CapInfoNote
|
|
3230
|
+
message={formatMessage(messages.zaloOnlyApprovedTemplates)}
|
|
3231
|
+
/>
|
|
3232
|
+
) : null}
|
|
3239
3233
|
<CapRow>
|
|
3240
|
-
<Pagination
|
|
3241
|
-
{
|
|
3234
|
+
<Pagination
|
|
3235
|
+
templateInProgress={
|
|
3236
|
+
this.props.Templates.getAllTemplatesInProgress
|
|
3237
|
+
}
|
|
3238
|
+
onPageChange={
|
|
3239
|
+
templates.length ? this.onPaginationChange : () => {}
|
|
3240
|
+
}
|
|
3241
|
+
paginationSelector="pagination-container"
|
|
3242
|
+
>
|
|
3243
|
+
{this.getTemplateDataForGrid({
|
|
3244
|
+
previewTemplateId: this.state.zaloPreviewItemId,
|
|
3245
|
+
isLoading,
|
|
3246
|
+
loadingTip,
|
|
3247
|
+
channel: this.state.channel,
|
|
3248
|
+
templates: this.state.searchingZaloTemplate
|
|
3249
|
+
? this.state.searchedZaloTemplates
|
|
3250
|
+
: this.props.TemplatesList,
|
|
3251
|
+
filterContent,
|
|
3252
|
+
handlers: {
|
|
3253
|
+
handlePreviewClick: this.handlePreviewClick,
|
|
3254
|
+
handleEditClick: this.handleEditClick
|
|
3255
|
+
}
|
|
3256
|
+
})}
|
|
3242
3257
|
</Pagination>
|
|
3243
|
-
{showNoTemplatesFound &&
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3258
|
+
{showNoTemplatesFound && (
|
|
3259
|
+
<div
|
|
3260
|
+
style={{
|
|
3261
|
+
height: "65vh",
|
|
3262
|
+
textAlign: "center",
|
|
3263
|
+
lineHeight: "65vh"
|
|
3264
|
+
}}
|
|
3265
|
+
>
|
|
3266
|
+
<CapHeading type="h6">
|
|
3267
|
+
{this.props.intl.formatMessage(messages.noTemplatesFound)}
|
|
3268
|
+
</CapHeading>
|
|
3269
|
+
</div>
|
|
3270
|
+
)}
|
|
3247
3271
|
</CapRow>
|
|
3248
3272
|
|
|
3249
|
-
|
|
3250
3273
|
<CapRow>
|
|
3251
|
-
{!isEmpty(creativesParams.mode) &&
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3274
|
+
{!isEmpty(creativesParams.mode) &&
|
|
3275
|
+
isFullMode && ( //creatives container for fullmode
|
|
3276
|
+
<CreativesContainer
|
|
3277
|
+
key={creativesParams.mode}
|
|
3278
|
+
messageDetails={{ type: "default" }}
|
|
3279
|
+
creativesMode={creativesParams.mode}
|
|
3280
|
+
messages={messages}
|
|
3281
|
+
isFullMode={isFullMode}
|
|
3282
|
+
templateData={creativesParams}
|
|
3283
|
+
getCreativesData={() => {
|
|
3284
|
+
this.onCreateComplete(true);
|
|
3285
|
+
}}
|
|
3286
|
+
channel={route.name.toUpperCase()}
|
|
3287
|
+
handleCloseCreatives={this.onCreateComplete}
|
|
3288
|
+
selectedWeChatAccount={get(
|
|
3289
|
+
this.props,
|
|
3290
|
+
"Templates.selectedWeChatAccount",
|
|
3291
|
+
{}
|
|
3292
|
+
)}
|
|
3293
|
+
selectedAccount={this.state.selectedAccount}
|
|
3294
|
+
/>
|
|
3295
|
+
)}
|
|
3266
3296
|
</CapRow>
|
|
3267
3297
|
<CapRow>
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3298
|
+
{(this.state.channel.toLowerCase() === "ebill" ||
|
|
3299
|
+
this.state.channel.toLowerCase() === "email") &&
|
|
3300
|
+
htmlPreviewContent && (
|
|
3301
|
+
<EmailPreview
|
|
3302
|
+
header={previewHeader}
|
|
3303
|
+
content={htmlPreviewContent}
|
|
3304
|
+
show={this.state.showHtmlPreview}
|
|
3305
|
+
device={this.state.device}
|
|
3306
|
+
handleClose={this.toggleEmailPreview}
|
|
3307
|
+
changePreviewDevice={this.changePreviewDevice}
|
|
3308
|
+
versions={get(this.state, "previewTemplate.versions", {})}
|
|
3309
|
+
lastModified={
|
|
3310
|
+
this.state.previewTemplate
|
|
3311
|
+
? this.state.previewTemplate.updatedAt
|
|
3312
|
+
: ""
|
|
3313
|
+
}
|
|
3314
|
+
updatedByName={commonUtil.getUserNameById(
|
|
3315
|
+
parseInt(this.state.previewTemplate.updatedBy, 10),
|
|
3316
|
+
commonUtil.getMergedUserList(this.props.Templates.userList)
|
|
3317
|
+
)}
|
|
3318
|
+
/>
|
|
3319
|
+
)}
|
|
3280
3320
|
<CapSlideBox
|
|
3281
|
-
header={
|
|
3321
|
+
header={
|
|
3322
|
+
<h3>
|
|
3323
|
+
{this.props.intl.formatMessage(messages.layoutSelection)}
|
|
3324
|
+
</h3>
|
|
3325
|
+
}
|
|
3282
3326
|
width={60}
|
|
3283
3327
|
content={cmsTemplateSelectionContent}
|
|
3284
3328
|
show={this.state.showEdmEmailTemplates}
|
|
@@ -3288,7 +3332,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
3288
3332
|
/>
|
|
3289
3333
|
{this.renderDeleteConfirmationModal()}
|
|
3290
3334
|
</CapRow>
|
|
3291
|
-
|
|
3292
3335
|
</div>
|
|
3293
3336
|
</>
|
|
3294
3337
|
);
|
|
@@ -7,6 +7,8 @@ import * as Api from '../../services/api';
|
|
|
7
7
|
import * as types from './constants';
|
|
8
8
|
import { saveCdnConfigs, removeAllCdnLocalStorageItems } from '../../utils/cdnTransformation';
|
|
9
9
|
import { COPY_OF } from '../../containers/App/constants';
|
|
10
|
+
import { ZALO_TEMPLATE_INFO_REQUEST } from '../Zalo/constants';
|
|
11
|
+
import { getTemplateInfoById } from '../Zalo/saga';
|
|
10
12
|
// Individual exports for testing
|
|
11
13
|
export function* getAllTemplates(channel, queryParams) {
|
|
12
14
|
try {
|
|
@@ -221,6 +223,10 @@ export function* watchGetCdnTransformationConfig() {
|
|
|
221
223
|
);
|
|
222
224
|
}
|
|
223
225
|
|
|
226
|
+
export function* watchForGetTemplateInfoById() {
|
|
227
|
+
yield takeLatest(ZALO_TEMPLATE_INFO_REQUEST, getTemplateInfoById);
|
|
228
|
+
}
|
|
229
|
+
|
|
224
230
|
// All sagas to be loaded
|
|
225
231
|
export default [
|
|
226
232
|
watchGetAllTemplates,
|
|
@@ -245,6 +251,7 @@ export function* v2TemplateSaga() {
|
|
|
245
251
|
watchGetCdnTransformationConfig(),
|
|
246
252
|
watchFetchWeCrmAccounts(),
|
|
247
253
|
watchGetSenderDetails(),
|
|
254
|
+
watchForGetTemplateInfoById(),
|
|
248
255
|
]);
|
|
249
256
|
}
|
|
250
257
|
|