@atlaskit/emoji 70.11.0 → 70.11.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 70.11.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`f9457ee7bd8fc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/f9457ee7bd8fc) -
8
+ Add file type validation to emoji picker.
9
+ - Updated dependencies
10
+
3
11
  ## 70.11.0
4
12
 
5
13
  ### Minor Changes
@@ -43,6 +43,8 @@ var uploadChooseFileEmojiName = null;
43
43
  var uploadChooseFileMessage = null;
44
44
  var uploadChooseFileRow = null;
45
45
  var uploadChooseFileRowNew = null;
46
+ var supportedEmojiUploadMimeTypes = new Set(['image/png', 'image/jpeg', 'image/gif']);
47
+ var supportedEmojiUploadExtensions = ['.png', '.jpg', '.jpeg', '.gif'];
46
48
  var uploadEmojiNameInputTestId = exports.uploadEmojiNameInputTestId = 'upload-emoji-name-input';
47
49
  var uploadEmojiComponentTestId = exports.uploadEmojiComponentTestId = 'upload-emoji-component';
48
50
  var cancelEmojiUploadPickerTestId = exports.cancelEmojiUploadPickerTestId = 'cancel-emoji-upload-picker';
@@ -59,6 +61,18 @@ var toEmojiName = function toEmojiName(uploadName) {
59
61
  var name = uploadName.split('_').join(' ');
60
62
  return "".concat(name.substr(0, 1).toLocaleUpperCase()).concat(name.substr(1));
61
63
  };
64
+ var isSupportedEmojiUploadFileType = function isSupportedEmojiUploadFileType(file) {
65
+ if (!(0, _platformFeatureFlags.fg)('platform_emoji_picker_refresh')) {
66
+ return true;
67
+ }
68
+ if (supportedEmojiUploadMimeTypes.has(file.type)) {
69
+ return true;
70
+ }
71
+ var lowerCaseFileName = file.name.toLowerCase();
72
+ return supportedEmojiUploadExtensions.some(function (extension) {
73
+ return lowerCaseFileName.endsWith(extension);
74
+ });
75
+ };
62
76
  var ChooseEmojiFile = /*#__PURE__*/(0, _react.memo)(function (props) {
63
77
  var _props$name = props.name,
64
78
  name = _props$name === void 0 ? '' : _props$name,
@@ -342,6 +356,11 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
342
356
  if (files.length) {
343
357
  var reader = new FileReader();
344
358
  var file = files[0];
359
+ if (!isSupportedEmojiUploadFileType(file)) {
360
+ setChooseEmojiErrorMessage( /*#__PURE__*/React.createElement(_reactIntl.FormattedMessage, _i18n.messages.emojiUnsupportedFileType));
361
+ cancelChooseFile();
362
+ return;
363
+ }
345
364
  if (ImageUtil.hasFileExceededSize(file)) {
346
365
  setChooseEmojiErrorMessage( /*#__PURE__*/React.createElement(_reactIntl.FormattedMessage, _i18n.messages.emojiImageTooBig));
347
366
  cancelChooseFile();
@@ -221,6 +221,11 @@ var messages = exports.messages = (0, _reactIntl.defineMessages)({
221
221
  defaultMessage: 'Selected image is more than 1 MB',
222
222
  description: 'Error message for image too big, beyond the size limit'
223
223
  },
224
+ emojiUnsupportedFileType: {
225
+ id: 'fabric.emoji.error.unsupported.file.type',
226
+ defaultMessage: "This file type isn't supported. Select a PNG, JPEG, or GIF to create your emoji.",
227
+ description: 'Error message shown when the selected emoji upload file type is not supported'
228
+ },
224
229
  emojiDuplicateName: {
225
230
  id: 'fabric.emoji.error.duplicate.name',
226
231
  defaultMessage: 'An emoji with this name exists already',
@@ -20,7 +20,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
20
20
  actionSubjectId: actionSubjectId,
21
21
  attributes: _objectSpread({
22
22
  packageName: "@atlaskit/emoji",
23
- packageVersion: "70.10.14"
23
+ packageVersion: "70.11.0"
24
24
  }, attributes)
25
25
  };
26
26
  };
@@ -32,6 +32,8 @@ const uploadChooseFileEmojiName = null;
32
32
  const uploadChooseFileMessage = null;
33
33
  const uploadChooseFileRow = null;
34
34
  const uploadChooseFileRowNew = null;
35
+ const supportedEmojiUploadMimeTypes = new Set(['image/png', 'image/jpeg', 'image/gif']);
36
+ const supportedEmojiUploadExtensions = ['.png', '.jpg', '.jpeg', '.gif'];
35
37
  export const uploadEmojiNameInputTestId = 'upload-emoji-name-input';
36
38
  export const uploadEmojiComponentTestId = 'upload-emoji-component';
37
39
  export const cancelEmojiUploadPickerTestId = 'cancel-emoji-upload-picker';
@@ -48,6 +50,16 @@ const toEmojiName = uploadName => {
48
50
  const name = uploadName.split('_').join(' ');
49
51
  return `${name.substr(0, 1).toLocaleUpperCase()}${name.substr(1)}`;
50
52
  };
53
+ const isSupportedEmojiUploadFileType = file => {
54
+ if (!fg('platform_emoji_picker_refresh')) {
55
+ return true;
56
+ }
57
+ if (supportedEmojiUploadMimeTypes.has(file.type)) {
58
+ return true;
59
+ }
60
+ const lowerCaseFileName = file.name.toLowerCase();
61
+ return supportedEmojiUploadExtensions.some(extension => lowerCaseFileName.endsWith(extension));
62
+ };
51
63
  const ChooseEmojiFile = /*#__PURE__*/memo(props => {
52
64
  const {
53
65
  name = '',
@@ -297,6 +309,11 @@ const EmojiUploadPicker = props => {
297
309
  if (files.length) {
298
310
  const reader = new FileReader();
299
311
  const file = files[0];
312
+ if (!isSupportedEmojiUploadFileType(file)) {
313
+ setChooseEmojiErrorMessage( /*#__PURE__*/React.createElement(FormattedMessage, messages.emojiUnsupportedFileType));
314
+ cancelChooseFile();
315
+ return;
316
+ }
300
317
  if (ImageUtil.hasFileExceededSize(file)) {
301
318
  setChooseEmojiErrorMessage( /*#__PURE__*/React.createElement(FormattedMessage, messages.emojiImageTooBig));
302
319
  cancelChooseFile();
@@ -215,6 +215,11 @@ export const messages = defineMessages({
215
215
  defaultMessage: 'Selected image is more than 1 MB',
216
216
  description: 'Error message for image too big, beyond the size limit'
217
217
  },
218
+ emojiUnsupportedFileType: {
219
+ id: 'fabric.emoji.error.unsupported.file.type',
220
+ defaultMessage: "This file type isn't supported. Select a PNG, JPEG, or GIF to create your emoji.",
221
+ description: 'Error message shown when the selected emoji upload file type is not supported'
222
+ },
218
223
  emojiDuplicateName: {
219
224
  id: 'fabric.emoji.error.duplicate.name',
220
225
  defaultMessage: 'An emoji with this name exists already',
@@ -9,7 +9,7 @@ const createEvent = (eventType, action, actionSubject, actionSubjectId, attribut
9
9
  actionSubjectId,
10
10
  attributes: {
11
11
  packageName: "@atlaskit/emoji",
12
- packageVersion: "70.10.14",
12
+ packageVersion: "70.11.0",
13
13
  ...attributes
14
14
  }
15
15
  });
@@ -35,6 +35,8 @@ var uploadChooseFileEmojiName = null;
35
35
  var uploadChooseFileMessage = null;
36
36
  var uploadChooseFileRow = null;
37
37
  var uploadChooseFileRowNew = null;
38
+ var supportedEmojiUploadMimeTypes = new Set(['image/png', 'image/jpeg', 'image/gif']);
39
+ var supportedEmojiUploadExtensions = ['.png', '.jpg', '.jpeg', '.gif'];
38
40
  export var uploadEmojiNameInputTestId = 'upload-emoji-name-input';
39
41
  export var uploadEmojiComponentTestId = 'upload-emoji-component';
40
42
  export var cancelEmojiUploadPickerTestId = 'cancel-emoji-upload-picker';
@@ -51,6 +53,18 @@ var toEmojiName = function toEmojiName(uploadName) {
51
53
  var name = uploadName.split('_').join(' ');
52
54
  return "".concat(name.substr(0, 1).toLocaleUpperCase()).concat(name.substr(1));
53
55
  };
56
+ var isSupportedEmojiUploadFileType = function isSupportedEmojiUploadFileType(file) {
57
+ if (!fg('platform_emoji_picker_refresh')) {
58
+ return true;
59
+ }
60
+ if (supportedEmojiUploadMimeTypes.has(file.type)) {
61
+ return true;
62
+ }
63
+ var lowerCaseFileName = file.name.toLowerCase();
64
+ return supportedEmojiUploadExtensions.some(function (extension) {
65
+ return lowerCaseFileName.endsWith(extension);
66
+ });
67
+ };
54
68
  var ChooseEmojiFile = /*#__PURE__*/memo(function (props) {
55
69
  var _props$name = props.name,
56
70
  name = _props$name === void 0 ? '' : _props$name,
@@ -334,6 +348,11 @@ var EmojiUploadPicker = function EmojiUploadPicker(props) {
334
348
  if (files.length) {
335
349
  var reader = new FileReader();
336
350
  var file = files[0];
351
+ if (!isSupportedEmojiUploadFileType(file)) {
352
+ setChooseEmojiErrorMessage( /*#__PURE__*/React.createElement(FormattedMessage, messages.emojiUnsupportedFileType));
353
+ cancelChooseFile();
354
+ return;
355
+ }
337
356
  if (ImageUtil.hasFileExceededSize(file)) {
338
357
  setChooseEmojiErrorMessage( /*#__PURE__*/React.createElement(FormattedMessage, messages.emojiImageTooBig));
339
358
  cancelChooseFile();
@@ -215,6 +215,11 @@ export var messages = defineMessages({
215
215
  defaultMessage: 'Selected image is more than 1 MB',
216
216
  description: 'Error message for image too big, beyond the size limit'
217
217
  },
218
+ emojiUnsupportedFileType: {
219
+ id: 'fabric.emoji.error.unsupported.file.type',
220
+ defaultMessage: "This file type isn't supported. Select a PNG, JPEG, or GIF to create your emoji.",
221
+ description: 'Error message shown when the selected emoji upload file type is not supported'
222
+ },
218
223
  emojiDuplicateName: {
219
224
  id: 'fabric.emoji.error.duplicate.name',
220
225
  defaultMessage: 'An emoji with this name exists already',
@@ -14,7 +14,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
14
14
  actionSubjectId: actionSubjectId,
15
15
  attributes: _objectSpread({
16
16
  packageName: "@atlaskit/emoji",
17
- packageVersion: "70.10.14"
17
+ packageVersion: "70.11.0"
18
18
  }, attributes)
19
19
  };
20
20
  };
@@ -159,6 +159,11 @@ export declare const messages: {
159
159
  description: string;
160
160
  id: string;
161
161
  };
162
+ emojiUnsupportedFileType: {
163
+ defaultMessage: string;
164
+ description: string;
165
+ id: string;
166
+ };
162
167
  emojiUploadFailed: {
163
168
  defaultMessage: string;
164
169
  description: string;
@@ -159,6 +159,11 @@ export declare const messages: {
159
159
  description: string;
160
160
  id: string;
161
161
  };
162
+ emojiUnsupportedFileType: {
163
+ defaultMessage: string;
164
+ description: string;
165
+ id: string;
166
+ };
162
167
  emojiUploadFailed: {
163
168
  defaultMessage: string;
164
169
  description: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "70.11.0",
3
+ "version": "70.11.1",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -52,9 +52,9 @@
52
52
  "@atlaskit/primitives": "^19.0.0",
53
53
  "@atlaskit/spinner": "^19.1.0",
54
54
  "@atlaskit/textfield": "^8.3.0",
55
- "@atlaskit/tmp-editor-statsig": "^84.4.0",
55
+ "@atlaskit/tmp-editor-statsig": "^85.0.0",
56
56
  "@atlaskit/tokens": "^13.1.0",
57
- "@atlaskit/tooltip": "^22.4.0",
57
+ "@atlaskit/tooltip": "^22.5.0",
58
58
  "@atlaskit/ufo": "^0.5.0",
59
59
  "@atlaskit/util-service-support": "^6.4.0",
60
60
  "@atlaskit/visually-hidden": "^3.1.0",