@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
857 lines (856 loc) • 38.3 kB
JavaScript
"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);
};