@capillarytech/creatives-library 8.0.239-alpha.0 → 8.0.239
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 +1 -1
- package/services/api.js +0 -5
- package/translations/en.json +0 -1
- package/utils/transformerUtils.js +0 -42
- package/v2Components/CapImageUpload/constants.js +0 -2
- package/v2Components/CapImageUpload/index.js +14 -54
- package/v2Components/CapImageUpload/index.scss +1 -4
- package/v2Components/CapImageUpload/messages.js +0 -4
- package/v2Containers/App/constants.js +0 -5
- package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +0 -1
- package/v2Containers/CreativesContainer/SlideBoxContent.js +2 -57
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +0 -1
- package/v2Containers/CreativesContainer/constants.js +0 -2
- package/v2Containers/CreativesContainer/index.js +0 -152
- package/v2Containers/CreativesContainer/messages.js +0 -4
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +0 -3
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +0 -2
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +0 -25
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +0 -18
- package/v2Containers/Rcs/index.js +153 -383
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +0 -46
- package/v2Containers/Rcs/tests/index.test.js +168 -0
- package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +0 -4
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +0 -8
- package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
- package/v2Containers/Templates/_templates.scss +0 -203
- package/v2Containers/Templates/actions.js +1 -2
- package/v2Containers/Templates/constants.js +0 -1
- package/v2Containers/Templates/index.js +30 -273
- package/v2Containers/Templates/messages.js +0 -24
- package/v2Containers/Templates/reducer.js +0 -2
- package/v2Containers/Templates/tests/index.test.js +0 -10
- package/v2Containers/TemplatesV2/index.js +2 -3
- package/v2Containers/TemplatesV2/messages.js +0 -4
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +0 -132
- package/v2Components/CapImageUrlUpload/constants.js +0 -19
- package/v2Components/CapImageUrlUpload/index.js +0 -455
- package/v2Components/CapImageUrlUpload/index.scss +0 -35
- package/v2Components/CapImageUrlUpload/messages.js +0 -47
- package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -175
- package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
- package/v2Containers/WebPush/Create/components/ButtonList.js +0 -144
- package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
- package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
- package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
- package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -633
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -80
- package/v2Containers/WebPush/Create/index.js +0 -1727
- package/v2Containers/WebPush/Create/index.scss +0 -123
- package/v2Containers/WebPush/Create/messages.js +0 -199
- package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -241
- package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -290
- package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -81
- package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -240
- package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -23
- package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -139
- package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
- package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
- package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
- package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
- package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
- package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -44
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -110
- package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
- package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -72
- package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -55
- package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -70
- package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -512
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -77
- package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -527
- package/v2Containers/WebPush/Create/preview/constants.js +0 -162
- package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -104
- package/v2Containers/WebPush/Create/preview/preview.scss +0 -409
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -300
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -303
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -188
- package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -106
- package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
- package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -75
- package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -174
- package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
- package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1077
- package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
- package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -943
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -128
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -121
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -127
- package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -116
- package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
- package/v2Containers/WebPush/actions.js +0 -60
- package/v2Containers/WebPush/constants.js +0 -108
- package/v2Containers/WebPush/index.js +0 -2
- package/v2Containers/WebPush/reducer.js +0 -104
- package/v2Containers/WebPush/sagas.js +0 -119
- package/v2Containers/WebPush/selectors.js +0 -65
- package/v2Containers/WebPush/tests/reducer.test.js +0 -863
- package/v2Containers/WebPush/tests/sagas.test.js +0 -566
- package/v2Containers/WebPush/tests/selectors.test.js +0 -843
package/package.json
CHANGED
package/services/api.js
CHANGED
|
@@ -287,11 +287,6 @@ export const createMobilePushTemplateV2 = (template) => {
|
|
|
287
287
|
return request(url, getAPICallObject('POST', template));
|
|
288
288
|
};
|
|
289
289
|
|
|
290
|
-
export const createWebPushTemplate = (template) => {
|
|
291
|
-
const url = `${API_ENDPOINT}/templates/WEBPUSH`;
|
|
292
|
-
return request(url, getAPICallObject('POST', template));
|
|
293
|
-
};
|
|
294
|
-
|
|
295
290
|
export const duplicateTemplate = ({id, channel}) => {
|
|
296
291
|
const url = `${API_ENDPOINT}/templates/duplicate/${id}/${channel}`;
|
|
297
292
|
return request(url, getAPICallObject('GET'));
|
package/translations/en.json
CHANGED
|
@@ -2022,7 +2022,6 @@
|
|
|
2022
2022
|
"creatives.containersV2.Whatsapp.vietnamese": "Vietnamese",
|
|
2023
2023
|
"creatives.containersV2.Whatsapp.whatsappCreateNotification": "{name} has been sent for approval",
|
|
2024
2024
|
"creatives.containersV2.Whatsapp.zulu": "Zulu",
|
|
2025
|
-
"creatives.containersV2.WebPush.addLabels": "Add labels",
|
|
2026
2025
|
"creatives.containersV2.addLabels": "Add labels",
|
|
2027
2026
|
"creatives.containersV2.appName": "App Name",
|
|
2028
2027
|
"creatives.containersV2.applyNow": "Apply now",
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
RCS,
|
|
11
11
|
LINE,
|
|
12
12
|
VIBER,
|
|
13
|
-
WEBPUSH,
|
|
14
13
|
EMF,
|
|
15
14
|
VENENO,
|
|
16
15
|
TEXT,
|
|
@@ -64,8 +63,6 @@ export const transformChannelPayload = (data, options = {}) => {
|
|
|
64
63
|
return transformLinePayload(data, options);
|
|
65
64
|
case VIBER:
|
|
66
65
|
return transformViberPayload(data, options);
|
|
67
|
-
case WEBPUSH:
|
|
68
|
-
return transformWebpushPayload(data, options);
|
|
69
66
|
default:
|
|
70
67
|
return data; // Return unchanged for unsupported channels
|
|
71
68
|
}
|
|
@@ -320,45 +317,6 @@ const transformViberPayload = (viberData, options = {}) => {
|
|
|
320
317
|
return payload;
|
|
321
318
|
};
|
|
322
319
|
|
|
323
|
-
/**
|
|
324
|
-
* Transforms WebPush data to the required payload format
|
|
325
|
-
* @param {Object} webpushData - Current WebPush data
|
|
326
|
-
* @param {Object} options - Additional options (ouId, sourceEntityId, etc.)
|
|
327
|
-
* @returns {Object} - Transformed WebPush payload
|
|
328
|
-
*/
|
|
329
|
-
const transformWebpushPayload = (webpushData, options = {}) => {
|
|
330
|
-
const { loyaltyMetaData = {} } = options;
|
|
331
|
-
const { transformedMessageDetails = {} } = loyaltyMetaData;
|
|
332
|
-
const { webpushDeliverySettings = {} } = transformedMessageDetails || {};
|
|
333
|
-
|
|
334
|
-
// Get base payload structure
|
|
335
|
-
const payload = createBasePayload(WEBPUSH, loyaltyMetaData);
|
|
336
|
-
|
|
337
|
-
// Extract webpush content from messageContent.content.content structure
|
|
338
|
-
const webpushContent = webpushData?.messageContent?.content?.content || {};
|
|
339
|
-
const accountId = webpushData?.messageContent?.content?.accountId || 0;
|
|
340
|
-
|
|
341
|
-
// Add WebPush-specific properties
|
|
342
|
-
payload.centralCommsPayload.webpushMessageContent = {
|
|
343
|
-
channel: WEBPUSH,
|
|
344
|
-
accountId,
|
|
345
|
-
isDefault: webpushData?.messageContent?.content?.isDefault || false,
|
|
346
|
-
storeType: webpushData?.messageContent?.content?.storeType || 'REGISTERED_STORE',
|
|
347
|
-
content: {
|
|
348
|
-
title: webpushContent?.title || '',
|
|
349
|
-
message: webpushContent?.message || '',
|
|
350
|
-
...(webpushContent?.iconImageUrl && { iconImageUrl: webpushContent.iconImageUrl }),
|
|
351
|
-
...(webpushContent?.cta && { cta: webpushContent.cta }),
|
|
352
|
-
...(webpushContent?.expandableDetails && { expandableDetails: webpushContent.expandableDetails }),
|
|
353
|
-
},
|
|
354
|
-
messageSubject: webpushData?.messageSubject || "",
|
|
355
|
-
offers: webpushData?.messageContent?.content?.offers || [],
|
|
356
|
-
};
|
|
357
|
-
payload.centralCommsPayload.webpushDeliverySettings = webpushDeliverySettings;
|
|
358
|
-
|
|
359
|
-
return payload;
|
|
360
|
-
};
|
|
361
|
-
|
|
362
320
|
// Checks if the template has changed
|
|
363
321
|
export const getTemplateDiffState = (channel, oldData, newData) => {
|
|
364
322
|
switch (channel.toUpperCase()) {
|
|
@@ -17,18 +17,17 @@ import {
|
|
|
17
17
|
CapImage,
|
|
18
18
|
CapError,
|
|
19
19
|
} from '@capillarytech/cap-ui-library';
|
|
20
|
-
import { injectIntl, FormattedMessage, intlShape
|
|
20
|
+
import { injectIntl, FormattedMessage, intlShape} from 'react-intl';
|
|
21
21
|
import { isEmpty, get } from 'lodash';
|
|
22
22
|
import './index.scss';
|
|
23
23
|
import Gallery from '../../v2Containers/Assets/Gallery';
|
|
24
24
|
import { MAX_SUPPORTED_IMAGE_SIZE } from './constants';
|
|
25
25
|
import {
|
|
26
|
-
FACEBOOK, INAPP, RCS, WHATSAPP, VIBER,
|
|
26
|
+
FACEBOOK, INAPP, RCS, WHATSAPP, VIBER,
|
|
27
27
|
} from "../../v2Containers/CreativesContainer/constants";
|
|
28
28
|
|
|
29
29
|
import messages from './messages';
|
|
30
30
|
import { MOBILEPUSH } from '../CapVideoUpload/constants';
|
|
31
|
-
import { CAP_SPACE_16 } from '@capillarytech/cap-ui-library/styled/variables';
|
|
32
31
|
function CapImageUpload(props) {
|
|
33
32
|
const {
|
|
34
33
|
intl,
|
|
@@ -51,7 +50,6 @@ function CapImageUpload(props) {
|
|
|
51
50
|
channelSpecificStyle,
|
|
52
51
|
showReUploadButton = true,
|
|
53
52
|
disableAutoRestore = false, // New prop to disable automatic restoration
|
|
54
|
-
recommendedDimensions, // Array of {width, height} objects for recommended dimensions
|
|
55
53
|
} = props;
|
|
56
54
|
const {
|
|
57
55
|
formatMessage,
|
|
@@ -74,7 +72,7 @@ function CapImageUpload(props) {
|
|
|
74
72
|
const [isImageError, updateImageErrorMessage] = useState(false);
|
|
75
73
|
const [isDrawerRequired, updateDrawerRequirement] = useState(false);
|
|
76
74
|
|
|
77
|
-
const {
|
|
75
|
+
const {CapHeadingSpan} = CapHeading;
|
|
78
76
|
const ImageComponent = useCallback(
|
|
79
77
|
() => (
|
|
80
78
|
<>
|
|
@@ -93,7 +91,7 @@ function CapImageUpload(props) {
|
|
|
93
91
|
|
|
94
92
|
const WithLabel = LabelHOC(ImageComponent);
|
|
95
93
|
|
|
96
|
-
const uploadImages = useCallback((e, {
|
|
94
|
+
const uploadImages = useCallback((e, {files}) => {
|
|
97
95
|
if (e) {
|
|
98
96
|
e.preventDefault();
|
|
99
97
|
}
|
|
@@ -111,13 +109,13 @@ function CapImageUpload(props) {
|
|
|
111
109
|
height: img.height,
|
|
112
110
|
error: file && (file.size / (1e+6) > 5), // Checking if file exists and its size is greater than 5MB (5 * 10^6 bytes)
|
|
113
111
|
};
|
|
114
|
-
submitAction({
|
|
112
|
+
submitAction({file, type: 'image', fileParams}, incorrectFile);
|
|
115
113
|
};
|
|
116
114
|
img.onerror = () => {
|
|
117
115
|
const fileParams = {
|
|
118
116
|
error: true,
|
|
119
117
|
};
|
|
120
|
-
submitAction({
|
|
118
|
+
submitAction({fileParams}, incorrectFile);
|
|
121
119
|
};
|
|
122
120
|
if (e) {
|
|
123
121
|
const event = e;
|
|
@@ -125,7 +123,7 @@ function CapImageUpload(props) {
|
|
|
125
123
|
}
|
|
126
124
|
}, []);
|
|
127
125
|
|
|
128
|
-
const rcsValidation = useCallback((incorrectFile, data, size, height, width, error) => {
|
|
126
|
+
const rcsValidation = useCallback((incorrectFile, data, size, height, width, error) => {
|
|
129
127
|
if (incorrectFile || size < minImgSize || size > imgSize || height !== imgHeight || width !== imgWidth || error) {
|
|
130
128
|
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
131
129
|
} else {
|
|
@@ -148,19 +146,6 @@ function CapImageUpload(props) {
|
|
|
148
146
|
const { height, width, error } = fileParams || {};
|
|
149
147
|
if (channel === RCS) {
|
|
150
148
|
rcsValidation(incorrectFile, data, size, height, width, error);
|
|
151
|
-
} else if ([WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel)) {
|
|
152
|
-
// For WEBPUSH, only validate file extension, size, and format - no dimension validation
|
|
153
|
-
if (incorrectFile || size > imgSize || error) {
|
|
154
|
-
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
155
|
-
} else {
|
|
156
|
-
updateImageErrorMessage('');
|
|
157
|
-
uploadAsset(
|
|
158
|
-
data.file,
|
|
159
|
-
data.type,
|
|
160
|
-
data.fileParams,
|
|
161
|
-
index,
|
|
162
|
-
);
|
|
163
|
-
}
|
|
164
149
|
} else if (incorrectFile || size > imgSize || height > imgHeight || width > imgWidth || error) {
|
|
165
150
|
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
166
151
|
} else {
|
|
@@ -175,7 +160,7 @@ function CapImageUpload(props) {
|
|
|
175
160
|
}, [isImageError]);
|
|
176
161
|
|
|
177
162
|
const capUploaderCustomRequest = useCallback((uploadData) => {
|
|
178
|
-
uploadImages(undefined, {
|
|
163
|
+
uploadImages(undefined, {files: [uploadData.file]});
|
|
179
164
|
}, [uploadImages]);
|
|
180
165
|
|
|
181
166
|
const setDrawerVisibility = useCallback((drawervisibleFlag) => updateDrawerRequirement(drawervisibleFlag), [isDrawerRequired]);
|
|
@@ -196,27 +181,19 @@ function CapImageUpload(props) {
|
|
|
196
181
|
secure_file_path: image, width, height, file_size: size,
|
|
197
182
|
} = get(imageTemplate, 'metaInfo', {});
|
|
198
183
|
updateDrawerRequirement(false);
|
|
199
|
-
|
|
200
|
-
if ([WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel)) {
|
|
201
|
-
if (!allowedExtensionsRegex.test(image) || size > imgSize) {
|
|
202
|
-
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
203
|
-
} else {
|
|
204
|
-
updateImageErrorMessage('');
|
|
205
|
-
updateImageSrc(image);
|
|
206
|
-
}
|
|
207
|
-
} else if (!allowedExtensionsRegex.test(image) || height > imgHeight || width > imgWidth || size > imgSize) {
|
|
184
|
+
if (!allowedExtensionsRegex.test(image) || height > imgHeight || width > imgWidth || size > imgSize ) {
|
|
208
185
|
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
209
186
|
} else {
|
|
210
187
|
updateImageErrorMessage('');
|
|
211
188
|
updateImageSrc(image);
|
|
212
189
|
}
|
|
213
|
-
}, [isImageError, isDrawerRequired
|
|
190
|
+
}, [isImageError, isDrawerRequired]);
|
|
214
191
|
|
|
215
192
|
const getGalleryDrawerContent = useCallback(() => {
|
|
216
193
|
const locationGallery = {
|
|
217
194
|
pathname: `/assets`,
|
|
218
195
|
search: '',
|
|
219
|
-
query: !isFullMode ? {
|
|
196
|
+
query: !isFullMode ? {type: 'embedded', module: 'library'} : {},
|
|
220
197
|
};
|
|
221
198
|
return (
|
|
222
199
|
<>
|
|
@@ -285,7 +262,7 @@ function CapImageUpload(props) {
|
|
|
285
262
|
className="dragger-button re-upload"
|
|
286
263
|
type="flat"
|
|
287
264
|
onClick={onReUpload}
|
|
288
|
-
style={channelSpecificStyle ? { marginTop:
|
|
265
|
+
style={channelSpecificStyle ? { marginTop: '-16px'} : {}}
|
|
289
266
|
>
|
|
290
267
|
<FormattedMessage {...messages.imageReUpload} />
|
|
291
268
|
</CapButton>
|
|
@@ -328,18 +305,7 @@ function CapImageUpload(props) {
|
|
|
328
305
|
)}
|
|
329
306
|
{![WHATSAPP, INAPP].includes(channel) && (
|
|
330
307
|
<CapHeadingSpan type="label2" className="image-dimension">
|
|
331
|
-
{
|
|
332
|
-
<FormattedMessage
|
|
333
|
-
{...messages.recommendedDimensions}
|
|
334
|
-
values={{
|
|
335
|
-
dimensions: recommendedDimensions
|
|
336
|
-
.map((dim) => `${dim.width} x ${dim.height}px`)
|
|
337
|
-
.join(', '),
|
|
338
|
-
}}
|
|
339
|
-
/>
|
|
340
|
-
) : (
|
|
341
|
-
<FormattedMessage {...messages.imageDimenstionDescription} values={{ width: imgWidth, height: imgHeight }} />
|
|
342
|
-
)}
|
|
308
|
+
<FormattedMessage {...messages.imageDimenstionDescription} values={{ width: imgWidth, height: imgHeight }} />
|
|
343
309
|
</CapHeadingSpan>
|
|
344
310
|
)}
|
|
345
311
|
{channel === FACEBOOK && (
|
|
@@ -362,7 +328,7 @@ function CapImageUpload(props) {
|
|
|
362
328
|
getImageSizeLabel()
|
|
363
329
|
)
|
|
364
330
|
)}
|
|
365
|
-
{[VIBER, INAPP, MOBILEPUSH
|
|
331
|
+
{[VIBER, INAPP, MOBILEPUSH].includes(channel) && getImageSizeLabel()}
|
|
366
332
|
<CapHeadingSpan type="label2" className="image-format">
|
|
367
333
|
{channel === INAPP ? <FormattedMessage {...messages.format2} /> : <FormattedMessage {...messages.format} />}
|
|
368
334
|
</CapHeadingSpan>
|
|
@@ -391,12 +357,6 @@ CapImageUpload.propTypes = {
|
|
|
391
357
|
channel: PropTypes.string,
|
|
392
358
|
channelSpecificStyle: PropTypes.bool,
|
|
393
359
|
disableAutoRestore: PropTypes.bool,
|
|
394
|
-
recommendedDimensions: PropTypes.arrayOf(
|
|
395
|
-
PropTypes.shape({
|
|
396
|
-
width: PropTypes.number.isRequired,
|
|
397
|
-
height: PropTypes.number.isRequired,
|
|
398
|
-
})
|
|
399
|
-
),
|
|
400
360
|
};
|
|
401
361
|
|
|
402
362
|
export default injectIntl(CapImageUpload);
|
|
@@ -34,10 +34,6 @@ export default defineMessages({
|
|
|
34
34
|
id: `${scope}.imageDimenstionDescription`,
|
|
35
35
|
defaultMessage: 'Dimensions upto: {width}px x {height}px',
|
|
36
36
|
},
|
|
37
|
-
recommendedDimensions: {
|
|
38
|
-
id: `${scope}.recommendedDimensions`,
|
|
39
|
-
defaultMessage: 'Recommended dimensions: {dimensions}',
|
|
40
|
-
},
|
|
41
37
|
format: {
|
|
42
38
|
id: `${scope}.format`,
|
|
43
39
|
defaultMessage: 'Format: JPEG, JPG, PNG',
|
|
@@ -40,7 +40,6 @@ export const TRACK_CREATE_IMAGE = 'createImage';
|
|
|
40
40
|
export const TRACK_CREATE_LINE = 'createLine';
|
|
41
41
|
export const TRACK_CREATE_VIBER = 'createViber';
|
|
42
42
|
export const TRACK_CREATE_FACEBOOK = 'createFacebook';
|
|
43
|
-
export const TRACK_CREATE_WEBPUSH = 'createWebPush';
|
|
44
43
|
|
|
45
44
|
export const CREATE = 'create';
|
|
46
45
|
export const EDIT = 'edit';
|
|
@@ -55,7 +54,6 @@ export const EMAIL = 'email';
|
|
|
55
54
|
export const ASSETS = 'assets';
|
|
56
55
|
export const ZALO = 'zalo';
|
|
57
56
|
export const INAPP = 'inapp';
|
|
58
|
-
export const WEBPUSH = 'webpush';
|
|
59
57
|
|
|
60
58
|
export const JP_LOCALE_HIDE_FEATURE = 'JP_LOCALE_HIDE_FEATURE';
|
|
61
59
|
|
|
@@ -67,7 +65,6 @@ export const TRACK_EDIT_IMAGE = 'editImage';
|
|
|
67
65
|
export const TRACK_EDIT_LINE = 'editLine';
|
|
68
66
|
export const TRACK_EDIT_VIBER = 'editViber';
|
|
69
67
|
export const TRACK_EDIT_FACEBOOK = 'editFacebook';
|
|
70
|
-
export const TRACK_EDIT_WEBPUSH = 'editWebPush';
|
|
71
68
|
|
|
72
69
|
export const CHANNEL_CREATE_TRACK_MAPPING = {
|
|
73
70
|
sms: TRACK_CREATE_SMS,
|
|
@@ -78,7 +75,6 @@ export const CHANNEL_CREATE_TRACK_MAPPING = {
|
|
|
78
75
|
line: TRACK_CREATE_LINE,
|
|
79
76
|
viber: TRACK_CREATE_VIBER,
|
|
80
77
|
facebook: TRACK_CREATE_FACEBOOK,
|
|
81
|
-
webpush: TRACK_CREATE_WEBPUSH,
|
|
82
78
|
};
|
|
83
79
|
|
|
84
80
|
export const CHANNEL_EDIT_TRACK_MAPPING = {
|
|
@@ -90,7 +86,6 @@ export const CHANNEL_EDIT_TRACK_MAPPING = {
|
|
|
90
86
|
line: TRACK_EDIT_LINE,
|
|
91
87
|
viber: TRACK_EDIT_VIBER,
|
|
92
88
|
facebook: TRACK_EDIT_FACEBOOK,
|
|
93
|
-
webpush: TRACK_EDIT_WEBPUSH,
|
|
94
89
|
};
|
|
95
90
|
export const GTM_TRACKING_ID = 'UA-110024621-2';
|
|
96
91
|
export const BEE_PLUGIN = 'BEE_PLUGIN';
|
|
@@ -1950,7 +1950,6 @@ new message content.",
|
|
|
1950
1950
|
"creatives.containersV2.WeChat.templateName": "Template Name",
|
|
1951
1951
|
"creatives.containersV2.WeChat.wechatCreateSuccess": "WeChat template mapped successfully",
|
|
1952
1952
|
"creatives.containersV2.WeChat.wechatEditSuccess": "WeChat template edited successfully",
|
|
1953
|
-
"creatives.containersV2.WebPush.addLabels": "Add labels",
|
|
1954
1953
|
"creatives.containersV2.Whatsapp.IncorrectCategoryError": "INCORRECT CATEGORY: Message content different from expected content in the category selected. Refer {here} for expected content in each category.",
|
|
1955
1954
|
"creatives.containersV2.Whatsapp.accountUpdate": "Account update",
|
|
1956
1955
|
"creatives.containersV2.Whatsapp.accountUpdateTooltip": "Let customers know about updates or changes to their accounts.",
|
|
@@ -28,10 +28,6 @@ import { getWhatsappContent } from '../Whatsapp/utils';
|
|
|
28
28
|
import * as commonUtil from '../../utils/common';
|
|
29
29
|
import Zalo from '../Zalo';
|
|
30
30
|
import MobilePushNew from '../MobilePushNew';
|
|
31
|
-
import WebPush from '../WebPush';
|
|
32
|
-
import DevicePreviewContent from '../WebPush/Create/preview/DevicePreviewContent';
|
|
33
|
-
import { LAYOUT_MODE } from '../WebPush/Create/preview/constants';
|
|
34
|
-
import { WEBPUSH_CONTENT_FIELDS, WEBPUSH_TEMPLATE_PATHS } from '../WebPush/constants';
|
|
35
31
|
const CreativesWrapper = styled.div`
|
|
36
32
|
.ant-popover,
|
|
37
33
|
.ant-notification,
|
|
@@ -168,7 +164,6 @@ export function SlideBoxContent(props) {
|
|
|
168
164
|
handleTestAndPreview,
|
|
169
165
|
handleCloseTestAndPreview,
|
|
170
166
|
isTestAndPreviewMode,
|
|
171
|
-
supportedTags = [],
|
|
172
167
|
} = props;
|
|
173
168
|
const type = (messageDetails.type || '').toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
|
|
174
169
|
const query = { type: !isFullMode && 'embedded', module: isFullMode ? 'default' : 'library', isEditFromCampaigns: (templateData || {}).isEditFromCampaigns};
|
|
@@ -205,7 +200,6 @@ export function SlideBoxContent(props) {
|
|
|
205
200
|
const isCreateRcs = isCreate && channel === constants.RCS;
|
|
206
201
|
const isCreateMPush = isCreate && channel === constants.MOBILE_PUSH;
|
|
207
202
|
const isCreateCallTask = isCreate && channel === constants.CALL_TASK;
|
|
208
|
-
const isCreateWebPush = isCreate && channel === constants.WEBPUSH;
|
|
209
203
|
let isEditSms = false;
|
|
210
204
|
let isEditEmailWithId = false;
|
|
211
205
|
let isEmailEditWithContent = false;
|
|
@@ -213,14 +207,12 @@ export function SlideBoxContent(props) {
|
|
|
213
207
|
let isEmailPreview = false;
|
|
214
208
|
let isMpushPreview = false;
|
|
215
209
|
let isInappPreview = false;
|
|
216
|
-
let isWebPushPreview = false;
|
|
217
210
|
let isEditCallTask = false;
|
|
218
211
|
let isEditMPush = false;
|
|
219
212
|
let isEditFacebook = false;
|
|
220
213
|
let isEditFTP = false;
|
|
221
214
|
let isEditWhatsapp = false;
|
|
222
215
|
let isEditInApp = false;
|
|
223
|
-
let isEditWebPush = false;
|
|
224
216
|
let isEditRcs = false;
|
|
225
217
|
let isEditZalo = false;
|
|
226
218
|
const isEmailCreate = isCreate && channel === constants.EMAIL;
|
|
@@ -234,12 +226,10 @@ export function SlideBoxContent(props) {
|
|
|
234
226
|
isEditFacebook = isEdit && channel === constants.FACEBOOK;
|
|
235
227
|
isEditWhatsapp = isEdit && channel === constants.WHATSAPP;
|
|
236
228
|
isEditRcs = isEdit && channel === constants.RCS;
|
|
237
|
-
isEditWebPush = isEdit && channel === constants.WEBPUSH;
|
|
238
229
|
isPreview = slidBoxContent === 'preview' && [constants.SMS, constants.LINE, constants.WHATSAPP, constants.FACEBOOK, constants.VIBER, constants.RCS].includes(channel);
|
|
239
230
|
isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
|
|
240
231
|
isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
|
|
241
232
|
isInappPreview = slidBoxContent === 'preview' && channel === constants.INAPP;
|
|
242
|
-
isWebPushPreview = slidBoxContent === 'preview' && channel === constants.WEBPUSH;
|
|
243
233
|
isEditFTP = isEdit && [constants.NO_COMMUNICATION, constants.FTP].includes(channel);
|
|
244
234
|
isEditZalo = isEdit && channel?.toUpperCase() === constants.ZALO;
|
|
245
235
|
isEditInApp = isEdit && channel === constants.INAPP;
|
|
@@ -487,30 +477,8 @@ export function SlideBoxContent(props) {
|
|
|
487
477
|
templateData={templateData}
|
|
488
478
|
channel={channel}
|
|
489
479
|
forwardedTags={forwardedTags}
|
|
490
|
-
|
|
480
|
+
/>
|
|
491
481
|
)}
|
|
492
|
-
{isWebPushPreview && (() => {
|
|
493
|
-
const webpushContent = get(templateData, WEBPUSH_TEMPLATE_PATHS.CONTENT, {});
|
|
494
|
-
const notificationTitle = webpushContent?.[WEBPUSH_CONTENT_FIELDS.TITLE] || '';
|
|
495
|
-
const notificationBody = webpushContent?.[WEBPUSH_CONTENT_FIELDS.MESSAGE] || '';
|
|
496
|
-
const imageSrc = webpushContent?.[WEBPUSH_CONTENT_FIELDS.IMAGE] || '';
|
|
497
|
-
const brandIconSrc = webpushContent?.[WEBPUSH_CONTENT_FIELDS.BRAND_ICON] || '';
|
|
498
|
-
// Extract URL from onClickAction or use empty string
|
|
499
|
-
const url = webpushContent?.[WEBPUSH_CONTENT_FIELDS.ON_CLICK_ACTION]?.url || '';
|
|
500
|
-
|
|
501
|
-
return (
|
|
502
|
-
<div className="webpush-preview-container">
|
|
503
|
-
<DevicePreviewContent
|
|
504
|
-
notificationTitle={notificationTitle}
|
|
505
|
-
notificationBody={notificationBody}
|
|
506
|
-
url={url}
|
|
507
|
-
imageSrc={imageSrc}
|
|
508
|
-
brandIconSrc={brandIconSrc}
|
|
509
|
-
layoutMode={LAYOUT_MODE.COMPACT}
|
|
510
|
-
/>
|
|
511
|
-
</div>
|
|
512
|
-
);
|
|
513
|
-
})()}
|
|
514
482
|
|
|
515
483
|
{
|
|
516
484
|
(currentChannel === constants.WECHAT && !!slidBoxContent) && <WechatWrapper
|
|
@@ -1011,28 +979,6 @@ export function SlideBoxContent(props) {
|
|
|
1011
979
|
/>
|
|
1012
980
|
)}
|
|
1013
981
|
|
|
1014
|
-
{(isCreateWebPush || isEditWebPush) && (
|
|
1015
|
-
<WebPush
|
|
1016
|
-
isFullMode={isFullMode}
|
|
1017
|
-
handleClose={handleClose}
|
|
1018
|
-
onCreateComplete={onCreateComplete}
|
|
1019
|
-
getFormData={getFormData}
|
|
1020
|
-
isGetFormData={isGetFormData}
|
|
1021
|
-
templateData={isEditWebPush ? templateData : undefined}
|
|
1022
|
-
creativesMode={creativesMode}
|
|
1023
|
-
params={isEditWebPush && templateData ? { id: templateData._id } : undefined}
|
|
1024
|
-
location={{
|
|
1025
|
-
pathname: isEditWebPush ? '/webpush/edit' : '/webpush/create',
|
|
1026
|
-
query,
|
|
1027
|
-
search: '',
|
|
1028
|
-
}}
|
|
1029
|
-
getDefaultTags={type}
|
|
1030
|
-
forwardedTags={forwardedTags}
|
|
1031
|
-
supportedTags={supportedTags}
|
|
1032
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
1033
|
-
eventContextTags={eventContextTags}
|
|
1034
|
-
/>
|
|
1035
|
-
)}
|
|
1036
982
|
{isCreateRcs && (<Rcs
|
|
1037
983
|
{...rcsCommonProps}
|
|
1038
984
|
showLiquidErrorInFooter={showLiquidErrorInFooter}
|
|
@@ -1089,7 +1035,6 @@ SlideBoxContent.propTypes = {
|
|
|
1089
1035
|
onValidationFail: PropTypes.func,
|
|
1090
1036
|
channelsToHide: PropTypes.array,
|
|
1091
1037
|
forwardedTags: PropTypes.object,
|
|
1092
|
-
supportedTags: PropTypes.array,
|
|
1093
1038
|
selectedOfferDetails: PropTypes.array,
|
|
1094
1039
|
channelsToDisable: PropTypes.array,
|
|
1095
1040
|
weChatTemplateType: PropTypes.string,
|
|
@@ -1105,7 +1050,7 @@ SlideBoxContent.propTypes = {
|
|
|
1105
1050
|
onFTPSubmit: PropTypes.func,
|
|
1106
1051
|
messageStrategy: PropTypes.string,
|
|
1107
1052
|
fbAdManager: PropTypes.string,
|
|
1108
|
-
showDisabledFBInfo: PropTypes.
|
|
1053
|
+
showDisabledFBInfo: PropTypes.boolean,
|
|
1109
1054
|
orgUnitId: PropTypes.any,
|
|
1110
1055
|
smsRegister: PropTypes.any,
|
|
1111
1056
|
getCmsTemplatesInProgress: PropTypes.bool,
|
|
@@ -71,7 +71,6 @@ export function SlideBoxHeader(props) {
|
|
|
71
71
|
rcs: <FormattedMessage {...messages.rcsCreative} />,
|
|
72
72
|
zalo: <FormattedMessage {...messages.zaloTemplate} />,
|
|
73
73
|
viber: <FormattedMessage {...messages.viberTemplate} />,
|
|
74
|
-
webpush: <FormattedMessage {...messages.webPushTemplate} />,
|
|
75
74
|
};
|
|
76
75
|
return labels[currentChannel.toLowerCase()];
|
|
77
76
|
};
|
|
@@ -21,8 +21,6 @@ export const PUSH = "PUSH";
|
|
|
21
21
|
export const RCS = "RCS";
|
|
22
22
|
export const ZALO = "ZALO";
|
|
23
23
|
export const INAPP = "INAPP";
|
|
24
|
-
export const WEBPUSH = "WEBPUSH";
|
|
25
|
-
export const WEBPUSH_BRAND_ICON = "WEBPUSH_BRAND_ICON";
|
|
26
24
|
export const PREVIEW = "preview";
|
|
27
25
|
export const EDIT_TEMPLATE = "editTemplate";
|
|
28
26
|
export const JOURNEY = "journey";
|
|
@@ -708,68 +708,6 @@ export class Creatives extends React.Component {
|
|
|
708
708
|
};
|
|
709
709
|
break;
|
|
710
710
|
}
|
|
711
|
-
case constants.WEBPUSH: {
|
|
712
|
-
// Convert from campaign format (messageContent.content.content) to creatives format
|
|
713
|
-
const webpushContent = get(templateData, 'content', {});
|
|
714
|
-
const accountId = get(templateData, 'accountId');
|
|
715
|
-
const templateName = templateData.name || 'Campaign message WebPush content';
|
|
716
|
-
const brandIcon = webpushContent.iconImageUrl || '';
|
|
717
|
-
|
|
718
|
-
// Map cta to onClickAction
|
|
719
|
-
let onClickAction = null;
|
|
720
|
-
if (webpushContent.cta) {
|
|
721
|
-
if (webpushContent.cta.type === 'EXTERNAL_URL') {
|
|
722
|
-
onClickAction = {
|
|
723
|
-
type: 'URL',
|
|
724
|
-
url: webpushContent.cta.actionLink || '',
|
|
725
|
-
};
|
|
726
|
-
} else {
|
|
727
|
-
onClickAction = {
|
|
728
|
-
type: webpushContent.cta.type || 'SITE_URL',
|
|
729
|
-
};
|
|
730
|
-
}
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
// Map expandableDetails.ctas to ctas array
|
|
734
|
-
let ctas = [];
|
|
735
|
-
if (webpushContent.expandableDetails?.ctas && webpushContent.expandableDetails.ctas.length > 0) {
|
|
736
|
-
ctas = webpushContent.expandableDetails.ctas.map((ctaItem) => ({
|
|
737
|
-
actionText: ctaItem.title || ctaItem.actionText || '',
|
|
738
|
-
type: 'URL',
|
|
739
|
-
actionLink: ctaItem.actionLink || '',
|
|
740
|
-
}));
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
// Map expandableDetails.media to image if present
|
|
744
|
-
let image = null;
|
|
745
|
-
if (webpushContent.expandableDetails?.media && webpushContent.expandableDetails.media.length > 0) {
|
|
746
|
-
const firstMedia = webpushContent.expandableDetails.media[0];
|
|
747
|
-
if (firstMedia.type === 'IMAGE' && firstMedia.url) {
|
|
748
|
-
image = firstMedia.url;
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
creativesTemplateData = {
|
|
753
|
-
type: channel,
|
|
754
|
-
name: templateData.messageSubject,
|
|
755
|
-
versions: {
|
|
756
|
-
base: {
|
|
757
|
-
content: {
|
|
758
|
-
webpush: {
|
|
759
|
-
title: webpushContent.title || '',
|
|
760
|
-
message: webpushContent.message || '',
|
|
761
|
-
...(brandIcon && { brandIcon }),
|
|
762
|
-
...(onClickAction && { onClickAction }),
|
|
763
|
-
...(ctas.length > 0 && { ctas }),
|
|
764
|
-
...(image && { image, mediaType: "IMAGE" }),
|
|
765
|
-
},
|
|
766
|
-
},
|
|
767
|
-
},
|
|
768
|
-
},
|
|
769
|
-
definition: { accountId },
|
|
770
|
-
};
|
|
771
|
-
break;
|
|
772
|
-
}
|
|
773
711
|
default:
|
|
774
712
|
break;
|
|
775
713
|
}
|
|
@@ -1184,96 +1122,6 @@ export class Creatives extends React.Component {
|
|
|
1184
1122
|
}
|
|
1185
1123
|
}
|
|
1186
1124
|
break;
|
|
1187
|
-
case constants.WEBPUSH: {
|
|
1188
|
-
if (template.value) {
|
|
1189
|
-
const channelTemplate = template.value;
|
|
1190
|
-
const accountId = get(channelTemplate, 'definition.accountId');
|
|
1191
|
-
const webpushContent = get(channelTemplate, 'versions.base.content.webpush', {});
|
|
1192
|
-
|
|
1193
|
-
const iconImageUrl = webpushContent.brandIcon || webpushContent.iconImageUrl || '';
|
|
1194
|
-
|
|
1195
|
-
// Map onClickAction to cta
|
|
1196
|
-
let cta = null;
|
|
1197
|
-
if (webpushContent.onClickAction) {
|
|
1198
|
-
if (webpushContent.onClickAction.type === 'URL') {
|
|
1199
|
-
cta = {
|
|
1200
|
-
type: 'EXTERNAL_URL',
|
|
1201
|
-
actionLink: webpushContent.onClickAction.url || '',
|
|
1202
|
-
};
|
|
1203
|
-
} else {
|
|
1204
|
-
cta = {
|
|
1205
|
-
type: webpushContent.onClickAction.type || 'SITE_URL',
|
|
1206
|
-
actionLink: webpushContent.onClickAction.url || '',
|
|
1207
|
-
};
|
|
1208
|
-
}
|
|
1209
|
-
} else if (webpushContent.cta) {
|
|
1210
|
-
// Fallback to cta if onClickAction is not present
|
|
1211
|
-
cta = {
|
|
1212
|
-
type: webpushContent.cta.type || 'EXTERNAL_URL',
|
|
1213
|
-
actionLink: webpushContent.cta.actionLink || '',
|
|
1214
|
-
};
|
|
1215
|
-
}
|
|
1216
|
-
|
|
1217
|
-
// Map ctas array to expandableDetails.ctas
|
|
1218
|
-
let expandableDetails = null;
|
|
1219
|
-
const hasCtas = webpushContent.ctas && webpushContent.ctas.length > 0;
|
|
1220
|
-
const hasImage = webpushContent.image;
|
|
1221
|
-
|
|
1222
|
-
if (hasCtas || hasImage) {
|
|
1223
|
-
expandableDetails = {
|
|
1224
|
-
media: [],
|
|
1225
|
-
ctas: [],
|
|
1226
|
-
};
|
|
1227
|
-
|
|
1228
|
-
// Map image to expandableDetails.media
|
|
1229
|
-
if (hasImage) {
|
|
1230
|
-
expandableDetails.media = [{
|
|
1231
|
-
url: webpushContent.image,
|
|
1232
|
-
type: 'IMAGE',
|
|
1233
|
-
}];
|
|
1234
|
-
}
|
|
1235
|
-
|
|
1236
|
-
// Map ctas array to expandableDetails.ctas
|
|
1237
|
-
if (hasCtas) {
|
|
1238
|
-
expandableDetails.ctas = webpushContent.ctas.map((ctaItem) => ({
|
|
1239
|
-
type: ctaItem.type === 'URL' ? 'EXTERNAL_URL' : ctaItem.type,
|
|
1240
|
-
action: ctaItem.action || '',
|
|
1241
|
-
title: ctaItem.actionText || ctaItem.title || '',
|
|
1242
|
-
actionLink: ctaItem.actionLink || '',
|
|
1243
|
-
}));
|
|
1244
|
-
}
|
|
1245
|
-
} else if (webpushContent.expandableDetails) {
|
|
1246
|
-
// If expandableDetails already exists, use it
|
|
1247
|
-
expandableDetails = {
|
|
1248
|
-
media: webpushContent.expandableDetails.media || [],
|
|
1249
|
-
ctas: webpushContent.expandableDetails.ctas || [],
|
|
1250
|
-
};
|
|
1251
|
-
}
|
|
1252
|
-
|
|
1253
|
-
// Convert from creatives format to campaign format
|
|
1254
|
-
templateData = {
|
|
1255
|
-
channel,
|
|
1256
|
-
messageContent: {
|
|
1257
|
-
content: {
|
|
1258
|
-
channel: 'WEBPUSH',
|
|
1259
|
-
accountId,
|
|
1260
|
-
isDefault: false,
|
|
1261
|
-
storeType: 'REGISTERED_STORE',
|
|
1262
|
-
content: {
|
|
1263
|
-
title: webpushContent.title || '',
|
|
1264
|
-
message: webpushContent.message || '',
|
|
1265
|
-
...(iconImageUrl && { iconImageUrl }),
|
|
1266
|
-
...(cta && { cta }),
|
|
1267
|
-
...(expandableDetails && { expandableDetails }),
|
|
1268
|
-
},
|
|
1269
|
-
messageSubject: channelTemplate?.name ? channelTemplate.name : 'messageSubject',
|
|
1270
|
-
offers: [],
|
|
1271
|
-
},
|
|
1272
|
-
},
|
|
1273
|
-
};
|
|
1274
|
-
}
|
|
1275
|
-
break;
|
|
1276
|
-
}
|
|
1277
1125
|
default:
|
|
1278
1126
|
break;
|
|
1279
1127
|
}
|