@capillarytech/creatives-library 8.0.250 → 8.0.251
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/constants/unified.js +0 -1
- package/package.json +1 -1
- package/services/api.js +0 -5
- package/translations/en.json +3 -4
- package/utils/common.js +0 -6
- package/utils/tests/transformerUtils.test.js +0 -297
- package/utils/transformerUtils.js +0 -40
- package/v2Components/CapImageUpload/constants.js +0 -2
- package/v2Components/CapImageUpload/index.js +16 -65
- package/v2Components/CapImageUpload/index.scss +1 -4
- package/v2Components/CapImageUpload/messages.js +1 -5
- package/v2Containers/App/constants.js +0 -5
- package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +3 -4
- package/v2Containers/CreativesContainer/SlideBoxContent.js +2 -57
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +0 -1
- package/v2Containers/CreativesContainer/constants.js +0 -3
- package/v2Containers/CreativesContainer/index.js +0 -168
- package/v2Containers/CreativesContainer/messages.js +0 -4
- package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -304
- package/v2Containers/Email/index.js +7 -3
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +9 -12
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +6 -8
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +75 -100
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +54 -72
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +174 -232
- package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +12 -16
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +36 -48
- package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
- package/v2Containers/Templates/_templates.scss +0 -205
- package/v2Containers/Templates/actions.js +1 -2
- package/v2Containers/Templates/constants.js +0 -1
- package/v2Containers/Templates/index.js +34 -274
- package/v2Containers/Templates/messages.js +0 -24
- package/v2Containers/Templates/reducer.js +0 -4
- package/v2Containers/Templates/tests/index.test.js +0 -10
- package/v2Containers/TemplatesV2/index.js +7 -15
- package/v2Containers/TemplatesV2/messages.js +0 -4
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +486 -648
- package/utils/imageUrlUpload.js +0 -141
- package/v2Components/CapImageUrlUpload/constants.js +0 -26
- package/v2Components/CapImageUrlUpload/index.js +0 -365
- package/v2Components/CapImageUrlUpload/index.scss +0 -35
- package/v2Components/CapImageUrlUpload/messages.js +0 -47
- package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
- package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
- package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
- package/v2Containers/WebPush/Create/components/ButtonList.js +0 -107
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -160
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -476
- package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
- package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
- package/v2Containers/WebPush/Create/components/MediaSection.js +0 -143
- package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
- package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
- package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
- package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
- package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
- package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -82
- package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
- package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
- package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
- package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
- package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
- 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 -515
- 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 -46
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -150
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
- package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
- package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
- package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
- package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
- package/v2Containers/WebPush/Create/index.js +0 -1148
- package/v2Containers/WebPush/Create/index.scss +0 -134
- package/v2Containers/WebPush/Create/messages.js +0 -203
- package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
- package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
- package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
- package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
- package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -23
- package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -155
- 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/android-arrow-down.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
- 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/macos-arrow-down-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
- 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/assets/windows-close-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -47
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -141
- package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
- package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
- package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
- package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
- package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
- package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -81
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
- package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
- package/v2Containers/WebPush/Create/preview/constants.js +0 -637
- package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
- package/v2Containers/WebPush/Create/preview/preview.scss +0 -351
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
- 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 -47
- 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 -207
- package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
- package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
- package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
- package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
- package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
- package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
- package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
- package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
- 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 -129
- package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
- package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
- package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
- package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
- package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
- package/v2Containers/WebPush/Create/utils/validation.js +0 -75
- package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
- package/v2Containers/WebPush/actions.js +0 -60
- package/v2Containers/WebPush/constants.js +0 -132
- 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 -960
|
@@ -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,8 +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
|
-
disabled = false,
|
|
56
53
|
} = props;
|
|
57
54
|
const {
|
|
58
55
|
formatMessage,
|
|
@@ -75,7 +72,7 @@ function CapImageUpload(props) {
|
|
|
75
72
|
const [isImageError, updateImageErrorMessage] = useState(false);
|
|
76
73
|
const [isDrawerRequired, updateDrawerRequirement] = useState(false);
|
|
77
74
|
|
|
78
|
-
const {
|
|
75
|
+
const {CapHeadingSpan} = CapHeading;
|
|
79
76
|
const ImageComponent = useCallback(
|
|
80
77
|
() => (
|
|
81
78
|
<>
|
|
@@ -94,7 +91,7 @@ function CapImageUpload(props) {
|
|
|
94
91
|
|
|
95
92
|
const WithLabel = LabelHOC(ImageComponent);
|
|
96
93
|
|
|
97
|
-
const uploadImages = useCallback((e, {
|
|
94
|
+
const uploadImages = useCallback((e, {files}) => {
|
|
98
95
|
if (e) {
|
|
99
96
|
e.preventDefault();
|
|
100
97
|
}
|
|
@@ -112,13 +109,13 @@ function CapImageUpload(props) {
|
|
|
112
109
|
height: img.height,
|
|
113
110
|
error: file && (file.size / (1e+6) > 5), // Checking if file exists and its size is greater than 5MB (5 * 10^6 bytes)
|
|
114
111
|
};
|
|
115
|
-
submitAction({
|
|
112
|
+
submitAction({file, type: 'image', fileParams}, incorrectFile);
|
|
116
113
|
};
|
|
117
114
|
img.onerror = () => {
|
|
118
115
|
const fileParams = {
|
|
119
116
|
error: true,
|
|
120
117
|
};
|
|
121
|
-
submitAction({
|
|
118
|
+
submitAction({fileParams}, incorrectFile);
|
|
122
119
|
};
|
|
123
120
|
if (e) {
|
|
124
121
|
const event = e;
|
|
@@ -126,7 +123,7 @@ function CapImageUpload(props) {
|
|
|
126
123
|
}
|
|
127
124
|
}, []);
|
|
128
125
|
|
|
129
|
-
const rcsValidation = useCallback((incorrectFile, data, size, height, width, error) => {
|
|
126
|
+
const rcsValidation = useCallback((incorrectFile, data, size, height, width, error) => {
|
|
130
127
|
if (incorrectFile || size < minImgSize || size > imgSize || height !== imgHeight || width !== imgWidth || error) {
|
|
131
128
|
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
132
129
|
} else {
|
|
@@ -149,19 +146,6 @@ function CapImageUpload(props) {
|
|
|
149
146
|
const { height, width, error } = fileParams || {};
|
|
150
147
|
if (channel === RCS) {
|
|
151
148
|
rcsValidation(incorrectFile, data, size, height, width, error);
|
|
152
|
-
} else if ([WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel)) {
|
|
153
|
-
// For WEBPUSH, only validate file extension, size, and format - no dimension validation
|
|
154
|
-
if (incorrectFile || size > imgSize || error) {
|
|
155
|
-
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
156
|
-
} else {
|
|
157
|
-
updateImageErrorMessage('');
|
|
158
|
-
uploadAsset(
|
|
159
|
-
data.file,
|
|
160
|
-
data.type,
|
|
161
|
-
data.fileParams,
|
|
162
|
-
index,
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
149
|
} else if (incorrectFile || size > imgSize || height > imgHeight || width > imgWidth || error) {
|
|
166
150
|
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
167
151
|
} else {
|
|
@@ -176,7 +160,7 @@ function CapImageUpload(props) {
|
|
|
176
160
|
}, [isImageError]);
|
|
177
161
|
|
|
178
162
|
const capUploaderCustomRequest = useCallback((uploadData) => {
|
|
179
|
-
uploadImages(undefined, {
|
|
163
|
+
uploadImages(undefined, {files: [uploadData.file]});
|
|
180
164
|
}, [uploadImages]);
|
|
181
165
|
|
|
182
166
|
const setDrawerVisibility = useCallback((drawervisibleFlag) => updateDrawerRequirement(drawervisibleFlag), [isDrawerRequired]);
|
|
@@ -197,27 +181,19 @@ function CapImageUpload(props) {
|
|
|
197
181
|
secure_file_path: image, width, height, file_size: size,
|
|
198
182
|
} = get(imageTemplate, 'metaInfo', {});
|
|
199
183
|
updateDrawerRequirement(false);
|
|
200
|
-
|
|
201
|
-
if ([WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel)) {
|
|
202
|
-
if (!allowedExtensionsRegex.test(image) || size > imgSize) {
|
|
203
|
-
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
204
|
-
} else {
|
|
205
|
-
updateImageErrorMessage('');
|
|
206
|
-
updateImageSrc(image);
|
|
207
|
-
}
|
|
208
|
-
} else if (!allowedExtensionsRegex.test(image) || height > imgHeight || width > imgWidth || size > imgSize) {
|
|
184
|
+
if (!allowedExtensionsRegex.test(image) || height > imgHeight || width > imgWidth || size > imgSize ) {
|
|
209
185
|
updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
|
|
210
186
|
} else {
|
|
211
187
|
updateImageErrorMessage('');
|
|
212
188
|
updateImageSrc(image);
|
|
213
189
|
}
|
|
214
|
-
}, [isImageError, isDrawerRequired
|
|
190
|
+
}, [isImageError, isDrawerRequired]);
|
|
215
191
|
|
|
216
192
|
const getGalleryDrawerContent = useCallback(() => {
|
|
217
193
|
const locationGallery = {
|
|
218
194
|
pathname: `/assets`,
|
|
219
195
|
search: '',
|
|
220
|
-
query: !isFullMode ? {
|
|
196
|
+
query: !isFullMode ? {type: 'embedded', module: 'library'} : {},
|
|
221
197
|
};
|
|
222
198
|
return (
|
|
223
199
|
<>
|
|
@@ -254,7 +230,6 @@ function CapImageUpload(props) {
|
|
|
254
230
|
customRequest={capUploaderCustomRequest}
|
|
255
231
|
className="form-builder-dragger grey-background"
|
|
256
232
|
showUploadList={!isImageError}
|
|
257
|
-
disabled={disabled}
|
|
258
233
|
>
|
|
259
234
|
<CapHeading className="dragger-title" type="h7">
|
|
260
235
|
<FormattedMessage {...messages.dragAndDrop} />
|
|
@@ -262,7 +237,7 @@ function CapImageUpload(props) {
|
|
|
262
237
|
<CapHeading className="dragger-or" type="label6">
|
|
263
238
|
<FormattedMessage {...messages.or} />
|
|
264
239
|
</CapHeading>
|
|
265
|
-
<CapButton className="dragger-button upload-image" type="secondary"
|
|
240
|
+
<CapButton className="dragger-button upload-image" type="secondary">
|
|
266
241
|
<FormattedMessage {...messages.uploadComputer} />
|
|
267
242
|
</CapButton>
|
|
268
243
|
{channel !== WHATSAPP && (
|
|
@@ -270,8 +245,6 @@ function CapImageUpload(props) {
|
|
|
270
245
|
className="dragger-button gallery-select"
|
|
271
246
|
type="secondary"
|
|
272
247
|
onClick={onGalleryClick}
|
|
273
|
-
disabled={disabled}
|
|
274
|
-
tabIndex={disabled ? -1 : undefined}
|
|
275
248
|
>
|
|
276
249
|
<FormattedMessage {...messages.uploadGallery} />
|
|
277
250
|
</CapButton>
|
|
@@ -289,15 +262,13 @@ function CapImageUpload(props) {
|
|
|
289
262
|
className="dragger-button re-upload"
|
|
290
263
|
type="flat"
|
|
291
264
|
onClick={onReUpload}
|
|
292
|
-
style={channelSpecificStyle ? { marginTop:
|
|
293
|
-
disabled={disabled}
|
|
294
|
-
tabIndex={disabled ? -1 : undefined}
|
|
265
|
+
style={channelSpecificStyle ? { marginTop: '-16px'} : {}}
|
|
295
266
|
>
|
|
296
267
|
<FormattedMessage {...messages.imageReUpload} />
|
|
297
268
|
</CapButton>
|
|
298
269
|
);
|
|
299
270
|
}
|
|
300
|
-
}, [isImageError, imageSrc
|
|
271
|
+
}, [isImageError, imageSrc]);
|
|
301
272
|
|
|
302
273
|
return (
|
|
303
274
|
<div style={style} className="cap-custom-image-upload">
|
|
@@ -314,8 +285,6 @@ function CapImageUpload(props) {
|
|
|
314
285
|
type="file"
|
|
315
286
|
onChange={(e) => uploadImages(e, { files: e.target.files })}
|
|
316
287
|
accept={supportedExtensions || "image/*"}
|
|
317
|
-
disabled={disabled}
|
|
318
|
-
tabIndex={disabled ? -1 : undefined}
|
|
319
288
|
/>
|
|
320
289
|
{getImageSection()}
|
|
321
290
|
<CapDrawer
|
|
@@ -336,18 +305,7 @@ function CapImageUpload(props) {
|
|
|
336
305
|
)}
|
|
337
306
|
{![WHATSAPP, INAPP].includes(channel) && (
|
|
338
307
|
<CapHeadingSpan type="label2" className="image-dimension">
|
|
339
|
-
{
|
|
340
|
-
<FormattedMessage
|
|
341
|
-
{...messages.recommendedDimensions}
|
|
342
|
-
values={{
|
|
343
|
-
dimensions: recommendedDimensions
|
|
344
|
-
.map((dim) => `${dim.width} x ${dim.height}px`)
|
|
345
|
-
.join(', '),
|
|
346
|
-
}}
|
|
347
|
-
/>
|
|
348
|
-
) : (
|
|
349
|
-
<FormattedMessage {...messages.imageDimenstionDescription} values={{ width: imgWidth, height: imgHeight }} />
|
|
350
|
-
)}
|
|
308
|
+
<FormattedMessage {...messages.imageDimenstionDescription} values={{ width: imgWidth, height: imgHeight }} />
|
|
351
309
|
</CapHeadingSpan>
|
|
352
310
|
)}
|
|
353
311
|
{channel === FACEBOOK && (
|
|
@@ -370,7 +328,7 @@ function CapImageUpload(props) {
|
|
|
370
328
|
getImageSizeLabel()
|
|
371
329
|
)
|
|
372
330
|
)}
|
|
373
|
-
{[VIBER, INAPP, MOBILEPUSH
|
|
331
|
+
{[VIBER, INAPP, MOBILEPUSH].includes(channel) && getImageSizeLabel()}
|
|
374
332
|
<CapHeadingSpan type="label2" className="image-format">
|
|
375
333
|
{channel === INAPP ? <FormattedMessage {...messages.format2} /> : <FormattedMessage {...messages.format} />}
|
|
376
334
|
</CapHeadingSpan>
|
|
@@ -399,13 +357,6 @@ CapImageUpload.propTypes = {
|
|
|
399
357
|
channel: PropTypes.string,
|
|
400
358
|
channelSpecificStyle: PropTypes.bool,
|
|
401
359
|
disableAutoRestore: PropTypes.bool,
|
|
402
|
-
recommendedDimensions: PropTypes.arrayOf(
|
|
403
|
-
PropTypes.shape({
|
|
404
|
-
width: PropTypes.number.isRequired,
|
|
405
|
-
height: PropTypes.number.isRequired,
|
|
406
|
-
})
|
|
407
|
-
),
|
|
408
|
-
disabled: PropTypes.bool,
|
|
409
360
|
};
|
|
410
361
|
|
|
411
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',
|
|
@@ -61,7 +57,7 @@ export default defineMessages({
|
|
|
61
57
|
},
|
|
62
58
|
channelImageSize: {
|
|
63
59
|
id: `${scope}.channelImageSize`,
|
|
64
|
-
defaultMessage: 'Size
|
|
60
|
+
defaultMessage: 'Size upto: {size}MB',
|
|
65
61
|
},
|
|
66
62
|
RcschannelImageSize: {
|
|
67
63
|
id: `${scope}.RcschannelImageSize`,
|
|
@@ -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';
|
|
@@ -243,7 +243,7 @@ exports[`<Cap /> should render correct component 1`] = `
|
|
|
243
243
|
"creatives.componentsV2.CapDocumentUpload.imageDimenstionDescription": "Dimensions upto: {width}px x {height}px",
|
|
244
244
|
"creatives.componentsV2.CapDocumentUpload.or": "OR",
|
|
245
245
|
"creatives.componentsV2.CapDocumentUpload.uploadComputer": "Select from computer",
|
|
246
|
-
"creatives.componentsV2.CapDocumentUpload.whatsappDocSize": "Size
|
|
246
|
+
"creatives.componentsV2.CapDocumentUpload.whatsappDocSize": "Size upto: {size}",
|
|
247
247
|
"creatives.componentsV2.CapImageUpload.aspectRatio": "Aspect ratio: 1:1",
|
|
248
248
|
"creatives.componentsV2.CapImageUpload.dragAndDrop": "Drag and drop image here",
|
|
249
249
|
"creatives.componentsV2.CapImageUpload.format": "Format: JPEG, JPG, PNG",
|
|
@@ -251,13 +251,13 @@ exports[`<Cap /> should render correct component 1`] = `
|
|
|
251
251
|
"creatives.componentsV2.CapImageUpload.imageErrorDesc": "Please upload the image with allowed file extension, size, dimension and aspect ratio",
|
|
252
252
|
"creatives.componentsV2.CapImageUpload.imageGallery": "Gallery",
|
|
253
253
|
"creatives.componentsV2.CapImageUpload.imageReUpload": "Reupload",
|
|
254
|
-
"creatives.componentsV2.CapImageUpload.imageSize": "Size
|
|
254
|
+
"creatives.componentsV2.CapImageUpload.imageSize": "Size upto: 2MB",
|
|
255
255
|
"creatives.componentsV2.CapImageUpload.or": "OR",
|
|
256
256
|
"creatives.componentsV2.CapImageUpload.uploadComputer": "Select from computer",
|
|
257
257
|
"creatives.componentsV2.CapImageUpload.uploadGallery": "Gallery",
|
|
258
258
|
"creatives.componentsV2.CapImageUpload.uploadImageDescription": "The relevant image that complements the message context.",
|
|
259
259
|
"creatives.componentsV2.CapImageUpload.whatsappAspectRatio": "Max aspect ratio: 1.91:1",
|
|
260
|
-
"creatives.componentsV2.CapImageUpload.whatsappImageSize": "Size
|
|
260
|
+
"creatives.componentsV2.CapImageUpload.whatsappImageSize": "Size upto: 5MB",
|
|
261
261
|
"creatives.componentsV2.CapTagList.Cancel": "Cancel",
|
|
262
262
|
"creatives.componentsV2.CapTagList.Ok": "Ok",
|
|
263
263
|
"creatives.componentsV2.CapTagList.all": "All",
|
|
@@ -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
|
|
@@ -1046,28 +1014,6 @@ export function SlideBoxContent(props) {
|
|
|
1046
1014
|
/>
|
|
1047
1015
|
)}
|
|
1048
1016
|
|
|
1049
|
-
{(isCreateWebPush || isEditWebPush) && (
|
|
1050
|
-
<WebPush
|
|
1051
|
-
isFullMode={isFullMode}
|
|
1052
|
-
handleClose={handleClose}
|
|
1053
|
-
onCreateComplete={onCreateComplete}
|
|
1054
|
-
getFormData={getFormData}
|
|
1055
|
-
isGetFormData={isGetFormData}
|
|
1056
|
-
templateData={isEditWebPush ? templateData : undefined}
|
|
1057
|
-
creativesMode={creativesMode}
|
|
1058
|
-
params={isEditWebPush && templateData ? { id: templateData._id } : undefined}
|
|
1059
|
-
location={{
|
|
1060
|
-
pathname: isEditWebPush ? '/webpush/edit' : '/webpush/create',
|
|
1061
|
-
query,
|
|
1062
|
-
search: '',
|
|
1063
|
-
}}
|
|
1064
|
-
getDefaultTags={type}
|
|
1065
|
-
forwardedTags={forwardedTags}
|
|
1066
|
-
supportedTags={supportedTags}
|
|
1067
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
1068
|
-
eventContextTags={eventContextTags}
|
|
1069
|
-
/>
|
|
1070
|
-
)}
|
|
1071
1017
|
{isCreateRcs && (<Rcs
|
|
1072
1018
|
{...rcsCommonProps}
|
|
1073
1019
|
showLiquidErrorInFooter={showLiquidErrorInFooter}
|
|
@@ -1130,7 +1076,6 @@ SlideBoxContent.propTypes = {
|
|
|
1130
1076
|
onValidationFail: PropTypes.func,
|
|
1131
1077
|
channelsToHide: PropTypes.array,
|
|
1132
1078
|
forwardedTags: PropTypes.object,
|
|
1133
|
-
supportedTags: PropTypes.array,
|
|
1134
1079
|
selectedOfferDetails: PropTypes.array,
|
|
1135
1080
|
channelsToDisable: PropTypes.array,
|
|
1136
1081
|
weChatTemplateType: PropTypes.string,
|
|
@@ -1146,7 +1091,7 @@ SlideBoxContent.propTypes = {
|
|
|
1146
1091
|
onFTPSubmit: PropTypes.func,
|
|
1147
1092
|
messageStrategy: PropTypes.string,
|
|
1148
1093
|
fbAdManager: PropTypes.string,
|
|
1149
|
-
showDisabledFBInfo: PropTypes.
|
|
1094
|
+
showDisabledFBInfo: PropTypes.boolean,
|
|
1150
1095
|
orgUnitId: PropTypes.any,
|
|
1151
1096
|
smsRegister: PropTypes.any,
|
|
1152
1097
|
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";
|
|
@@ -50,4 +48,3 @@ export const BIG_TEXT = "BIG_TEXT";
|
|
|
50
48
|
export const GENERIC = "GENERIC";
|
|
51
49
|
export const LIQUID_ERROR_MSG = "LIQUID_ERROR_MSG";
|
|
52
50
|
export const STANDARD_ERROR_MSG = "STANDARD_ERROR_MSG";
|
|
53
|
-
export const COMMON_CHANNELS = ['sms', 'email', 'wechat', 'mobilepush', 'webpush', 'line', 'viber', 'facebook', 'call_task', 'ftp', 'assets'];
|
|
@@ -42,7 +42,6 @@ import { makeSelectFetchingCmsData } from '../Email/selectors';
|
|
|
42
42
|
import {
|
|
43
43
|
IMAGE as LINE_IMAGE, IMAGE_MAP, IMAGE_CAROUSEL, VIDEO as LINE_VIDEO, TEMPLATE, STICKER,
|
|
44
44
|
} from '../Line/Container/constants';
|
|
45
|
-
import {EXTERNAL_URL, SITE_URL, WEBPUSH_MEDIA_TYPES} from '../WebPush/constants';
|
|
46
45
|
import { IMAGE, VIDEO } from '../Facebook/Advertisement/constant';
|
|
47
46
|
import {RCS_STATUSES} from '../Rcs/constants';
|
|
48
47
|
import { CREATIVE } from '../Facebook/constants';
|
|
@@ -709,73 +708,6 @@ export class Creatives extends React.Component {
|
|
|
709
708
|
};
|
|
710
709
|
break;
|
|
711
710
|
}
|
|
712
|
-
case constants.WEBPUSH: {
|
|
713
|
-
// Convert from campaign format (messageContent.content.content) to creatives format
|
|
714
|
-
const webpushContent = get(templateData, 'content', {});
|
|
715
|
-
const accountId = get(templateData, 'accountId');
|
|
716
|
-
const {
|
|
717
|
-
title,
|
|
718
|
-
message,
|
|
719
|
-
iconImageUrl: brandIcon = "",
|
|
720
|
-
cta,
|
|
721
|
-
expandableDetails
|
|
722
|
-
} = webpushContent || {};
|
|
723
|
-
|
|
724
|
-
// Map cta to onClickAction
|
|
725
|
-
let onClickAction = null;
|
|
726
|
-
if (cta) {
|
|
727
|
-
if (cta?.type === EXTERNAL_URL) {
|
|
728
|
-
onClickAction = {
|
|
729
|
-
type: URL,
|
|
730
|
-
url: cta?.actionLink || '',
|
|
731
|
-
};
|
|
732
|
-
} else {
|
|
733
|
-
onClickAction = {
|
|
734
|
-
type: cta?.type || SITE_URL,
|
|
735
|
-
};
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
// Map expandableDetails.ctas to ctas array
|
|
740
|
-
let ctas = [];
|
|
741
|
-
if (expandableDetails?.ctas && expandableDetails?.ctas?.length > 0) {
|
|
742
|
-
ctas = expandableDetails?.ctas?.map((ctaItem) => ({
|
|
743
|
-
actionText: ctaItem?.title || ctaItem?.actionText || '',
|
|
744
|
-
type: URL,
|
|
745
|
-
actionLink: ctaItem?.actionLink || '',
|
|
746
|
-
}));
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
// Map expandableDetails.media to image if present
|
|
750
|
-
let image = null;
|
|
751
|
-
if (expandableDetails?.media && expandableDetails?.media?.length > 0) {
|
|
752
|
-
const firstMedia = expandableDetails?.media[0];
|
|
753
|
-
if (firstMedia?.type === WEBPUSH_MEDIA_TYPES.IMAGE && firstMedia?.url) {
|
|
754
|
-
image = firstMedia?.url;
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
creativesTemplateData = {
|
|
759
|
-
type: channel,
|
|
760
|
-
name: templateData?.messageSubject,
|
|
761
|
-
versions: {
|
|
762
|
-
base: {
|
|
763
|
-
content: {
|
|
764
|
-
webpush: {
|
|
765
|
-
title: title || '',
|
|
766
|
-
message: message || '',
|
|
767
|
-
...(brandIcon && { brandIcon }),
|
|
768
|
-
...(onClickAction && { onClickAction }),
|
|
769
|
-
...(ctas.length > 0 && { ctas }),
|
|
770
|
-
...(image && { image, mediaType: IMAGE }),
|
|
771
|
-
},
|
|
772
|
-
},
|
|
773
|
-
},
|
|
774
|
-
},
|
|
775
|
-
definition: { accountId },
|
|
776
|
-
};
|
|
777
|
-
break;
|
|
778
|
-
}
|
|
779
711
|
default:
|
|
780
712
|
break;
|
|
781
713
|
}
|
|
@@ -1190,105 +1122,6 @@ export class Creatives extends React.Component {
|
|
|
1190
1122
|
}
|
|
1191
1123
|
}
|
|
1192
1124
|
break;
|
|
1193
|
-
case constants.WEBPUSH: {
|
|
1194
|
-
if (template.value) {
|
|
1195
|
-
const channelTemplate = template.value;
|
|
1196
|
-
const accountId = get(channelTemplate, 'definition.accountId');
|
|
1197
|
-
const webpushContent = get(channelTemplate, 'versions.base.content.webpush', {});
|
|
1198
|
-
const {
|
|
1199
|
-
title,
|
|
1200
|
-
message,
|
|
1201
|
-
brandIcon,
|
|
1202
|
-
iconImageUrl: templateImageUrl ,
|
|
1203
|
-
onClickAction,
|
|
1204
|
-
ctas: templateCtas,
|
|
1205
|
-
cta: templateCta,
|
|
1206
|
-
expandableDetails: templateExpandableDetails,
|
|
1207
|
-
image
|
|
1208
|
-
} = webpushContent || {};
|
|
1209
|
-
|
|
1210
|
-
const iconImageUrl = brandIcon || templateImageUrl || '';
|
|
1211
|
-
|
|
1212
|
-
// Map onClickAction to cta
|
|
1213
|
-
let cta = null;
|
|
1214
|
-
if (onClickAction) {
|
|
1215
|
-
if (onClickAction?.type === URL) {
|
|
1216
|
-
cta = {
|
|
1217
|
-
type: EXTERNAL_URL,
|
|
1218
|
-
actionLink: onClickAction?.url || '',
|
|
1219
|
-
};
|
|
1220
|
-
} else {
|
|
1221
|
-
cta = {
|
|
1222
|
-
type: onClickAction?.type || SITE_URL,
|
|
1223
|
-
actionLink: onClickAction?.url || '',
|
|
1224
|
-
};
|
|
1225
|
-
}
|
|
1226
|
-
} else if (templateCta) {
|
|
1227
|
-
// Fallback to cta if onClickAction is not present
|
|
1228
|
-
cta = {
|
|
1229
|
-
type: templateCta?.type || EXTERNAL_URL,
|
|
1230
|
-
actionLink: templateCta?.actionLink || '',
|
|
1231
|
-
};
|
|
1232
|
-
}
|
|
1233
|
-
|
|
1234
|
-
// Map ctas array to expandableDetails.ctas
|
|
1235
|
-
let expandableDetails = null;
|
|
1236
|
-
const hasCtas = templateCtas && templateCtas.length > 0;
|
|
1237
|
-
const hasImage = image;
|
|
1238
|
-
|
|
1239
|
-
if (hasCtas || hasImage) {
|
|
1240
|
-
expandableDetails = {
|
|
1241
|
-
media: [],
|
|
1242
|
-
ctas: [],
|
|
1243
|
-
};
|
|
1244
|
-
|
|
1245
|
-
// Map image to expandableDetails.media
|
|
1246
|
-
if (hasImage) {
|
|
1247
|
-
expandableDetails.media = [{
|
|
1248
|
-
url: image,
|
|
1249
|
-
type: IMAGE,
|
|
1250
|
-
}];
|
|
1251
|
-
}
|
|
1252
|
-
|
|
1253
|
-
// Map ctas array to expandableDetails.ctas
|
|
1254
|
-
if (hasCtas) {
|
|
1255
|
-
expandableDetails.ctas = templateCtas.map((ctaItem) => ({
|
|
1256
|
-
type: ctaItem?.type === URL ? EXTERNAL_URL : ctaItem?.type,
|
|
1257
|
-
action: ctaItem?.action || '',
|
|
1258
|
-
title: ctaItem?.actionText || ctaItem?.title || '',
|
|
1259
|
-
actionLink: ctaItem?.actionLink || '',
|
|
1260
|
-
}));
|
|
1261
|
-
}
|
|
1262
|
-
} else if (templateExpandableDetails) {
|
|
1263
|
-
// If expandableDetails already exists, use it
|
|
1264
|
-
expandableDetails = {
|
|
1265
|
-
media: templateExpandableDetails?.media || [],
|
|
1266
|
-
ctas: templateExpandableDetails?.ctas || [],
|
|
1267
|
-
};
|
|
1268
|
-
}
|
|
1269
|
-
|
|
1270
|
-
// Convert from creatives format to campaign format
|
|
1271
|
-
templateData = {
|
|
1272
|
-
channel,
|
|
1273
|
-
messageContent: {
|
|
1274
|
-
content: {
|
|
1275
|
-
channel: constants.WEBPUSH,
|
|
1276
|
-
accountId,
|
|
1277
|
-
content: {
|
|
1278
|
-
title: title || '',
|
|
1279
|
-
message: message || '',
|
|
1280
|
-
...(iconImageUrl && { iconImageUrl }),
|
|
1281
|
-
...(cta && { cta }),
|
|
1282
|
-
...(expandableDetails && { expandableDetails }),
|
|
1283
|
-
},
|
|
1284
|
-
messageSubject: channelTemplate?.name ? channelTemplate.name : 'messageSubject',
|
|
1285
|
-
offers: [],
|
|
1286
|
-
},
|
|
1287
|
-
},
|
|
1288
|
-
};
|
|
1289
|
-
}
|
|
1290
|
-
break;
|
|
1291
|
-
}
|
|
1292
1125
|
default:
|
|
1293
1126
|
break;
|
|
1294
1127
|
}
|
|
@@ -1340,7 +1173,6 @@ export class Creatives extends React.Component {
|
|
|
1340
1173
|
case constants.SMS:
|
|
1341
1174
|
case constants.WECHAT:
|
|
1342
1175
|
case constants.VIBER:
|
|
1343
|
-
case constants.WEBPUSH:
|
|
1344
1176
|
break;
|
|
1345
1177
|
case constants.EMAIL:
|
|
1346
1178
|
gtmDetails = {
|