UNPKG

@atlaskit/editor-plugin-media

Version:

Media plugin for @atlaskit/editor-core

857 lines (856 loc) 38.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.createMediaNodeUpdater = exports.MediaNodeUpdater = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _v = _interopRequireDefault(require("uuid/v4")); var _analytics = require("@atlaskit/editor-common/analytics"); var _mediaSingle = require("@atlaskit/editor-common/media-single"); var _mediaClient = require("@atlaskit/media-client"); var _mediaClientReact = require("@atlaskit/media-client-react"); var _mediaCommon = require("@atlaskit/media-common"); var _platformFeatureFlags = require("@atlaskit/platform-feature-flags"); var _helpers = require("../pm-plugins/commands/helpers"); var _pluginKey = require("../pm-plugins/plugin-key"); var _batchMediaNodeAttrs = require("../pm-plugins/utils/batchMediaNodeAttrs"); var _mediaCommon2 = require("../pm-plugins/utils/media-common"); var _excluded = ["authProvider"], _excluded2 = ["authProvider"]; // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var isMediaTypeSupported = function isMediaTypeSupported(type) { if (type) { return ['image', 'file'].includes(type); } return false; }; var MediaNodeUpdater = exports.MediaNodeUpdater = /*#__PURE__*/function () { function MediaNodeUpdater(props) { var _this = this; (0, _classCallCheck2.default)(this, MediaNodeUpdater); // Updates the node with contextId if it doesn't have one already (0, _defineProperty2.default)(this, "updateContextId", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var attrs, id, objectId; return _regenerator.default.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: attrs = _this.getAttrs(); if (!(!attrs || attrs && !isMediaTypeSupported(attrs.type))) { _context.next = 3; break; } return _context.abrupt("return"); case 3: id = attrs.id; _context.next = 6; return _this.getObjectId(); case 6: objectId = _context.sent; (0, _batchMediaNodeAttrs.batchMediaNodeAttrsUpdate)(_this.props.view, { id: id, nextAttributes: { __contextId: objectId } }); case 8: case "end": return _context.stop(); } }, _callee); }))); (0, _defineProperty2.default)(this, "updateNodeContextId", /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(getPos) { var attrs, objectId; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: attrs = _this.getAttrs(); if (!(!attrs || attrs && !isMediaTypeSupported(attrs.type))) { _context2.next = 3; break; } return _context2.abrupt("return"); case 3: _context2.next = 5; return _this.getObjectId(); case 5: objectId = _context2.sent; (0, _helpers.updateCurrentMediaNodeAttrs)({ __contextId: objectId }, { node: _this.props.node, getPos: getPos })(_this.props.view.state, _this.props.view.dispatch); case 7: case "end": return _context2.stop(); } }, _callee2); })); return function (_x) { return _ref2.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "hasFileAttributesDefined", function (attrs) { return attrs && attrs.type === 'file' && attrs.__fileName && attrs.__fileMimeType && attrs.__fileSize && attrs.__contextId; }); (0, _defineProperty2.default)(this, "getNewFileAttrsForNode", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { var attrs, mediaProvider, mediaClientConfig, mediaClient, fileState, id, collectionName, contextId, _fileState, name, mimeType, size, newAttrs; return _regenerator.default.wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: attrs = _this.getAttrs(); _context3.next = 3; return _this.props.mediaProvider; case 3: mediaProvider = _context3.sent; if (!(!mediaProvider || !mediaProvider.uploadParams || !attrs || !isMediaTypeSupported(attrs.type) || _this.hasFileAttributesDefined(attrs))) { _context3.next = 6; break; } return _context3.abrupt("return"); case 6: mediaClientConfig = mediaProvider.viewMediaClientConfig; mediaClient = (0, _mediaClientReact.getMediaClient)(mediaClientConfig); id = attrs.id, collectionName = attrs.collection; _context3.prev = 9; _context3.next = 12; return mediaClient.file.getCurrentState(id, { collectionName: collectionName }); case 12: fileState = _context3.sent; if (!(fileState.status === 'error')) { _context3.next = 15; break; } return _context3.abrupt("return"); case 15: _context3.next = 20; break; case 17: _context3.prev = 17; _context3.t0 = _context3["catch"](9); return _context3.abrupt("return"); case 20: _context3.t1 = _this.getNodeContextId(); if (_context3.t1) { _context3.next = 25; break; } _context3.next = 24; return _this.getObjectId(); case 24: _context3.t1 = _context3.sent; case 25: contextId = _context3.t1; _fileState = fileState, name = _fileState.name, mimeType = _fileState.mimeType, size = _fileState.size; newAttrs = { __fileName: name, __fileMimeType: mimeType, __fileSize: size, __contextId: contextId }; if (hasPrivateAttrsChanged(attrs, newAttrs)) { _context3.next = 30; break; } return _context3.abrupt("return"); case 30: return _context3.abrupt("return", newAttrs); case 31: case "end": return _context3.stop(); } }, _callee3, null, [[9, 17]]); }))); (0, _defineProperty2.default)(this, "updateMediaSingleFileAttrs", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() { var newAttrs, _ref5, id; return _regenerator.default.wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return _this.getNewFileAttrsForNode(); case 2: newAttrs = _context4.sent; _ref5 = _this.getAttrs(), id = _ref5.id; if (id && newAttrs) { (0, _batchMediaNodeAttrs.batchMediaNodeAttrsUpdate)(_this.props.view, { id: id, nextAttributes: newAttrs }); } case 5: case "end": return _context4.stop(); } }, _callee4); }))); (0, _defineProperty2.default)(this, "updateNodeAttrs", /*#__PURE__*/function () { var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(getPos) { var newAttrs; return _regenerator.default.wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return _this.getNewFileAttrsForNode(); case 2: newAttrs = _context5.sent; if (newAttrs) { (0, _helpers.updateCurrentMediaNodeAttrs)(newAttrs, { node: _this.props.node, getPos: getPos })(_this.props.view.state, _this.props.view.dispatch); } case 4: case "end": return _context5.stop(); } }, _callee5); })); return function (_x2) { return _ref6.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "getAttrs", function () { var attrs = _this.props.node.attrs; if (attrs) { return attrs; } return undefined; }); (0, _defineProperty2.default)(this, "getObjectId", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() { var contextIdentifierProvider; return _regenerator.default.wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: _context6.next = 2; return _this.props.contextIdentifierProvider; case 2: contextIdentifierProvider = _context6.sent; return _context6.abrupt("return", (contextIdentifierProvider === null || contextIdentifierProvider === void 0 ? void 0 : contextIdentifierProvider.objectId) || null); case 4: case "end": return _context6.stop(); } }, _callee6); }))); (0, _defineProperty2.default)(this, "uploadExternalMedia", /*#__PURE__*/function () { var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(getPos) { var _this$props, node, mediaOptions, mediaProvider, uploadMediaClientConfig, mediaClient, collection, uploader, uploadableFileUpfrontIds, dimensions, pos; return _regenerator.default.wrap(function _callee7$(_context7) { while (1) switch (_context7.prev = _context7.next) { case 0: _this$props = _this.props, node = _this$props.node, mediaOptions = _this$props.mediaOptions; if (!(mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.isExternalMediaUploadDisabled)) { _context7.next = 3; break; } return _context7.abrupt("return"); case 3: _context7.next = 5; return _this.props.mediaProvider; case 5: mediaProvider = _context7.sent; if (!(node && mediaProvider)) { _context7.next = 26; break; } uploadMediaClientConfig = mediaProvider.uploadMediaClientConfig; if (!(!uploadMediaClientConfig || !node.attrs.url)) { _context7.next = 10; break; } return _context7.abrupt("return"); case 10: mediaClient = (0, _mediaClientReact.getMediaClient)(uploadMediaClientConfig); collection = mediaProvider.uploadParams && mediaProvider.uploadParams.collection; _context7.prev = 12; _context7.next = 15; return mediaClient.file.uploadExternal(node.attrs.url, collection); case 15: uploader = _context7.sent; uploadableFileUpfrontIds = uploader.uploadableFileUpfrontIds, dimensions = uploader.dimensions; pos = getPos(); if (!(typeof pos !== 'number')) { _context7.next = 20; break; } return _context7.abrupt("return"); case 20: (0, _helpers.replaceExternalMedia)(pos + 1, { id: uploadableFileUpfrontIds.id, collection: collection, height: dimensions.height, width: dimensions.width, occurrenceKey: uploadableFileUpfrontIds.occurrenceKey })(_this.props.view.state, _this.props.view.dispatch); _context7.next = 26; break; case 23: _context7.prev = 23; _context7.t0 = _context7["catch"](12); //keep it as external media if (_this.props.dispatchAnalyticsEvent) { _this.props.dispatchAnalyticsEvent({ action: _analytics.ACTION.UPLOAD_EXTERNAL_FAIL, actionSubject: _analytics.ACTION_SUBJECT.EDITOR, eventType: _analytics.EVENT_TYPE.OPERATIONAL }); } case 26: case "end": return _context7.stop(); } }, _callee7, null, [[12, 23]]); })); return function (_x3) { return _ref8.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "getNodeContextId", function () { var attrs = _this.getAttrs(); if (!attrs || attrs && !isMediaTypeSupported(attrs.type)) { return null; } return attrs.__contextId || null; }); (0, _defineProperty2.default)(this, "updateDimensions", function (dimensions) { (0, _batchMediaNodeAttrs.batchMediaNodeAttrsUpdate)(_this.props.view, { id: dimensions.id, nextAttributes: { height: dimensions.height, width: dimensions.width } }); }); (0, _defineProperty2.default)(this, "shouldNodeBeDeepCopied", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() { var _ref0, _this$props$mediaOpti, _this$props$mediaOpti2, _this$mediaPluginStat; var scope, attrs, id, isIdentifierOutsideEditorScope; return _regenerator.default.wrap(function _callee8$(_context8) { while (1) switch (_context8.prev = _context8.next) { case 0: scope = (_ref0 = (_this$props$mediaOpti = (_this$props$mediaOpti2 = _this.props.mediaOptions) === null || _this$props$mediaOpti2 === void 0 ? void 0 : _this$props$mediaOpti2.mediaShallowCopyScope) !== null && _this$props$mediaOpti !== void 0 ? _this$props$mediaOpti : (_this$mediaPluginStat = _this.mediaPluginState) === null || _this$mediaPluginStat === void 0 || (_this$mediaPluginStat = _this$mediaPluginStat.mediaOptions) === null || _this$mediaPluginStat === void 0 ? void 0 : _this$mediaPluginStat.mediaShallowCopyScope) !== null && _ref0 !== void 0 ? _ref0 : 'context'; if (!(scope === 'context')) { _context8.next = 7; break; } _context8.next = 4; return _this.hasDifferentContextId(); case 4: return _context8.abrupt("return", _context8.sent); case 7: attrs = _this.getAttrs(); if (!(!attrs || !_this.mediaPluginState)) { _context8.next = 10; break; } return _context8.abrupt("return", false); case 10: id = (0, _mediaCommon2.getIdentifier)(attrs); isIdentifierOutsideEditorScope = !_this.mediaPluginState.isIdentifierInEditorScope(id); return _context8.abrupt("return", isIdentifierOutsideEditorScope); case 13: case "end": return _context8.stop(); } }, _callee8); }))); (0, _defineProperty2.default)(this, "hasDifferentContextId", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() { var nodeContextId, currentContextId; return _regenerator.default.wrap(function _callee9$(_context9) { while (1) switch (_context9.prev = _context9.next) { case 0: nodeContextId = _this.getNodeContextId(); _context9.next = 3; return _this.getObjectId(); case 3: currentContextId = _context9.sent; if (!(nodeContextId && currentContextId && nodeContextId !== currentContextId)) { _context9.next = 6; break; } return _context9.abrupt("return", true); case 6: return _context9.abrupt("return", false); case 7: case "end": return _context9.stop(); } }, _callee9); }))); (0, _defineProperty2.default)(this, "isNodeFromDifferentCollection", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee0() { var mediaProvider, currentCollectionName, attrs, nodeCollection, __contextId, contextId; return _regenerator.default.wrap(function _callee0$(_context0) { while (1) switch (_context0.prev = _context0.next) { case 0: _context0.next = 2; return _this.props.mediaProvider; case 2: mediaProvider = _context0.sent; if (!(!mediaProvider || !mediaProvider.uploadParams)) { _context0.next = 5; break; } return _context0.abrupt("return", false); case 5: currentCollectionName = mediaProvider.uploadParams.collection; attrs = _this.getAttrs(); if (!(!attrs || attrs && !isMediaTypeSupported(attrs.type))) { _context0.next = 9; break; } return _context0.abrupt("return", false); case 9: nodeCollection = attrs.collection, __contextId = attrs.__contextId; _context0.t0 = __contextId; if (_context0.t0) { _context0.next = 15; break; } _context0.next = 14; return _this.getObjectId(); case 14: _context0.t0 = _context0.sent; case 15: contextId = _context0.t0; if (!(contextId && currentCollectionName !== nodeCollection)) { _context0.next = 18; break; } return _context0.abrupt("return", true); case 18: return _context0.abrupt("return", false); case 19: case "end": return _context0.stop(); } }, _callee0); }))); (0, _defineProperty2.default)(this, "handleCopyFileSwitcher", /*#__PURE__*/function () { var _ref11 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee1(attrs) { var mediaClient, source, destination, traceContext, _yield$mediaClient$fi, id, _sourceAP, copyV2Source, _destAP, copyV2Destination, _yield$mediaClient$fi2, _id; return _regenerator.default.wrap(function _callee1$(_context1) { while (1) switch (_context1.prev = _context1.next) { case 0: mediaClient = attrs.mediaClient, source = attrs.source, destination = attrs.destination, traceContext = attrs.traceContext; _context1.prev = 1; _context1.next = 4; return mediaClient.file.copyFile(source, destination, undefined, traceContext); case 4: _yield$mediaClient$fi = _context1.sent; id = _yield$mediaClient$fi.id; return _context1.abrupt("return", id); case 9: _context1.prev = 9; _context1.t0 = _context1["catch"](1); if (!(0, _platformFeatureFlags.fg)('platform_media_cross_client_copy')) { _context1.next = 21; break; } // calling /v2/file/copy by removing the auth tokens to make cross product copy and pastes _sourceAP = source.authProvider, copyV2Source = (0, _objectWithoutProperties2.default)(source, _excluded); _destAP = destination.authProvider, copyV2Destination = (0, _objectWithoutProperties2.default)(destination, _excluded2); _context1.next = 16; return mediaClient.file.copyFile(copyV2Source, copyV2Destination, undefined, traceContext); case 16: _yield$mediaClient$fi2 = _context1.sent; _id = _yield$mediaClient$fi2.id; return _context1.abrupt("return", _id); case 21: throw _context1.t0; case 22: case "end": return _context1.stop(); } }, _callee1, null, [[1, 9]]); })); return function (_x4) { return _ref11.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "copyNodeFromBlobUrl", /*#__PURE__*/function () { var _ref12 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(getPos) { var attrs, url, mediaAttrs, mediaProvider, currentCollectionName, contextId, clientId, id, collection, height, width, mimeType, name, size, uploadMediaClientConfig, mediaClient, getAuthFromContext, mediaFileId, pos; return _regenerator.default.wrap(function _callee10$(_context10) { while (1) switch (_context10.prev = _context10.next) { case 0: attrs = _this.getAttrs(); if (!(!attrs || attrs.type !== 'external')) { _context10.next = 3; break; } return _context10.abrupt("return"); case 3: url = attrs.url; mediaAttrs = (0, _mediaClient.getAttrsFromUrl)(url); if (mediaAttrs) { _context10.next = 7; break; } return _context10.abrupt("return"); case 7: _context10.next = 9; return _this.props.mediaProvider; case 9: mediaProvider = _context10.sent; if (!(!mediaProvider || !mediaProvider.uploadParams)) { _context10.next = 12; break; } return _context10.abrupt("return"); case 12: currentCollectionName = mediaProvider.uploadParams.collection; contextId = mediaAttrs.contextId, clientId = mediaAttrs.clientId, id = mediaAttrs.id, collection = mediaAttrs.collection, height = mediaAttrs.height, width = mediaAttrs.width, mimeType = mediaAttrs.mimeType, name = mediaAttrs.name, size = mediaAttrs.size; uploadMediaClientConfig = mediaProvider.uploadMediaClientConfig; if (!(!uploadMediaClientConfig || !uploadMediaClientConfig.getAuthFromContext)) { _context10.next = 17; break; } return _context10.abrupt("return"); case 17: mediaClient = (0, _mediaClientReact.getMediaClient)(uploadMediaClientConfig); getAuthFromContext = uploadMediaClientConfig.getAuthFromContext; _context10.next = 21; return _this.handleCopyFileSwitcher({ mediaClient: mediaClient, source: { id: id, collection: collection, authProvider: function authProvider() { return getAuthFromContext(contextId); }, clientId: (0, _platformFeatureFlags.fg)('platform_media_cross_client_copy_with_auth') ? clientId : undefined }, destination: { collection: currentCollectionName, authProvider: uploadMediaClientConfig.authProvider, // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead occurrenceKey: (0, _v.default)() } }); case 21: mediaFileId = _context10.sent; pos = getPos(); if (!(typeof pos !== 'number')) { _context10.next = 25; break; } return _context10.abrupt("return"); case 25: (0, _helpers.replaceExternalMedia)(pos + 1, { id: mediaFileId, collection: currentCollectionName, height: height, width: width, __fileName: name, __fileMimeType: mimeType, __fileSize: size })(_this.props.view.state, _this.props.view.dispatch); case 26: case "end": return _context10.stop(); } }, _callee10); })); return function (_x5) { return _ref12.apply(this, arguments); }; }()); // Copies the pasted node into the current collection using a getPos handler (0, _defineProperty2.default)(this, "copyNodeFromPos", /*#__PURE__*/function () { var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(getPos, traceContext) { var attrs, copiedAttrs; return _regenerator.default.wrap(function _callee11$(_context11) { while (1) switch (_context11.prev = _context11.next) { case 0: attrs = _this.getAttrs(); if (!(!attrs || attrs && !isMediaTypeSupported(attrs.type))) { _context11.next = 3; break; } return _context11.abrupt("return"); case 3: _context11.next = 5; return _this.copyFile(attrs.id, attrs.collection, traceContext); case 5: copiedAttrs = _context11.sent; if (copiedAttrs) { _context11.next = 8; break; } return _context11.abrupt("return"); case 8: (0, _helpers.updateCurrentMediaNodeAttrs)(copiedAttrs, { node: _this.props.node, getPos: getPos })(_this.props.view.state, _this.props.view.dispatch); case 9: case "end": return _context11.stop(); } }, _callee11); })); return function (_x6, _x7) { return _ref13.apply(this, arguments); }; }()); // Copies the pasted node into the current collection (0, _defineProperty2.default)(this, "copyNode", /*#__PURE__*/function () { var _ref14 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(traceContext) { var attrs, view, copiedAttrs; return _regenerator.default.wrap(function _callee12$(_context12) { while (1) switch (_context12.prev = _context12.next) { case 0: attrs = _this.getAttrs(); view = _this.props.view; if (!(!attrs || attrs && !isMediaTypeSupported(attrs.type))) { _context12.next = 4; break; } return _context12.abrupt("return"); case 4: _context12.next = 6; return _this.copyFile(attrs.id, attrs.collection, traceContext); case 6: copiedAttrs = _context12.sent; if (copiedAttrs) { _context12.next = 9; break; } return _context12.abrupt("return"); case 9: (0, _helpers.updateMediaNodeAttrs)(attrs.id, copiedAttrs)(view.state, view.dispatch); case 10: case "end": return _context12.stop(); } }, _callee12); })); return function (_x8) { return _ref14.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "copyFile", /*#__PURE__*/function () { var _ref15 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(id, collection, traceContext) { var mediaProvider, nodeContextId, uploadMediaClientConfig, mediaClient, clientId, currentCollectionName, objectId, getAuthFromContext, mediaFileId; return _regenerator.default.wrap(function _callee13$(_context13) { while (1) switch (_context13.prev = _context13.next) { case 0: _context13.next = 2; return _this.props.mediaProvider; case 2: mediaProvider = _context13.sent; if (mediaProvider !== null && mediaProvider !== void 0 && mediaProvider.uploadParams) { _context13.next = 5; break; } return _context13.abrupt("return"); case 5: nodeContextId = _this.getNodeContextId(); uploadMediaClientConfig = mediaProvider.uploadMediaClientConfig; if (!(!(uploadMediaClientConfig !== null && uploadMediaClientConfig !== void 0 && uploadMediaClientConfig.getAuthFromContext) || !nodeContextId)) { _context13.next = 9; break; } return _context13.abrupt("return"); case 9: mediaClient = (0, _mediaClientReact.getMediaClient)(uploadMediaClientConfig); clientId = (0, _platformFeatureFlags.fg)('platform_media_cross_client_copy_with_auth') ? (0, _mediaCommon.getClientIdForFile)(id) : undefined; currentCollectionName = mediaProvider.uploadParams.collection; _context13.next = 14; return _this.getObjectId(); case 14: objectId = _context13.sent; getAuthFromContext = uploadMediaClientConfig.getAuthFromContext; _context13.next = 18; return _this.handleCopyFileSwitcher({ mediaClient: mediaClient, source: { id: id, collection: collection, authProvider: function authProvider() { return getAuthFromContext(nodeContextId); }, clientId: clientId }, destination: { collection: currentCollectionName, authProvider: uploadMediaClientConfig.authProvider, // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead occurrenceKey: (0, _v.default)() }, traceContext: traceContext }); case 18: mediaFileId = _context13.sent; return _context13.abrupt("return", { id: mediaFileId, collection: currentCollectionName, __contextId: objectId }); case 20: case "end": return _context13.stop(); } }, _callee13); })); return function (_x9, _x0, _x1) { return _ref15.apply(this, arguments); }; }()); this.props = props; this.mediaPluginState = _pluginKey.stateKey.getState(props.view.state); } return (0, _createClass2.default)(MediaNodeUpdater, [{ key: "setProps", value: function setProps(newComponentProps) { this.props = _objectSpread(_objectSpread({}, this.props), newComponentProps); } }, { key: "isMediaBlobUrl", value: function isMediaBlobUrl() { var attrs = this.getAttrs(); return !!(attrs && attrs.type === 'external' && (0, _mediaClient.isMediaBlobUrl)(attrs.url)); } }, { key: "getRemoteDimensions", value: function () { var _getRemoteDimensions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() { var mediaProvider, mediaOptions, attrs, height, width, id, collection, viewMediaClientConfig, mediaClient, currentState, imageMetadata; return _regenerator.default.wrap(function _callee14$(_context14) { while (1) switch (_context14.prev = _context14.next) { case 0: _context14.next = 2; return this.props.mediaProvider; case 2: mediaProvider = _context14.sent; mediaOptions = this.props.mediaOptions; attrs = this.getAttrs(); if (!(!mediaProvider || !attrs)) { _context14.next = 7; break; } return _context14.abrupt("return", false); case 7: height = attrs.height, width = attrs.width; if (!(attrs.type === 'external' || !attrs.id)) { _context14.next = 10; break; } return _context14.abrupt("return", false); case 10: id = attrs.id, collection = attrs.collection; if (!(height && width)) { _context14.next = 13; break; } return _context14.abrupt("return", false); case 13: if (!(mediaOptions && !mediaOptions.allowRemoteDimensionsFetch)) { _context14.next = 15; break; } return _context14.abrupt("return", { id: id, height: _mediaSingle.DEFAULT_IMAGE_HEIGHT, width: _mediaSingle.DEFAULT_IMAGE_WIDTH }); case 15: viewMediaClientConfig = mediaProvider.viewMediaClientConfig; mediaClient = (0, _mediaClientReact.getMediaClient)(viewMediaClientConfig); _context14.next = 19; return mediaClient.file.getCurrentState(id, { collectionName: collection }); case 19: currentState = _context14.sent; if ((0, _mediaClient.isImageRepresentationReady)(currentState)) { _context14.next = 22; break; } return _context14.abrupt("return", false); case 22: _context14.next = 24; return mediaClient.getImageMetadata(id, { collection: collection }); case 24: imageMetadata = _context14.sent; if (!(!imageMetadata || !imageMetadata.original)) { _context14.next = 27; break; } return _context14.abrupt("return", false); case 27: return _context14.abrupt("return", { id: id, height: imageMetadata.original.height || _mediaSingle.DEFAULT_IMAGE_HEIGHT, width: imageMetadata.original.width || _mediaSingle.DEFAULT_IMAGE_WIDTH }); case 28: case "end": return _context14.stop(); } }, _callee14, this); })); function getRemoteDimensions() { return _getRemoteDimensions.apply(this, arguments); } return getRemoteDimensions; }() }, { key: "handleExternalMedia", value: function () { var _handleExternalMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(getPos) { return _regenerator.default.wrap(function _callee15$(_context15) { while (1) switch (_context15.prev = _context15.next) { case 0: if (!this.isMediaBlobUrl()) { _context15.next = 12; break; } _context15.prev = 1; _context15.next = 4; return this.copyNodeFromBlobUrl(getPos); case 4: _context15.next = 10; break; case 6: _context15.prev = 6; _context15.t0 = _context15["catch"](1); _context15.next = 10; return this.uploadExternalMedia(getPos); case 10: _context15.next = 14; break; case 12: _context15.next = 14; return this.uploadExternalMedia(getPos); case 14: case "end": return _context15.stop(); } }, _callee15, this, [[1, 6]]); })); function handleExternalMedia(_x10) { return _handleExternalMedia.apply(this, arguments); } return handleExternalMedia; }() }]); }(); var hasPrivateAttrsChanged = function hasPrivateAttrsChanged(currentAttrs, newAttrs) { return currentAttrs.__fileName !== newAttrs.__fileName || currentAttrs.__fileMimeType !== newAttrs.__fileMimeType || currentAttrs.__fileSize !== newAttrs.__fileSize || currentAttrs.__contextId !== newAttrs.__contextId; }; var createMediaNodeUpdater = exports.createMediaNodeUpdater = function createMediaNodeUpdater(props) { var updaterProps = _objectSpread({}, props); return new MediaNodeUpdater(updaterProps); };