@capillarytech/creatives-library 7.16.2 → 7.16.4
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/containers/Assets/Gallery/messages.js +1 -1
- package/containers/Cap/tests/__snapshots__/index.test.js.snap +4 -4
- package/containers/Email/messages.js +1 -1
- package/package.json +1 -1
- package/translations/en.json +4 -4
- package/utils/common.js +22 -0
- package/utils/tests/v2Common.test.js +44 -2
- package/v2Components/CapDocumentUpload/index.js +3 -6
- package/v2Components/CapImageUpload/index.js +2 -5
- package/v2Components/CapVideoUpload/index.js +2 -6
- package/v2Components/FormBuilder/index.js +5 -3
- package/v2Containers/App/constants.js +1 -0
- package/v2Containers/Assets/Gallery/index.js +28 -3
- package/v2Containers/Assets/Gallery/messages.js +1 -1
- package/v2Containers/Cap/messages.js +4 -0
- package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +4 -4
- package/v2Containers/Email/messages.js +1 -1
- package/v2Containers/Line/Container/Image/index.js +2 -5
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +3397 -12
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +8 -8
- package/v2Containers/Line/Container/ImageMap/index.js +4 -2
- package/v2Containers/Line/Container/Video/index.js +2 -5
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +68 -68
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +72 -72
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +188 -188
- package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +16 -16
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +32 -32
- package/v2Containers/Viber/index.js +6 -5
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +284 -284
|
@@ -76,7 +76,7 @@ export default defineMessages({
|
|
|
76
76
|
},
|
|
77
77
|
assetUploadFailed: {
|
|
78
78
|
id: 'creatives.containers.Assets.Gallery.assetUploadFailed',
|
|
79
|
-
defaultMessage: 'Image
|
|
79
|
+
defaultMessage: 'Image upload failed',
|
|
80
80
|
},
|
|
81
81
|
assetDeleteSuccess: {
|
|
82
82
|
id: 'creatives.containers.Assets.Gallery.assetDeleteSuccess',
|
|
@@ -323,7 +323,7 @@ exports[`<Cap /> should render its children 1`] = `
|
|
|
323
323
|
"creatives.containers.Assets.Gallery.alphabetically": "Alphabetically",
|
|
324
324
|
"creatives.containers.Assets.Gallery.assetDeleteFailed": "Image deletion failed.",
|
|
325
325
|
"creatives.containers.Assets.Gallery.assetDeleteSuccess": "Image deleted successfully.",
|
|
326
|
-
"creatives.containers.Assets.Gallery.assetUploadFailed": "Image
|
|
326
|
+
"creatives.containers.Assets.Gallery.assetUploadFailed": "Image upload failed",
|
|
327
327
|
"creatives.containers.Assets.Gallery.assetUploadSuccess": "Image uploaded successfully",
|
|
328
328
|
"creatives.containers.Assets.Gallery.backToGallery": "Back to image gallery",
|
|
329
329
|
"creatives.containers.Assets.Gallery.delete": "Delete",
|
|
@@ -470,7 +470,7 @@ exports[`<Cap /> should render its children 1`] = `
|
|
|
470
470
|
"creatives.containers.Email.Tags": "Tags",
|
|
471
471
|
"creatives.containers.Email.alphabetically": "Alphabetically",
|
|
472
472
|
"creatives.containers.Email.alphabeticallyOption": "Alphabetically",
|
|
473
|
-
"creatives.containers.Email.assetUploadFailed": "Image
|
|
473
|
+
"creatives.containers.Email.assetUploadFailed": "Image upload failed",
|
|
474
474
|
"creatives.containers.Email.blankTemplate": "Blank template",
|
|
475
475
|
"creatives.containers.Email.cancel": "Cancel",
|
|
476
476
|
"creatives.containers.Email.createHeading": "Create email template",
|
|
@@ -875,7 +875,7 @@ exports[`<Cap /> should render its children 1`] = `
|
|
|
875
875
|
"creatives.containersV2.Assets.Gallery.alphabetically": "Alphabetically",
|
|
876
876
|
"creatives.containersV2.Assets.Gallery.assetDeleteFailed": "Image deletion failed.",
|
|
877
877
|
"creatives.containersV2.Assets.Gallery.assetDeleteSuccess": "Image deleted successfully.",
|
|
878
|
-
"creatives.containersV2.Assets.Gallery.assetUploadFailed": "Image
|
|
878
|
+
"creatives.containersV2.Assets.Gallery.assetUploadFailed": "Image upload failed",
|
|
879
879
|
"creatives.containersV2.Assets.Gallery.assetUploadSuccess": "Image uploaded successfully",
|
|
880
880
|
"creatives.containersV2.Assets.Gallery.backToGallery": "Back to image gallery",
|
|
881
881
|
"creatives.containersV2.Assets.Gallery.delete": "Delete",
|
|
@@ -1133,7 +1133,7 @@ exports[`<Cap /> should render its children 1`] = `
|
|
|
1133
1133
|
"creatives.containersV2.Email.alertMessage": "Alert",
|
|
1134
1134
|
"creatives.containersV2.Email.alphabetically": "Alphabetically",
|
|
1135
1135
|
"creatives.containersV2.Email.alphabeticallyOption": "Alphabetically",
|
|
1136
|
-
"creatives.containersV2.Email.assetUploadFailed": "Image
|
|
1136
|
+
"creatives.containersV2.Email.assetUploadFailed": "Image upload failed",
|
|
1137
1137
|
"creatives.containersV2.Email.blankTemplate": "Blank template",
|
|
1138
1138
|
"creatives.containersV2.Email.cancel": "Cancel",
|
|
1139
1139
|
"creatives.containersV2.Email.copyPrimaryLanguage": "Copy Primary Language",
|
|
@@ -228,7 +228,7 @@ export default defineMessages({
|
|
|
228
228
|
},
|
|
229
229
|
"assetUploadFailed": {
|
|
230
230
|
id: 'creatives.containers.Email.assetUploadFailed',
|
|
231
|
-
defaultMessage: 'Image
|
|
231
|
+
defaultMessage: 'Image upload failed',
|
|
232
232
|
},
|
|
233
233
|
"goBackConfirmation": {
|
|
234
234
|
id: 'creatives.containers.Email.Create.goBackConfirmation',
|
package/package.json
CHANGED
package/translations/en.json
CHANGED
|
@@ -281,7 +281,7 @@
|
|
|
281
281
|
"creatives.containers.Assets.Gallery.alphabetically": "Alphabetically",
|
|
282
282
|
"creatives.containers.Assets.Gallery.assetDeleteFailed": "Image deletion failed.",
|
|
283
283
|
"creatives.containers.Assets.Gallery.assetDeleteSuccess": "Image deleted successfully.",
|
|
284
|
-
"creatives.containers.Assets.Gallery.assetUploadFailed": "Image
|
|
284
|
+
"creatives.containers.Assets.Gallery.assetUploadFailed": "Image upload failed",
|
|
285
285
|
"creatives.containers.Assets.Gallery.assetUploadSuccess": "Image uploaded successfully",
|
|
286
286
|
"creatives.containers.Assets.Gallery.backToGallery": "Back to image gallery",
|
|
287
287
|
"creatives.containers.Assets.Gallery.delete": "Delete",
|
|
@@ -428,7 +428,7 @@
|
|
|
428
428
|
"creatives.containers.Email.Tags": "Tags",
|
|
429
429
|
"creatives.containers.Email.alphabetically": "Alphabetically",
|
|
430
430
|
"creatives.containers.Email.alphabeticallyOption": "Alphabetically",
|
|
431
|
-
"creatives.containers.Email.assetUploadFailed": "Image
|
|
431
|
+
"creatives.containers.Email.assetUploadFailed": "Image upload failed",
|
|
432
432
|
"creatives.containers.Email.blankTemplate": "Blank template",
|
|
433
433
|
"creatives.containers.Email.cancel": "Cancel",
|
|
434
434
|
"creatives.containers.Email.createHeading": "Create email template",
|
|
@@ -833,7 +833,7 @@
|
|
|
833
833
|
"creatives.containersV2.Assets.Gallery.alphabetically": "Alphabetically",
|
|
834
834
|
"creatives.containersV2.Assets.Gallery.assetDeleteFailed": "Image deletion failed.",
|
|
835
835
|
"creatives.containersV2.Assets.Gallery.assetDeleteSuccess": "Image deleted successfully.",
|
|
836
|
-
"creatives.containersV2.Assets.Gallery.assetUploadFailed": "Image
|
|
836
|
+
"creatives.containersV2.Assets.Gallery.assetUploadFailed": "Image upload failed",
|
|
837
837
|
"creatives.containersV2.Assets.Gallery.assetUploadSuccess": "Image uploaded successfully",
|
|
838
838
|
"creatives.containersV2.Assets.Gallery.backToGallery": "Back to image gallery",
|
|
839
839
|
"creatives.containersV2.Assets.Gallery.delete": "Delete",
|
|
@@ -1091,7 +1091,7 @@
|
|
|
1091
1091
|
"creatives.containersV2.Email.alertMessage": "Alert",
|
|
1092
1092
|
"creatives.containersV2.Email.alphabetically": "Alphabetically",
|
|
1093
1093
|
"creatives.containersV2.Email.alphabeticallyOption": "Alphabetically",
|
|
1094
|
-
"creatives.containersV2.Email.assetUploadFailed": "Image
|
|
1094
|
+
"creatives.containersV2.Email.assetUploadFailed": "Image upload failed",
|
|
1095
1095
|
"creatives.containersV2.Email.blankTemplate": "Blank template",
|
|
1096
1096
|
"creatives.containersV2.Email.cancel": "Cancel",
|
|
1097
1097
|
"creatives.containersV2.Email.copyPrimaryLanguage": "Copy Primary Language",
|
package/utils/common.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import { Auth } from '@capillarytech/cap-ui-utils';
|
|
3
|
+
|
|
3
4
|
import {
|
|
4
5
|
STORE2DOOR_PLUS_ENABLED,
|
|
5
6
|
TRAI_DLT,
|
|
@@ -262,3 +263,24 @@ export const isTraiDLTEnable = (isFullMode, smsRegister) => {
|
|
|
262
263
|
const isTraiDltFeature = isTraiDltFeatureForOrg && isTraiEnableforLib;
|
|
263
264
|
return isTraiDltFeature;
|
|
264
265
|
};
|
|
266
|
+
|
|
267
|
+
/* function used to encode filename and check file name
|
|
268
|
+
pattern based on the given regex */
|
|
269
|
+
export function createNewFile(Files, allowedExtensionsRegex) {
|
|
270
|
+
const fileObject = Files[0];
|
|
271
|
+
let incorrectFile = false;
|
|
272
|
+
|
|
273
|
+
if (allowedExtensionsRegex && !allowedExtensionsRegex.test(fileObject?.name)) {
|
|
274
|
+
incorrectFile = true;
|
|
275
|
+
return [fileObject, incorrectFile];
|
|
276
|
+
}
|
|
277
|
+
const encodedName = fileObject?.name.replace(/(.+?)(\.[^.]*$|$)/, (match, name, extension) => {
|
|
278
|
+
const filename = encodeURIComponent(name);
|
|
279
|
+
return filename + extension;
|
|
280
|
+
});
|
|
281
|
+
const { type, ...rest } = fileObject;
|
|
282
|
+
const newFile = new File([fileObject], encodedName, { type, ...rest });
|
|
283
|
+
newFile.uid = fileObject.uid;
|
|
284
|
+
return [newFile, incorrectFile];
|
|
285
|
+
}
|
|
286
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { getObjFromQueryParams
|
|
3
|
-
|
|
2
|
+
import { getObjFromQueryParams} from '../v2common';
|
|
3
|
+
import {createNewFile} from '../common';
|
|
4
4
|
describe('Test v2common container', () => {
|
|
5
5
|
it('test getObjFromQueryParams', () => {
|
|
6
6
|
expect(getObjFromQueryParams("?channel=WHATSAPP&mode=CREATE")).toEqual({
|
|
@@ -9,3 +9,45 @@ describe('Test v2common container', () => {
|
|
|
9
9
|
});
|
|
10
10
|
});
|
|
11
11
|
});
|
|
12
|
+
|
|
13
|
+
describe('Test createNewFile function', () => {
|
|
14
|
+
const allowedExtensionsRegex = /(\.png|\.jpg)$/i;
|
|
15
|
+
const tempFile = [{
|
|
16
|
+
name: '#image.png',
|
|
17
|
+
type: 'image/jpeg',
|
|
18
|
+
size: 2048,
|
|
19
|
+
uid: 'def456',
|
|
20
|
+
}];
|
|
21
|
+
const expectedFile = new File([tempFile], '%23image.png', {
|
|
22
|
+
type: 'image/jpeg',
|
|
23
|
+
size: 2048,
|
|
24
|
+
uid: 'def456',
|
|
25
|
+
});
|
|
26
|
+
it('should create a new file with encoded name', () => {
|
|
27
|
+
const [resultFile, incorrectFile] = createNewFile(tempFile, allowedExtensionsRegex);
|
|
28
|
+
expect(resultFile).toMatchObject(expectedFile);
|
|
29
|
+
expect(incorrectFile).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
it('should return incorrect file true', () => {
|
|
32
|
+
const tempFileWrong = [{
|
|
33
|
+
name: '#song.mov',
|
|
34
|
+
type: 'video/mov',
|
|
35
|
+
size: 2048,
|
|
36
|
+
uid: 'def4516',
|
|
37
|
+
}];
|
|
38
|
+
|
|
39
|
+
const expectedFileWrong = new File([tempFileWrong], '%23song.mov', {
|
|
40
|
+
type: 'video/mov',
|
|
41
|
+
size: 2048,
|
|
42
|
+
uid: 'def4516',
|
|
43
|
+
});
|
|
44
|
+
const [resultFile, incorrectFile] = createNewFile(tempFileWrong, allowedExtensionsRegex);
|
|
45
|
+
expect(resultFile).toMatchObject(expectedFileWrong);
|
|
46
|
+
expect(incorrectFile).toBe(true);
|
|
47
|
+
});
|
|
48
|
+
it('should return only the updated file as the validation is handled differently for some channels', () => {
|
|
49
|
+
const resultFile = createNewFile(tempFile)[0];
|
|
50
|
+
expect(resultFile).toMatchObject(expectedFile);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
@@ -13,6 +13,7 @@ import isEmpty from 'lodash/isEmpty';
|
|
|
13
13
|
import './index.scss';
|
|
14
14
|
import messages from './messages';
|
|
15
15
|
import { convertPdfToImages } from '../WhatsappDocumentPreview/index';
|
|
16
|
+
import { createNewFile } from '../../utils/common';
|
|
16
17
|
|
|
17
18
|
function CapDocumentUpload(props) {
|
|
18
19
|
const {
|
|
@@ -39,7 +40,7 @@ function CapDocumentUpload(props) {
|
|
|
39
40
|
const { secure_file_path = '', karixFileHandle = '', name = '', file_size = ''} = get(docDataObj, 'metaInfo', {});
|
|
40
41
|
setWhatsappDocParams({
|
|
41
42
|
...whatsappDocParams,
|
|
42
|
-
whatsappDocName: `${name.slice(0, -13)}.pdf`,
|
|
43
|
+
whatsappDocName: `${decodeURIComponent(name.slice(0, -13))}.pdf`,
|
|
43
44
|
//sliced to show the actual name of the pdf to the user and in the preview, this remove suffix appended to the name on creatives node side
|
|
44
45
|
whatsappDocSize: file_size,
|
|
45
46
|
});
|
|
@@ -69,11 +70,7 @@ function CapDocumentUpload(props) {
|
|
|
69
70
|
e.preventDefault();
|
|
70
71
|
}
|
|
71
72
|
const _URL = window.URL || window.webkitURL;
|
|
72
|
-
|
|
73
|
-
const file = files[0];
|
|
74
|
-
if (!allowedExtensionsRegex.test(file.name)) {
|
|
75
|
-
incorrectFile = true;
|
|
76
|
-
}
|
|
73
|
+
const [file, incorrectFile] = createNewFile(files, allowedExtensionsRegex);
|
|
77
74
|
const doc = new FileReader();
|
|
78
75
|
doc.src = _URL.createObjectURL(file);
|
|
79
76
|
const fileParams = {
|
|
@@ -23,6 +23,7 @@ import Gallery from '../../v2Containers/Assets/Gallery';
|
|
|
23
23
|
import { FACEBOOK, RCS, WHATSAPP } from "../../v2Containers/CreativesContainer/constants";
|
|
24
24
|
|
|
25
25
|
import messages from './messages';
|
|
26
|
+
import { createNewFile } from '../../utils/common';
|
|
26
27
|
function CapImageUpload(props) {
|
|
27
28
|
const {
|
|
28
29
|
intl,
|
|
@@ -78,11 +79,7 @@ function CapImageUpload(props) {
|
|
|
78
79
|
e.preventDefault();
|
|
79
80
|
}
|
|
80
81
|
const _URL = window.URL || window.webkitURL;
|
|
81
|
-
|
|
82
|
-
const file = files[0];
|
|
83
|
-
if (!allowedExtensionsRegex.test(file.name)) {
|
|
84
|
-
incorrectFile = true;
|
|
85
|
-
}
|
|
82
|
+
const [file, incorrectFile] = createNewFile(files, allowedExtensionsRegex);
|
|
86
83
|
const img = new Image();
|
|
87
84
|
img.src = _URL.createObjectURL(file);
|
|
88
85
|
img.onload = () => {
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
CapSpin,
|
|
19
19
|
} from '@capillarytech/cap-ui-library';
|
|
20
20
|
import messages from './messages';
|
|
21
|
-
import {bytes2Size} from '../../utils/common';
|
|
21
|
+
import {bytes2Size, createNewFile} from '../../utils/common';
|
|
22
22
|
import { WHATSAPP } from './constants';
|
|
23
23
|
import './index.scss';
|
|
24
24
|
|
|
@@ -64,11 +64,7 @@ function CapVideoUpload(props) {
|
|
|
64
64
|
e.preventDefault();
|
|
65
65
|
}
|
|
66
66
|
const _URL = window.URL || window.webkitURL;
|
|
67
|
-
|
|
68
|
-
const file = files[0];
|
|
69
|
-
if (!allowedExtensionsRegex.test(file.name)) {
|
|
70
|
-
incorrectFile = true;
|
|
71
|
-
}
|
|
67
|
+
const [file, incorrectFile] = createNewFile(files, allowedExtensionsRegex);
|
|
72
68
|
const video = new FileReader();
|
|
73
69
|
video.src = _URL.createObjectURL(file);
|
|
74
70
|
const fileParams = {
|
|
@@ -30,6 +30,7 @@ import { SMS, LINE } from '../../v2Containers/CreativesContainer/constants';
|
|
|
30
30
|
import { validateIfTagClosed } from '../../utils/tagValidations';
|
|
31
31
|
import globalMessages from '../../v2Containers/Cap/messages';
|
|
32
32
|
import { convert } from 'html-to-text';
|
|
33
|
+
import { createNewFile } from '../../utils/common';
|
|
33
34
|
const TabPane = Tabs.TabPane;
|
|
34
35
|
const {Column} = Table;
|
|
35
36
|
const {TextArea} = CapInput;
|
|
@@ -2161,13 +2162,14 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
2161
2162
|
e.preventDefault();
|
|
2162
2163
|
}
|
|
2163
2164
|
const _URL = window.URL || window.webkitURL;
|
|
2164
|
-
const
|
|
2165
|
+
const tempFile = files[0];
|
|
2165
2166
|
if (val.supportedExtensions) {
|
|
2166
2167
|
const allowedExtensions = /(\.bmp|\.jpeg|\.png|\.gif|\.jpg)$/i;
|
|
2167
|
-
if (!allowedExtensions.exec(
|
|
2168
|
-
this.callChildEvent({
|
|
2168
|
+
if (!allowedExtensions.exec(tempFile?.name)) {
|
|
2169
|
+
this.callChildEvent({tempFile, type: 'wrong file'}, val, val.submitAction);
|
|
2169
2170
|
}
|
|
2170
2171
|
}
|
|
2172
|
+
const file = createNewFile(files)[0];
|
|
2171
2173
|
const img = new Image();
|
|
2172
2174
|
img.src = _URL.createObjectURL(file);
|
|
2173
2175
|
img.onload = () => {
|
|
@@ -8,6 +8,7 @@ export const GET_SIDEBAR_FAILURE = 'app/App/GET_SIDEBAR_FAILURE';
|
|
|
8
8
|
|
|
9
9
|
export const getTopbarMenuDataValue = () => ([
|
|
10
10
|
{ label: <FormattedMessage {...globalMessages.campaigns} />, link: '/campaigns/ui/list', key: 'campaigns' },
|
|
11
|
+
{ label: <FormattedMessage {...globalMessages.journeys} />, link: '/journeys/ui', key: 'journeys' },
|
|
11
12
|
{ label: <FormattedMessage {...globalMessages.audience} />, link: '/audience-manager/list', key: 'audience' },
|
|
12
13
|
{ label: <FormattedMessage {...globalMessages.incentive} />, link: '/coupons/ui/', key: 'incentive' },
|
|
13
14
|
{ label: <FormattedMessage {...globalMessages.creatives} />, link: '/creatives/ui/v2', key: 'creatives' },
|
|
@@ -13,8 +13,10 @@ import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
|
|
|
13
13
|
import { createStructuredSelector } from 'reselect';
|
|
14
14
|
import moment from "moment";
|
|
15
15
|
import _ from "lodash";
|
|
16
|
+
import Bugsnag from '@bugsnag/js';
|
|
16
17
|
import { CapHeading, CapHeader, CapInput, CapButton, CapSpin, CapIcon, CapDropdown, CapMenu, CapCustomCard, CapSlideBox, CapLabel, CapIllustration} from '@capillarytech/cap-ui-library';
|
|
17
18
|
import { Popover } from 'antd';
|
|
19
|
+
import { createNewFile } from '../../../utils/common';
|
|
18
20
|
import makeSelectGallery from './selectors';
|
|
19
21
|
import messages from './messages';
|
|
20
22
|
import * as actions from './actions';
|
|
@@ -231,16 +233,18 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
231
233
|
const _URL = window.URL || window.webkitURL;
|
|
232
234
|
for (const file in files) {
|
|
233
235
|
if (files.hasOwnProperty(file)) {
|
|
236
|
+
const tempFile = files[file];
|
|
237
|
+
const [uploadFile] = createNewFile([tempFile]);
|
|
234
238
|
const img = new Image();
|
|
235
239
|
const that = this;
|
|
236
|
-
img.src = _URL.createObjectURL(
|
|
240
|
+
img.src = _URL.createObjectURL(uploadFile);
|
|
237
241
|
img.onload = function () {
|
|
238
242
|
const fileParams = {
|
|
239
243
|
width: this.width,
|
|
240
244
|
height: this.height,
|
|
241
245
|
isGeneratePreview: true,
|
|
242
246
|
};
|
|
243
|
-
that.props.actions.uploadAsset(
|
|
247
|
+
that.props.actions.uploadAsset(uploadFile, 'image', fileParams);
|
|
244
248
|
};
|
|
245
249
|
}
|
|
246
250
|
}
|
|
@@ -307,6 +311,10 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
307
311
|
const currentChannel = 'gallery';
|
|
308
312
|
const { searchLoader, searchText } = this.state;
|
|
309
313
|
const cardDataList = templates?.length ? _.map(templates, (template) => {
|
|
314
|
+
const nameParts = template.name.split('.');
|
|
315
|
+
if (encodeURIComponent(decodeURIComponent(nameParts[0])) === nameParts[0]) {
|
|
316
|
+
template.name = `${decodeURIComponent(nameParts[0])}.${nameParts[1]}`;
|
|
317
|
+
}
|
|
310
318
|
const templateData =
|
|
311
319
|
{
|
|
312
320
|
key: `${currentChannel}-card-${template.name}`,
|
|
@@ -390,9 +398,26 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
390
398
|
const by = commonUtil.getUserNameById(parseInt(this.state.selectedAsset.updatedBy, 10), commonUtil.getMergedUserList(this.props.Gallery.userList));
|
|
391
399
|
const width = this.state.selectedAsset.metaInfo.width;
|
|
392
400
|
const height = this.state.selectedAsset.metaInfo.height;
|
|
401
|
+
/*
|
|
402
|
+
splitting the name on . and verifying
|
|
403
|
+
whether the filename is already encoded or not,
|
|
404
|
+
if yes decoding it ,to be shown on ui
|
|
405
|
+
*/
|
|
406
|
+
const nameParts = this.state.selectedAsset.name.split('.');
|
|
407
|
+
let updatedTitle = this.state.selectedAsset.name;
|
|
408
|
+
try {
|
|
409
|
+
if (encodeURIComponent(decodeURIComponent(nameParts[0])) === nameParts[0]) {
|
|
410
|
+
updatedTitle = `${decodeURIComponent(nameParts[0])}.${nameParts[1]}`;
|
|
411
|
+
}
|
|
412
|
+
} catch (error) {
|
|
413
|
+
Bugsnag.leaveBreadcrumb("Error decoding the string:", error);
|
|
414
|
+
Bugsnag.notify(error, (event) => {
|
|
415
|
+
event.severity = "error";
|
|
416
|
+
});
|
|
417
|
+
}
|
|
393
418
|
const slideboxHeader = (<div>
|
|
394
419
|
<CapHeader
|
|
395
|
-
title={
|
|
420
|
+
title={updatedTitle}
|
|
396
421
|
description={<FormattedMessage
|
|
397
422
|
{...messages.lastUpdated}
|
|
398
423
|
values={{on, by }}
|
|
@@ -80,7 +80,7 @@ export default defineMessages({
|
|
|
80
80
|
},
|
|
81
81
|
assetUploadFailed: {
|
|
82
82
|
id: 'creatives.containersV2.Assets.Gallery.assetUploadFailed',
|
|
83
|
-
defaultMessage: 'Image
|
|
83
|
+
defaultMessage: 'Image upload failed',
|
|
84
84
|
},
|
|
85
85
|
assetDeleteSuccess: {
|
|
86
86
|
id: 'creatives.containersV2.Assets.Gallery.assetDeleteSuccess',
|
|
@@ -24,6 +24,10 @@ export default defineMessages({
|
|
|
24
24
|
id: 'creatives.containersV2.Cap.campaigns',
|
|
25
25
|
defaultMessage: 'Campaigns',
|
|
26
26
|
},
|
|
27
|
+
"journeys": {
|
|
28
|
+
id: 'creatives.containersV2.Cap.journeys',
|
|
29
|
+
defaultMessage: 'Journeys',
|
|
30
|
+
},
|
|
27
31
|
"loyalty": {
|
|
28
32
|
id: 'creatives.containersV2.Cap.loyalty',
|
|
29
33
|
defaultMessage: 'Loyalty',
|
|
@@ -356,7 +356,7 @@ exports[`<Cap /> should render correct component 1`] = `
|
|
|
356
356
|
"creatives.containers.Assets.Gallery.alphabetically": "Alphabetically",
|
|
357
357
|
"creatives.containers.Assets.Gallery.assetDeleteFailed": "Image deletion failed.",
|
|
358
358
|
"creatives.containers.Assets.Gallery.assetDeleteSuccess": "Image deleted successfully.",
|
|
359
|
-
"creatives.containers.Assets.Gallery.assetUploadFailed": "Image
|
|
359
|
+
"creatives.containers.Assets.Gallery.assetUploadFailed": "Image upload failed",
|
|
360
360
|
"creatives.containers.Assets.Gallery.assetUploadSuccess": "Image uploaded successfully",
|
|
361
361
|
"creatives.containers.Assets.Gallery.backToGallery": "Back to image gallery",
|
|
362
362
|
"creatives.containers.Assets.Gallery.delete": "Delete",
|
|
@@ -503,7 +503,7 @@ exports[`<Cap /> should render correct component 1`] = `
|
|
|
503
503
|
"creatives.containers.Email.Tags": "Tags",
|
|
504
504
|
"creatives.containers.Email.alphabetically": "Alphabetically",
|
|
505
505
|
"creatives.containers.Email.alphabeticallyOption": "Alphabetically",
|
|
506
|
-
"creatives.containers.Email.assetUploadFailed": "Image
|
|
506
|
+
"creatives.containers.Email.assetUploadFailed": "Image upload failed",
|
|
507
507
|
"creatives.containers.Email.blankTemplate": "Blank template",
|
|
508
508
|
"creatives.containers.Email.cancel": "Cancel",
|
|
509
509
|
"creatives.containers.Email.createHeading": "Create email template",
|
|
@@ -908,7 +908,7 @@ exports[`<Cap /> should render correct component 1`] = `
|
|
|
908
908
|
"creatives.containersV2.Assets.Gallery.alphabetically": "Alphabetically",
|
|
909
909
|
"creatives.containersV2.Assets.Gallery.assetDeleteFailed": "Image deletion failed.",
|
|
910
910
|
"creatives.containersV2.Assets.Gallery.assetDeleteSuccess": "Image deleted successfully.",
|
|
911
|
-
"creatives.containersV2.Assets.Gallery.assetUploadFailed": "Image
|
|
911
|
+
"creatives.containersV2.Assets.Gallery.assetUploadFailed": "Image upload failed",
|
|
912
912
|
"creatives.containersV2.Assets.Gallery.assetUploadSuccess": "Image uploaded successfully",
|
|
913
913
|
"creatives.containersV2.Assets.Gallery.backToGallery": "Back to image gallery",
|
|
914
914
|
"creatives.containersV2.Assets.Gallery.delete": "Delete",
|
|
@@ -1166,7 +1166,7 @@ exports[`<Cap /> should render correct component 1`] = `
|
|
|
1166
1166
|
"creatives.containersV2.Email.alertMessage": "Alert",
|
|
1167
1167
|
"creatives.containersV2.Email.alphabetically": "Alphabetically",
|
|
1168
1168
|
"creatives.containersV2.Email.alphabeticallyOption": "Alphabetically",
|
|
1169
|
-
"creatives.containersV2.Email.assetUploadFailed": "Image
|
|
1169
|
+
"creatives.containersV2.Email.assetUploadFailed": "Image upload failed",
|
|
1170
1170
|
"creatives.containersV2.Email.blankTemplate": "Blank template",
|
|
1171
1171
|
"creatives.containersV2.Email.cancel": "Cancel",
|
|
1172
1172
|
"creatives.containersV2.Email.copyPrimaryLanguage": "Copy Primary Language",
|
|
@@ -232,7 +232,7 @@ export default defineMessages({
|
|
|
232
232
|
},
|
|
233
233
|
"assetUploadFailed": {
|
|
234
234
|
id: 'creatives.containersV2.Email.assetUploadFailed',
|
|
235
|
-
defaultMessage: 'Image
|
|
235
|
+
defaultMessage: 'Image upload failed',
|
|
236
236
|
},
|
|
237
237
|
"noImgInGallery": {
|
|
238
238
|
id: 'creatives.containersV2.Email.noImgInGallery',
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
LINE_IMG_SIZE,
|
|
25
25
|
ALLOWED_EXTENSIONS_REGEX,
|
|
26
26
|
} from './constants';
|
|
27
|
+
import { createNewFile } from '../../../../utils/common';
|
|
27
28
|
|
|
28
29
|
export const LineImage = ({
|
|
29
30
|
className,
|
|
@@ -171,11 +172,7 @@ export const LineImage = ({
|
|
|
171
172
|
e.preventDefault();
|
|
172
173
|
}
|
|
173
174
|
const _URL = window.URL || window.webkitURL;
|
|
174
|
-
|
|
175
|
-
const file = files[0];
|
|
176
|
-
if (!ALLOWED_EXTENSIONS_REGEX.test(file.name)) {
|
|
177
|
-
incorrectFile = true;
|
|
178
|
-
}
|
|
175
|
+
const [file, incorrectFile] = createNewFile(files, ALLOWED_EXTENSIONS_REGEX);
|
|
179
176
|
const img = new Image();
|
|
180
177
|
img.src = _URL.createObjectURL(file);
|
|
181
178
|
img.onload = () => {
|