@commercetools-frontend/react-notifications 20.11.0 → 20.12.0

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.
@@ -60,7 +60,7 @@ var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_sliceInstanc
60
60
  var isNumber__default = /*#__PURE__*/_interopDefault(isNumber);
61
61
 
62
62
  // NOTE: This string will be replaced on build time with the package version.
63
- var version = "20.11.0";
63
+ var version = "20.12.0";
64
64
 
65
65
  var Context = /*#__PURE__*/react.createContext(function () {
66
66
  return null;
@@ -396,11 +396,12 @@ var hasErrorCodeAMatchingMessage = function hasErrorCodeAMatchingMessage(errorCo
396
396
  };
397
397
 
398
398
  var FormattedErrorMessage = function FormattedErrorMessage(props) {
399
- var _context2;
399
+ var _props$error$extensio, _props$error$extensio2, _context2;
400
400
 
401
401
  var intl = reactIntl.useIntl(); // Attempt to map the error by code
402
402
 
403
- var messageCode = props.error.code && hasErrorCodeAMatchingMessage(props.error.code) ? apiErrorMessages[props.error.code] : undefined;
403
+ var extensionErrorCode = (_props$error$extensio = (_props$error$extensio2 = props.error.extensions) === null || _props$error$extensio2 === void 0 ? void 0 : _props$error$extensio2.code) !== null && _props$error$extensio !== void 0 ? _props$error$extensio : props.error.code;
404
+ var messageCode = extensionErrorCode && hasErrorCodeAMatchingMessage(extensionErrorCode) ? apiErrorMessages[extensionErrorCode] : undefined;
404
405
  react.useEffect(function () {
405
406
  if (!messageCode) {
406
407
  var _context;
@@ -408,13 +409,13 @@ var FormattedErrorMessage = function FormattedErrorMessage(props) {
408
409
  // This error is not mapped / translated yet,
409
410
  // we log, report it to sentry and show the original error, unless `error.code` is `invalid_scope`
410
411
  // which an error code emitted for expired project(s)
411
- if (props.error.code !== 'invalid_scope' && !_includesInstanceProperty__default["default"](_context = props.error.message).call(_context, 'has expired')) {
412
+ if (extensionErrorCode !== 'invalid_scope' && !_includesInstanceProperty__default["default"](_context = props.error.message).call(_context, 'has expired')) {
412
413
  sentry.reportErrorToSentry(new Error('Unmapped error'), {
413
414
  extra: props.error
414
415
  });
415
416
  }
416
417
  }
417
- }, [messageCode, props.error]);
418
+ }, [extensionErrorCode, messageCode, props.error]);
418
419
 
419
420
  if (messageCode) {
420
421
  // The `error` object might contain extra fields for the specific `code`.
@@ -453,7 +454,9 @@ ApiErrorMessage.propTypes = process.env.NODE_ENV !== "production" ? {
453
454
  ApiErrorMessage.displayName = 'ApiErrorMessage';
454
455
 
455
456
  function getSpecialFormattedMessageByErrorCode(error, intl) {
456
- var _context3, _context4, _context5;
457
+ var _error$extensions$cod, _error$extensions, _context3, _context4, _context5;
458
+
459
+ var extensionErrorCode = (_error$extensions$cod = (_error$extensions = error.extensions) === null || _error$extensions === void 0 ? void 0 : _error$extensions.code) !== null && _error$extensions$cod !== void 0 ? _error$extensions$cod : error.code;
457
460
 
458
461
  if (error.errorByExtension) {
459
462
  var extensionMessage;
@@ -465,26 +468,26 @@ function getSpecialFormattedMessageByErrorCode(error, intl) {
465
468
  return extensionMessage || error.message;
466
469
  }
467
470
 
468
- if (!error.code || error.code === 'InvalidInput') return intl.formatMessage(apiErrorMessages.General); // TODO: this is a temporary solution until we have proper pages about 403
471
+ if (!extensionErrorCode || extensionErrorCode === 'InvalidInput') return intl.formatMessage(apiErrorMessages.General); // TODO: this is a temporary solution until we have proper pages about 403
469
472
 
470
- if (error.code === 'insufficient_scope') return intl.formatMessage(apiErrorMessages.Forbidden);
471
- if (error.code === 'DuplicateField' && error.field === 'slug') return intl.formatMessage(apiErrorMessages.DuplicateSlug, {
473
+ if (extensionErrorCode === 'insufficient_scope') return intl.formatMessage(apiErrorMessages.Forbidden);
474
+ if (extensionErrorCode === 'DuplicateField' && error.field === 'slug') return intl.formatMessage(apiErrorMessages.DuplicateSlug, {
472
475
  slugValue: error.duplicateValue
473
476
  }); // Try to match the error with a custom error message
474
477
 
475
478
  if (has__default["default"](error, 'invalidValue') && has__default["default"](error.invalidValue, 'overlappingPrices')) return intl.formatMessage(apiErrorMessages.OverlappingPrices);
476
479
 
477
- if (error.code === 'InvalidOperation' && _includesInstanceProperty__default["default"](_context3 = error.message).call(_context3, 'validFrom') && _includesInstanceProperty__default["default"](_context4 = error.message).call(_context4, 'validUntil')) {
480
+ if (extensionErrorCode === 'InvalidOperation' && _includesInstanceProperty__default["default"](_context3 = error.message).call(_context3, 'validFrom') && _includesInstanceProperty__default["default"](_context4 = error.message).call(_context4, 'validUntil')) {
478
481
  return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
479
482
  field: 'validFrom'
480
483
  });
481
484
  }
482
485
 
483
- if (error.code === 'InvalidOperation' && _includesInstanceProperty__default["default"](_context5 = error.message).call(_context5, 'Duplicate tax rate for')) {
486
+ if (extensionErrorCode === 'InvalidOperation' && _includesInstanceProperty__default["default"](_context5 = error.message).call(_context5, 'Duplicate tax rate for')) {
484
487
  return intl.formatMessage(apiErrorMessages.TaxCategoryDuplicateCountry);
485
488
  }
486
489
 
487
- if (error.code === 'InvalidOperation' && regexInvalidOperationRequiredAttribute.test(error.message)) {
490
+ if (extensionErrorCode === 'InvalidOperation' && regexInvalidOperationRequiredAttribute.test(error.message)) {
488
491
  var attrName = error.message.replace(regexInvalidOperationRequiredAttribute, '$1');
489
492
  return intl.formatMessage(apiErrorMessages.RequiredField, {
490
493
  field: attrName
@@ -494,17 +497,17 @@ function getSpecialFormattedMessageByErrorCode(error, intl) {
494
497
  // errors. We should investigate this further.
495
498
 
496
499
 
497
- if (error.code === 'InvalidField' && error.field === 'price' && has__default["default"](error, 'invalidValue') && has__default["default"](error.invalidValue, 'validFrom') && has__default["default"](error.invalidValue, 'validUntil')) return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
500
+ if (extensionErrorCode === 'InvalidField' && error.field === 'price' && has__default["default"](error, 'invalidValue') && has__default["default"](error.invalidValue, 'validFrom') && has__default["default"](error.invalidValue, 'validUntil')) return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
498
501
  field: error.field
499
502
  });
500
503
 
501
- if (error.code === 'DuplicateAttributeValue' && error.attribute) {
504
+ if (extensionErrorCode === 'DuplicateAttributeValue' && error.attribute) {
502
505
  return intl.formatMessage(apiErrorMessages.DuplicateAttributeValue, {
503
506
  name: error.attribute.name
504
507
  });
505
508
  }
506
509
 
507
- if (error.code === 'MaxResourceLimitExceeded') {
510
+ if (extensionErrorCode === 'MaxResourceLimitExceeded') {
508
511
  return intl.formatMessage(apiErrorMessages.MaxResourceLimitExceeded);
509
512
  }
510
513
 
@@ -520,7 +523,10 @@ var ApiErrorNotification = function ApiErrorNotification(props) {
520
523
  onCloseClick: props.dismiss,
521
524
  children: jsxRuntime.jsx("ul", {
522
525
  children: _valuesInstanceProperty__default["default"](props.notification) && _mapInstanceProperty__default["default"](_context = _valuesInstanceProperty__default["default"](props.notification).errors).call(_context, function (error, idx) {
523
- var shouldLogErrorToConsole = !error.code && process.env.NODE_ENV === 'development';
526
+ var _error$extensions$cod, _error$extensions;
527
+
528
+ var extensionErrorCode = (_error$extensions$cod = (_error$extensions = error.extensions) === null || _error$extensions === void 0 ? void 0 : _error$extensions.code) !== null && _error$extensions$cod !== void 0 ? _error$extensions$cod : error.code;
529
+ var shouldLogErrorToConsole = !extensionErrorCode && process.env.NODE_ENV === 'development';
524
530
 
525
531
  if (shouldLogErrorToConsole) {
526
532
  /**
@@ -60,7 +60,7 @@ var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_sliceInstanc
60
60
  var isNumber__default = /*#__PURE__*/_interopDefault(isNumber);
61
61
 
62
62
  // NOTE: This string will be replaced on build time with the package version.
63
- var version = "20.11.0";
63
+ var version = "20.12.0";
64
64
 
65
65
  var Context = /*#__PURE__*/react.createContext(function () {
66
66
  return null;
@@ -381,11 +381,12 @@ var hasErrorCodeAMatchingMessage = function hasErrorCodeAMatchingMessage(errorCo
381
381
  };
382
382
 
383
383
  var FormattedErrorMessage = function FormattedErrorMessage(props) {
384
- var _context2;
384
+ var _props$error$extensio, _props$error$extensio2, _context2;
385
385
 
386
386
  var intl = reactIntl.useIntl(); // Attempt to map the error by code
387
387
 
388
- var messageCode = props.error.code && hasErrorCodeAMatchingMessage(props.error.code) ? apiErrorMessages[props.error.code] : undefined;
388
+ var extensionErrorCode = (_props$error$extensio = (_props$error$extensio2 = props.error.extensions) === null || _props$error$extensio2 === void 0 ? void 0 : _props$error$extensio2.code) !== null && _props$error$extensio !== void 0 ? _props$error$extensio : props.error.code;
389
+ var messageCode = extensionErrorCode && hasErrorCodeAMatchingMessage(extensionErrorCode) ? apiErrorMessages[extensionErrorCode] : undefined;
389
390
  react.useEffect(function () {
390
391
  if (!messageCode) {
391
392
  var _context;
@@ -393,13 +394,13 @@ var FormattedErrorMessage = function FormattedErrorMessage(props) {
393
394
  // This error is not mapped / translated yet,
394
395
  // we log, report it to sentry and show the original error, unless `error.code` is `invalid_scope`
395
396
  // which an error code emitted for expired project(s)
396
- if (props.error.code !== 'invalid_scope' && !_includesInstanceProperty__default["default"](_context = props.error.message).call(_context, 'has expired')) {
397
+ if (extensionErrorCode !== 'invalid_scope' && !_includesInstanceProperty__default["default"](_context = props.error.message).call(_context, 'has expired')) {
397
398
  sentry.reportErrorToSentry(new Error('Unmapped error'), {
398
399
  extra: props.error
399
400
  });
400
401
  }
401
402
  }
402
- }, [messageCode, props.error]);
403
+ }, [extensionErrorCode, messageCode, props.error]);
403
404
 
404
405
  if (messageCode) {
405
406
  // The `error` object might contain extra fields for the specific `code`.
@@ -436,7 +437,9 @@ ApiErrorMessage.propTypes = {};
436
437
  ApiErrorMessage.displayName = 'ApiErrorMessage';
437
438
 
438
439
  function getSpecialFormattedMessageByErrorCode(error, intl) {
439
- var _context3, _context4, _context5;
440
+ var _error$extensions$cod, _error$extensions, _context3, _context4, _context5;
441
+
442
+ var extensionErrorCode = (_error$extensions$cod = (_error$extensions = error.extensions) === null || _error$extensions === void 0 ? void 0 : _error$extensions.code) !== null && _error$extensions$cod !== void 0 ? _error$extensions$cod : error.code;
440
443
 
441
444
  if (error.errorByExtension) {
442
445
  var extensionMessage;
@@ -448,26 +451,26 @@ function getSpecialFormattedMessageByErrorCode(error, intl) {
448
451
  return extensionMessage || error.message;
449
452
  }
450
453
 
451
- if (!error.code || error.code === 'InvalidInput') return intl.formatMessage(apiErrorMessages.General); // TODO: this is a temporary solution until we have proper pages about 403
454
+ if (!extensionErrorCode || extensionErrorCode === 'InvalidInput') return intl.formatMessage(apiErrorMessages.General); // TODO: this is a temporary solution until we have proper pages about 403
452
455
 
453
- if (error.code === 'insufficient_scope') return intl.formatMessage(apiErrorMessages.Forbidden);
454
- if (error.code === 'DuplicateField' && error.field === 'slug') return intl.formatMessage(apiErrorMessages.DuplicateSlug, {
456
+ if (extensionErrorCode === 'insufficient_scope') return intl.formatMessage(apiErrorMessages.Forbidden);
457
+ if (extensionErrorCode === 'DuplicateField' && error.field === 'slug') return intl.formatMessage(apiErrorMessages.DuplicateSlug, {
455
458
  slugValue: error.duplicateValue
456
459
  }); // Try to match the error with a custom error message
457
460
 
458
461
  if (has__default["default"](error, 'invalidValue') && has__default["default"](error.invalidValue, 'overlappingPrices')) return intl.formatMessage(apiErrorMessages.OverlappingPrices);
459
462
 
460
- if (error.code === 'InvalidOperation' && _includesInstanceProperty__default["default"](_context3 = error.message).call(_context3, 'validFrom') && _includesInstanceProperty__default["default"](_context4 = error.message).call(_context4, 'validUntil')) {
463
+ if (extensionErrorCode === 'InvalidOperation' && _includesInstanceProperty__default["default"](_context3 = error.message).call(_context3, 'validFrom') && _includesInstanceProperty__default["default"](_context4 = error.message).call(_context4, 'validUntil')) {
461
464
  return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
462
465
  field: 'validFrom'
463
466
  });
464
467
  }
465
468
 
466
- if (error.code === 'InvalidOperation' && _includesInstanceProperty__default["default"](_context5 = error.message).call(_context5, 'Duplicate tax rate for')) {
469
+ if (extensionErrorCode === 'InvalidOperation' && _includesInstanceProperty__default["default"](_context5 = error.message).call(_context5, 'Duplicate tax rate for')) {
467
470
  return intl.formatMessage(apiErrorMessages.TaxCategoryDuplicateCountry);
468
471
  }
469
472
 
470
- if (error.code === 'InvalidOperation' && regexInvalidOperationRequiredAttribute.test(error.message)) {
473
+ if (extensionErrorCode === 'InvalidOperation' && regexInvalidOperationRequiredAttribute.test(error.message)) {
471
474
  var attrName = error.message.replace(regexInvalidOperationRequiredAttribute, '$1');
472
475
  return intl.formatMessage(apiErrorMessages.RequiredField, {
473
476
  field: attrName
@@ -477,17 +480,17 @@ function getSpecialFormattedMessageByErrorCode(error, intl) {
477
480
  // errors. We should investigate this further.
478
481
 
479
482
 
480
- if (error.code === 'InvalidField' && error.field === 'price' && has__default["default"](error, 'invalidValue') && has__default["default"](error.invalidValue, 'validFrom') && has__default["default"](error.invalidValue, 'validUntil')) return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
483
+ if (extensionErrorCode === 'InvalidField' && error.field === 'price' && has__default["default"](error, 'invalidValue') && has__default["default"](error.invalidValue, 'validFrom') && has__default["default"](error.invalidValue, 'validUntil')) return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
481
484
  field: error.field
482
485
  });
483
486
 
484
- if (error.code === 'DuplicateAttributeValue' && error.attribute) {
487
+ if (extensionErrorCode === 'DuplicateAttributeValue' && error.attribute) {
485
488
  return intl.formatMessage(apiErrorMessages.DuplicateAttributeValue, {
486
489
  name: error.attribute.name
487
490
  });
488
491
  }
489
492
 
490
- if (error.code === 'MaxResourceLimitExceeded') {
493
+ if (extensionErrorCode === 'MaxResourceLimitExceeded') {
491
494
  return intl.formatMessage(apiErrorMessages.MaxResourceLimitExceeded);
492
495
  }
493
496
 
@@ -503,7 +506,10 @@ var ApiErrorNotification = function ApiErrorNotification(props) {
503
506
  onCloseClick: props.dismiss,
504
507
  children: jsxRuntime.jsx("ul", {
505
508
  children: _valuesInstanceProperty__default["default"](props.notification) && _mapInstanceProperty__default["default"](_context = _valuesInstanceProperty__default["default"](props.notification).errors).call(_context, function (error, idx) {
506
- var shouldLogErrorToConsole = !error.code && "production" === 'development';
509
+ var _error$extensions$cod, _error$extensions;
510
+
511
+ var extensionErrorCode = (_error$extensions$cod = (_error$extensions = error.extensions) === null || _error$extensions === void 0 ? void 0 : _error$extensions.code) !== null && _error$extensions$cod !== void 0 ? _error$extensions$cod : error.code;
512
+ var shouldLogErrorToConsole = !extensionErrorCode && "production" === 'development';
507
513
 
508
514
  if (shouldLogErrorToConsole) {
509
515
  /**
@@ -34,7 +34,7 @@ import isNumber from 'lodash/isNumber';
34
34
  import { useShowNotification } from '@commercetools-frontend/actions-global';
35
35
 
36
36
  // NOTE: This string will be replaced on build time with the package version.
37
- var version = "20.11.0";
37
+ var version = "20.12.0";
38
38
 
39
39
  var Context = /*#__PURE__*/createContext(function () {
40
40
  return null;
@@ -370,11 +370,12 @@ var hasErrorCodeAMatchingMessage = function hasErrorCodeAMatchingMessage(errorCo
370
370
  };
371
371
 
372
372
  var FormattedErrorMessage = function FormattedErrorMessage(props) {
373
- var _context2;
373
+ var _props$error$extensio, _props$error$extensio2, _context2;
374
374
 
375
375
  var intl = useIntl(); // Attempt to map the error by code
376
376
 
377
- var messageCode = props.error.code && hasErrorCodeAMatchingMessage(props.error.code) ? apiErrorMessages[props.error.code] : undefined;
377
+ var extensionErrorCode = (_props$error$extensio = (_props$error$extensio2 = props.error.extensions) === null || _props$error$extensio2 === void 0 ? void 0 : _props$error$extensio2.code) !== null && _props$error$extensio !== void 0 ? _props$error$extensio : props.error.code;
378
+ var messageCode = extensionErrorCode && hasErrorCodeAMatchingMessage(extensionErrorCode) ? apiErrorMessages[extensionErrorCode] : undefined;
378
379
  useEffect(function () {
379
380
  if (!messageCode) {
380
381
  var _context;
@@ -382,13 +383,13 @@ var FormattedErrorMessage = function FormattedErrorMessage(props) {
382
383
  // This error is not mapped / translated yet,
383
384
  // we log, report it to sentry and show the original error, unless `error.code` is `invalid_scope`
384
385
  // which an error code emitted for expired project(s)
385
- if (props.error.code !== 'invalid_scope' && !_includesInstanceProperty(_context = props.error.message).call(_context, 'has expired')) {
386
+ if (extensionErrorCode !== 'invalid_scope' && !_includesInstanceProperty(_context = props.error.message).call(_context, 'has expired')) {
386
387
  reportErrorToSentry(new Error('Unmapped error'), {
387
388
  extra: props.error
388
389
  });
389
390
  }
390
391
  }
391
- }, [messageCode, props.error]);
392
+ }, [extensionErrorCode, messageCode, props.error]);
392
393
 
393
394
  if (messageCode) {
394
395
  // The `error` object might contain extra fields for the specific `code`.
@@ -427,7 +428,9 @@ ApiErrorMessage.propTypes = process.env.NODE_ENV !== "production" ? {
427
428
  ApiErrorMessage.displayName = 'ApiErrorMessage';
428
429
 
429
430
  function getSpecialFormattedMessageByErrorCode(error, intl) {
430
- var _context3, _context4, _context5;
431
+ var _error$extensions$cod, _error$extensions, _context3, _context4, _context5;
432
+
433
+ var extensionErrorCode = (_error$extensions$cod = (_error$extensions = error.extensions) === null || _error$extensions === void 0 ? void 0 : _error$extensions.code) !== null && _error$extensions$cod !== void 0 ? _error$extensions$cod : error.code;
431
434
 
432
435
  if (error.errorByExtension) {
433
436
  var extensionMessage;
@@ -439,26 +442,26 @@ function getSpecialFormattedMessageByErrorCode(error, intl) {
439
442
  return extensionMessage || error.message;
440
443
  }
441
444
 
442
- if (!error.code || error.code === 'InvalidInput') return intl.formatMessage(apiErrorMessages.General); // TODO: this is a temporary solution until we have proper pages about 403
445
+ if (!extensionErrorCode || extensionErrorCode === 'InvalidInput') return intl.formatMessage(apiErrorMessages.General); // TODO: this is a temporary solution until we have proper pages about 403
443
446
 
444
- if (error.code === 'insufficient_scope') return intl.formatMessage(apiErrorMessages.Forbidden);
445
- if (error.code === 'DuplicateField' && error.field === 'slug') return intl.formatMessage(apiErrorMessages.DuplicateSlug, {
447
+ if (extensionErrorCode === 'insufficient_scope') return intl.formatMessage(apiErrorMessages.Forbidden);
448
+ if (extensionErrorCode === 'DuplicateField' && error.field === 'slug') return intl.formatMessage(apiErrorMessages.DuplicateSlug, {
446
449
  slugValue: error.duplicateValue
447
450
  }); // Try to match the error with a custom error message
448
451
 
449
452
  if (has(error, 'invalidValue') && has(error.invalidValue, 'overlappingPrices')) return intl.formatMessage(apiErrorMessages.OverlappingPrices);
450
453
 
451
- if (error.code === 'InvalidOperation' && _includesInstanceProperty(_context3 = error.message).call(_context3, 'validFrom') && _includesInstanceProperty(_context4 = error.message).call(_context4, 'validUntil')) {
454
+ if (extensionErrorCode === 'InvalidOperation' && _includesInstanceProperty(_context3 = error.message).call(_context3, 'validFrom') && _includesInstanceProperty(_context4 = error.message).call(_context4, 'validUntil')) {
452
455
  return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
453
456
  field: 'validFrom'
454
457
  });
455
458
  }
456
459
 
457
- if (error.code === 'InvalidOperation' && _includesInstanceProperty(_context5 = error.message).call(_context5, 'Duplicate tax rate for')) {
460
+ if (extensionErrorCode === 'InvalidOperation' && _includesInstanceProperty(_context5 = error.message).call(_context5, 'Duplicate tax rate for')) {
458
461
  return intl.formatMessage(apiErrorMessages.TaxCategoryDuplicateCountry);
459
462
  }
460
463
 
461
- if (error.code === 'InvalidOperation' && regexInvalidOperationRequiredAttribute.test(error.message)) {
464
+ if (extensionErrorCode === 'InvalidOperation' && regexInvalidOperationRequiredAttribute.test(error.message)) {
462
465
  var attrName = error.message.replace(regexInvalidOperationRequiredAttribute, '$1');
463
466
  return intl.formatMessage(apiErrorMessages.RequiredField, {
464
467
  field: attrName
@@ -468,17 +471,17 @@ function getSpecialFormattedMessageByErrorCode(error, intl) {
468
471
  // errors. We should investigate this further.
469
472
 
470
473
 
471
- if (error.code === 'InvalidField' && error.field === 'price' && has(error, 'invalidValue') && has(error.invalidValue, 'validFrom') && has(error.invalidValue, 'validUntil')) return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
474
+ if (extensionErrorCode === 'InvalidField' && error.field === 'price' && has(error, 'invalidValue') && has(error.invalidValue, 'validFrom') && has(error.invalidValue, 'validUntil')) return intl.formatMessage(apiErrorMessages.InvalidDateRange, {
472
475
  field: error.field
473
476
  });
474
477
 
475
- if (error.code === 'DuplicateAttributeValue' && error.attribute) {
478
+ if (extensionErrorCode === 'DuplicateAttributeValue' && error.attribute) {
476
479
  return intl.formatMessage(apiErrorMessages.DuplicateAttributeValue, {
477
480
  name: error.attribute.name
478
481
  });
479
482
  }
480
483
 
481
- if (error.code === 'MaxResourceLimitExceeded') {
484
+ if (extensionErrorCode === 'MaxResourceLimitExceeded') {
482
485
  return intl.formatMessage(apiErrorMessages.MaxResourceLimitExceeded);
483
486
  }
484
487
 
@@ -494,7 +497,10 @@ var ApiErrorNotification = function ApiErrorNotification(props) {
494
497
  onCloseClick: props.dismiss,
495
498
  children: jsx("ul", {
496
499
  children: _valuesInstanceProperty(props.notification) && _mapInstanceProperty(_context = _valuesInstanceProperty(props.notification).errors).call(_context, function (error, idx) {
497
- var shouldLogErrorToConsole = !error.code && process.env.NODE_ENV === 'development';
500
+ var _error$extensions$cod, _error$extensions;
501
+
502
+ var extensionErrorCode = (_error$extensions$cod = (_error$extensions = error.extensions) === null || _error$extensions === void 0 ? void 0 : _error$extensions.code) !== null && _error$extensions$cod !== void 0 ? _error$extensions$cod : error.code;
503
+ var shouldLogErrorToConsole = !extensionErrorCode && process.env.NODE_ENV === 'development';
498
504
 
499
505
  if (shouldLogErrorToConsole) {
500
506
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools-frontend/react-notifications",
3
- "version": "20.11.0",
3
+ "version": "20.12.0",
4
4
  "description": "React bindings for @commercetools-frontend/notifications",
5
5
  "bugs": "https://github.com/commercetools/merchant-center-application-kit/issues",
6
6
  "repository": {
@@ -20,10 +20,10 @@
20
20
  "dependencies": {
21
21
  "@babel/runtime": "7.15.4",
22
22
  "@babel/runtime-corejs3": "7.15.4",
23
- "@commercetools-frontend/actions-global": "20.11.0",
24
- "@commercetools-frontend/constants": "20.11.0",
23
+ "@commercetools-frontend/actions-global": "20.12.0",
24
+ "@commercetools-frontend/constants": "20.12.0",
25
25
  "@commercetools-frontend/notifications": "20.10.6",
26
- "@commercetools-frontend/sentry": "20.11.0",
26
+ "@commercetools-frontend/sentry": "20.12.0",
27
27
  "@commercetools-uikit/design-system": "^12.2.2",
28
28
  "@commercetools-uikit/icon-button": "^12.2.2",
29
29
  "@commercetools-uikit/icons": "^12.2.2",