UNPKG

matrix-react-sdk

Version:
117 lines (113 loc) 16.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _files = require("../../../../res/img/feather-customised/files.svg"); var _languageHandler = require("../../../languageHandler"); var _blobs = require("../../../utils/blobs"); var _BaseDialog = _interopRequireDefault(require("./BaseDialog")); var _DialogButtons = _interopRequireDefault(require("../elements/DialogButtons")); var _FileUtils = require("../../../utils/FileUtils"); /* Copyright 2024 New Vector Ltd. Copyright 2019-2021 The Matrix.org Foundation C.I.C. Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ class UploadConfirmDialog extends _react.default.Component { constructor(props) { super(props); // Create a fresh `Blob` for previewing (even though `File` already is // one) so we can adjust the MIME type if needed. (0, _defineProperty2.default)(this, "objectUrl", void 0); (0, _defineProperty2.default)(this, "mimeType", void 0); (0, _defineProperty2.default)(this, "onCancelClick", () => { this.props.onFinished(false); }); (0, _defineProperty2.default)(this, "onUploadClick", () => { this.props.onFinished(true); }); (0, _defineProperty2.default)(this, "onUploadAllClick", () => { this.props.onFinished(true, true); }); this.mimeType = (0, _blobs.getBlobSafeMimeType)(props.file.type); const blob = new Blob([props.file], { type: this.mimeType }); this.objectUrl = URL.createObjectURL(blob); } componentWillUnmount() { if (this.objectUrl) URL.revokeObjectURL(this.objectUrl); } render() { let title; if (this.props.totalFiles > 1 && this.props.currentIndex !== undefined) { title = (0, _languageHandler._t)("upload_file|title_progress", { current: this.props.currentIndex + 1, total: this.props.totalFiles }); } else { title = (0, _languageHandler._t)("upload_file|title"); } const fileId = `mx-uploadconfirmdialog-${this.props.file.name}`; let preview; let placeholder; if (this.mimeType.startsWith("image/")) { preview = /*#__PURE__*/_react.default.createElement("img", { className: "mx_UploadConfirmDialog_imagePreview", src: this.objectUrl, "aria-labelledby": fileId }); } else if (this.mimeType.startsWith("video/")) { preview = /*#__PURE__*/_react.default.createElement("video", { className: "mx_UploadConfirmDialog_imagePreview", src: this.objectUrl, playsInline: true, controls: false }); } else { placeholder = /*#__PURE__*/_react.default.createElement(_files.Icon, { className: "mx_UploadConfirmDialog_fileIcon", height: 18, width: 18 }); } let uploadAllButton; if (this.props.currentIndex + 1 < this.props.totalFiles) { uploadAllButton = /*#__PURE__*/_react.default.createElement("button", { onClick: this.onUploadAllClick }, (0, _languageHandler._t)("upload_file|upload_all_button")); } return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, { className: "mx_UploadConfirmDialog", fixedWidth: false, onFinished: this.onCancelClick, title: title, contentId: "mx_Dialog_content" }, /*#__PURE__*/_react.default.createElement("div", { id: "mx_Dialog_content" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_UploadConfirmDialog_previewOuter" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_UploadConfirmDialog_previewInner" }, preview && /*#__PURE__*/_react.default.createElement("div", null, preview), /*#__PURE__*/_react.default.createElement("div", { id: fileId }, placeholder, this.props.file.name, " (", (0, _FileUtils.fileSize)(this.props.file.size), ")")))), /*#__PURE__*/_react.default.createElement(_DialogButtons.default, { primaryButton: (0, _languageHandler._t)("action|upload"), hasCancel: false, onPrimaryButtonClick: this.onUploadClick, focus: true }, uploadAllButton)); } } exports.default = UploadConfirmDialog; (0, _defineProperty2.default)(UploadConfirmDialog, "defaultProps", { totalFiles: 1, currentIndex: 0 }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9maWxlcyIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfYmxvYnMiLCJfQmFzZURpYWxvZyIsIl9EaWFsb2dCdXR0b25zIiwiX0ZpbGVVdGlscyIsIlVwbG9hZENvbmZpcm1EaWFsb2ciLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsIm9uRmluaXNoZWQiLCJtaW1lVHlwZSIsImdldEJsb2JTYWZlTWltZVR5cGUiLCJmaWxlIiwidHlwZSIsImJsb2IiLCJCbG9iIiwib2JqZWN0VXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZXZva2VPYmplY3RVUkwiLCJyZW5kZXIiLCJ0aXRsZSIsInRvdGFsRmlsZXMiLCJjdXJyZW50SW5kZXgiLCJ1bmRlZmluZWQiLCJfdCIsImN1cnJlbnQiLCJ0b3RhbCIsImZpbGVJZCIsIm5hbWUiLCJwcmV2aWV3IiwicGxhY2Vob2xkZXIiLCJzdGFydHNXaXRoIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInNyYyIsInBsYXlzSW5saW5lIiwiY29udHJvbHMiLCJJY29uIiwiaGVpZ2h0Iiwid2lkdGgiLCJ1cGxvYWRBbGxCdXR0b24iLCJvbkNsaWNrIiwib25VcGxvYWRBbGxDbGljayIsImZpeGVkV2lkdGgiLCJvbkNhbmNlbENsaWNrIiwiY29udGVudElkIiwiaWQiLCJmaWxlU2l6ZSIsInNpemUiLCJwcmltYXJ5QnV0dG9uIiwiaGFzQ2FuY2VsIiwib25QcmltYXJ5QnV0dG9uQ2xpY2siLCJvblVwbG9hZENsaWNrIiwiZm9jdXMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvZGlhbG9ncy9VcGxvYWRDb25maXJtRGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOS0yMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5Db3B5cmlnaHQgMjAxOSBNaWNoYWVsIFRlbGF0eW5za2kgPDd0M2NoZ3V5QGdtYWlsLmNvbT5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBJY29uIGFzIEZpbGVJY29uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3Jlcy9pbWcvZmVhdGhlci1jdXN0b21pc2VkL2ZpbGVzLnN2Z1wiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgeyBnZXRCbG9iU2FmZU1pbWVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2Jsb2JzXCI7XG5pbXBvcnQgQmFzZURpYWxvZyBmcm9tIFwiLi9CYXNlRGlhbG9nXCI7XG5pbXBvcnQgRGlhbG9nQnV0dG9ucyBmcm9tIFwiLi4vZWxlbWVudHMvRGlhbG9nQnV0dG9uc1wiO1xuaW1wb3J0IHsgZmlsZVNpemUgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvRmlsZVV0aWxzXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIGZpbGU6IEZpbGU7XG4gICAgY3VycmVudEluZGV4OiBudW1iZXI7XG4gICAgdG90YWxGaWxlczogbnVtYmVyO1xuICAgIG9uRmluaXNoZWQ6ICh1cGxvYWRDb25maXJtZWQ6IGJvb2xlYW4sIHVwbG9hZEFsbD86IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwbG9hZENvbmZpcm1EaWFsb2cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvYmplY3RVcmw6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbWVUeXBlOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wczogUGFydGlhbDxJUHJvcHM+ID0ge1xuICAgICAgICB0b3RhbEZpbGVzOiAxLFxuICAgICAgICBjdXJyZW50SW5kZXg6IDAsXG4gICAgfTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9wczogSVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICAvLyBDcmVhdGUgYSBmcmVzaCBgQmxvYmAgZm9yIHByZXZpZXdpbmcgKGV2ZW4gdGhvdWdoIGBGaWxlYCBhbHJlYWR5IGlzXG4gICAgICAgIC8vIG9uZSkgc28gd2UgY2FuIGFkanVzdCB0aGUgTUlNRSB0eXBlIGlmIG5lZWRlZC5cbiAgICAgICAgdGhpcy5taW1lVHlwZSA9IGdldEJsb2JTYWZlTWltZVR5cGUocHJvcHMuZmlsZS50eXBlKTtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtwcm9wcy5maWxlXSwgeyB0eXBlOiB0aGlzLm1pbWVUeXBlIH0pO1xuICAgICAgICB0aGlzLm9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vYmplY3RVcmwpIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5vYmplY3RVcmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25DYW5jZWxDbGljayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkZpbmlzaGVkKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvblVwbG9hZENsaWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnByb3BzLm9uRmluaXNoZWQodHJ1ZSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25VcGxvYWRBbGxDbGljayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkZpbmlzaGVkKHRydWUsIHRydWUpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGxldCB0aXRsZTogc3RyaW5nO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy50b3RhbEZpbGVzID4gMSAmJiB0aGlzLnByb3BzLmN1cnJlbnRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aXRsZSA9IF90KFwidXBsb2FkX2ZpbGV8dGl0bGVfcHJvZ3Jlc3NcIiwge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHRoaXMucHJvcHMuY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgICAgICB0b3RhbDogdGhpcy5wcm9wcy50b3RhbEZpbGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aXRsZSA9IF90KFwidXBsb2FkX2ZpbGV8dGl0bGVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlSWQgPSBgbXgtdXBsb2FkY29uZmlybWRpYWxvZy0ke3RoaXMucHJvcHMuZmlsZS5uYW1lfWA7XG4gICAgICAgIGxldCBwcmV2aWV3OiBKU1guRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHBsYWNlaG9sZGVyOiBKU1guRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMubWltZVR5cGUuc3RhcnRzV2l0aChcImltYWdlL1wiKSkge1xuICAgICAgICAgICAgcHJldmlldyA9IChcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cIm14X1VwbG9hZENvbmZpcm1EaWFsb2dfaW1hZ2VQcmV2aWV3XCIgc3JjPXt0aGlzLm9iamVjdFVybH0gYXJpYS1sYWJlbGxlZGJ5PXtmaWxlSWR9IC8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWltZVR5cGUuc3RhcnRzV2l0aChcInZpZGVvL1wiKSkge1xuICAgICAgICAgICAgcHJldmlldyA9IChcbiAgICAgICAgICAgICAgICA8dmlkZW9cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfVXBsb2FkQ29uZmlybURpYWxvZ19pbWFnZVByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICBzcmM9e3RoaXMub2JqZWN0VXJsfVxuICAgICAgICAgICAgICAgICAgICBwbGF5c0lubGluZVxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlciA9IDxGaWxlSWNvbiBjbGFzc05hbWU9XCJteF9VcGxvYWRDb25maXJtRGlhbG9nX2ZpbGVJY29uXCIgaGVpZ2h0PXsxOH0gd2lkdGg9ezE4fSAvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB1cGxvYWRBbGxCdXR0b246IEpTWC5FbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5jdXJyZW50SW5kZXggKyAxIDwgdGhpcy5wcm9wcy50b3RhbEZpbGVzKSB7XG4gICAgICAgICAgICB1cGxvYWRBbGxCdXR0b24gPSA8YnV0dG9uIG9uQ2xpY2s9e3RoaXMub25VcGxvYWRBbGxDbGlja30+e190KFwidXBsb2FkX2ZpbGV8dXBsb2FkX2FsbF9idXR0b25cIil9PC9idXR0b24+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCYXNlRGlhbG9nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfVXBsb2FkQ29uZmlybURpYWxvZ1wiXG4gICAgICAgICAgICAgICAgZml4ZWRXaWR0aD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25GaW5pc2hlZD17dGhpcy5vbkNhbmNlbENsaWNrfVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgICAgICBjb250ZW50SWQ9XCJteF9EaWFsb2dfY29udGVudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIm14X0RpYWxvZ19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfVXBsb2FkQ29uZmlybURpYWxvZ19wcmV2aWV3T3V0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfVXBsb2FkQ29uZmlybURpYWxvZ19wcmV2aWV3SW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJldmlldyAmJiA8ZGl2PntwcmV2aWV3fTwvZGl2Pn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPXtmaWxlSWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmZpbGUubmFtZX0gKHtmaWxlU2l6ZSh0aGlzLnByb3BzLmZpbGUuc2l6ZSl9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPERpYWxvZ0J1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUJ1dHRvbj17X3QoXCJhY3Rpb258dXBsb2FkXCIpfVxuICAgICAgICAgICAgICAgICAgICBoYXNDYW5jZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBvblByaW1hcnlCdXR0b25DbGljaz17dGhpcy5vblVwbG9hZENsaWNrfVxuICAgICAgICAgICAgICAgICAgICBmb2N1cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt1cGxvYWRBbGxCdXR0b259XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dCdXR0b25zPlxuICAgICAgICAgICAgPC9CYXNlRGlhbG9nPlxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFTQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBa0JlLE1BQU1PLG1CQUFtQixTQUFTQyxjQUFLLENBQUNDLFNBQVMsQ0FBUztFQVM5REMsV0FBV0EsQ0FBQ0MsS0FBYSxFQUFFO0lBQzlCLEtBQUssQ0FBQ0EsS0FBSyxDQUFDOztJQUVaO0lBQ0E7SUFBQSxJQUFBQyxnQkFBQSxDQUFBQyxPQUFBO0lBQUEsSUFBQUQsZ0JBQUEsQ0FBQUMsT0FBQTtJQUFBLElBQUFELGdCQUFBLENBQUFDLE9BQUEseUJBVW9CLE1BQVk7TUFDaEMsSUFBSSxDQUFDRixLQUFLLENBQUNHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUFBLElBQUFGLGdCQUFBLENBQUFDLE9BQUEseUJBRXVCLE1BQVk7TUFDaEMsSUFBSSxDQUFDRixLQUFLLENBQUNHLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUFBLElBQUFGLGdCQUFBLENBQUFDLE9BQUEsNEJBRTBCLE1BQVk7TUFDbkMsSUFBSSxDQUFDRixLQUFLLENBQUNHLFVBQVUsQ0FBQyxJQUFJLEVBQUUs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