UNPKG

matrix-react-sdk

Version:
101 lines (98 loc) 14.2 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 _classnames = _interopRequireDefault(require("classnames")); var _download = require("../../../../res/img/download.svg"); var _RovingTabIndex = require("../../../accessibility/RovingTabIndex"); var _Spinner = _interopRequireDefault(require("../elements/Spinner")); var _languageHandler = require("../../../languageHandler"); var _FileDownloader = require("../../../utils/FileDownloader"); var _Modal = _interopRequireDefault(require("../../../Modal")); var _ErrorDialog = _interopRequireDefault(require("../dialogs/ErrorDialog")); /* Copyright 2024 New Vector Ltd. Copyright 2021 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ class DownloadActionButton extends _react.default.PureComponent { constructor(props) { super(props); (0, _defineProperty2.default)(this, "downloader", new _FileDownloader.FileDownloader()); (0, _defineProperty2.default)(this, "onDownloadClick", async () => { try { await this.doDownload(); } catch (e) { _Modal.default.createDialog(_ErrorDialog.default, { title: (0, _languageHandler._t)("timeline|download_failed"), description: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("timeline|download_failed_description")), /*#__PURE__*/_react.default.createElement("div", null, e instanceof Error ? e.toString() : "")) }); this.setState({ loading: false }); } }); this.state = { loading: false, tooltip: (0, _languageHandler._td)("timeline|download_action_downloading") }; } async doDownload() { const mediaEventHelper = this.props.mediaEventHelperGet(); if (this.state.loading || !mediaEventHelper) return; if (mediaEventHelper.media.isEncrypted) { this.setState({ tooltip: (0, _languageHandler._td)("timeline|download_action_decrypting") }); } this.setState({ loading: true }); if (this.state.blob) { // Cheat and trigger a download, again. return this.downloadBlob(this.state.blob); } const blob = await mediaEventHelper.sourceBlob.value; this.setState({ blob }); await this.downloadBlob(blob); } async downloadBlob(blob) { await this.downloader.download({ blob, name: this.props.mediaEventHelperGet().fileName }); this.setState({ loading: false }); } render() { let spinner; if (this.state.loading) { spinner = /*#__PURE__*/_react.default.createElement(_Spinner.default, { w: 18, h: 18 }); } const classes = (0, _classnames.default)({ mx_MessageActionBar_iconButton: true, mx_MessageActionBar_downloadButton: true, mx_MessageActionBar_downloadSpinnerButton: !!spinner }); return /*#__PURE__*/_react.default.createElement(_RovingTabIndex.RovingAccessibleButton, { className: classes, title: spinner ? (0, _languageHandler._t)(this.state.tooltip) : (0, _languageHandler._t)("action|download"), onClick: this.onDownloadClick, disabled: !!spinner, placement: "left" }, /*#__PURE__*/_react.default.createElement(_download.Icon, null), spinner); } } exports.default = DownloadActionButton; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbGFzc25hbWVzIiwiX2Rvd25sb2FkIiwiX1JvdmluZ1RhYkluZGV4IiwiX1NwaW5uZXIiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX0ZpbGVEb3dubG9hZGVyIiwiX01vZGFsIiwiX0Vycm9yRGlhbG9nIiwiRG93bmxvYWRBY3Rpb25CdXR0b24iLCJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJGaWxlRG93bmxvYWRlciIsImRvRG93bmxvYWQiLCJlIiwiTW9kYWwiLCJjcmVhdGVEaWFsb2ciLCJFcnJvckRpYWxvZyIsInRpdGxlIiwiX3QiLCJkZXNjcmlwdGlvbiIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsIkVycm9yIiwidG9TdHJpbmciLCJzZXRTdGF0ZSIsImxvYWRpbmciLCJzdGF0ZSIsInRvb2x0aXAiLCJfdGQiLCJtZWRpYUV2ZW50SGVscGVyIiwibWVkaWFFdmVudEhlbHBlckdldCIsIm1lZGlhIiwiaXNFbmNyeXB0ZWQiLCJibG9iIiwiZG93bmxvYWRCbG9iIiwic291cmNlQmxvYiIsInZhbHVlIiwiZG93bmxvYWRlciIsImRvd25sb2FkIiwibmFtZSIsImZpbGVOYW1lIiwicmVuZGVyIiwic3Bpbm5lciIsInciLCJoIiwiY2xhc3NlcyIsImNsYXNzTmFtZXMiLCJteF9NZXNzYWdlQWN0aW9uQmFyX2ljb25CdXR0b24iLCJteF9NZXNzYWdlQWN0aW9uQmFyX2Rvd25sb2FkQnV0dG9uIiwibXhfTWVzc2FnZUFjdGlvbkJhcl9kb3dubG9hZFNwaW5uZXJCdXR0b24iLCJSb3ZpbmdBY2Nlc3NpYmxlQnV0dG9uIiwiY2xhc3NOYW1lIiwib25DbGljayIsIm9uRG93bmxvYWRDbGljayIsImRpc2FibGVkIiwicGxhY2VtZW50IiwiSWNvbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9tZXNzYWdlcy9Eb3dubG9hZEFjdGlvbkJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgTWF0cml4RXZlbnQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuXG5pbXBvcnQgeyBJY29uIGFzIERvd25sb2FkSWNvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi9yZXMvaW1nL2Rvd25sb2FkLnN2Z1wiO1xuaW1wb3J0IHsgTWVkaWFFdmVudEhlbHBlciB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9NZWRpYUV2ZW50SGVscGVyXCI7XG5pbXBvcnQgeyBSb3ZpbmdBY2Nlc3NpYmxlQnV0dG9uIH0gZnJvbSBcIi4uLy4uLy4uL2FjY2Vzc2liaWxpdHkvUm92aW5nVGFiSW5kZXhcIjtcbmltcG9ydCBTcGlubmVyIGZyb20gXCIuLi9lbGVtZW50cy9TcGlubmVyXCI7XG5pbXBvcnQgeyBfdCwgX3RkLCBUcmFuc2xhdGlvbktleSB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCB7IEZpbGVEb3dubG9hZGVyIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL0ZpbGVEb3dubG9hZGVyXCI7XG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uLy4uL01vZGFsXCI7XG5pbXBvcnQgRXJyb3JEaWFsb2cgZnJvbSBcIi4uL2RpYWxvZ3MvRXJyb3JEaWFsb2dcIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgbXhFdmVudDogTWF0cml4RXZlbnQ7XG5cbiAgICAvLyBYWFg6IEl0IGNhbiB0YWtlIGEgY3ljbGUgb3IgdHdvIGZvciB0aGUgTWVzc2FnZUFjdGlvbkJhciB0byBoYXZlIGFsbCB0aGUgcHJvcHMvc2V0dXBcbiAgICAvLyByZXF1aXJlZCB0byBnZXQgdXMgYSBNZWRpYUV2ZW50SGVscGVyLCBzbyB3ZSB1c2UgYSBnZXR0ZXIgZnVuY3Rpb24gaW5zdGVhZCB0byBwcm9kIGZvclxuICAgIC8vIG9uZS5cbiAgICBtZWRpYUV2ZW50SGVscGVyR2V0OiAoKSA9PiBNZWRpYUV2ZW50SGVscGVyIHwgdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuICAgIGJsb2I/OiBCbG9iO1xuICAgIHRvb2x0aXA6IFRyYW5zbGF0aW9uS2V5O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb3dubG9hZEFjdGlvbkJ1dHRvbiBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwcml2YXRlIGRvd25sb2FkZXIgPSBuZXcgRmlsZURvd25sb2FkZXIoKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9wczogSVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICB0b29sdGlwOiBfdGQoXCJ0aW1lbGluZXxkb3dubG9hZF9hY3Rpb25fZG93bmxvYWRpbmdcIiksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkRvd25sb2FkQ2xpY2sgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvRG93bmxvYWQoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKEVycm9yRGlhbG9nLCB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IF90KFwidGltZWxpbmV8ZG93bmxvYWRfZmFpbGVkXCIpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntfdChcInRpbWVsaW5lfGRvd25sb2FkX2ZhaWxlZF9kZXNjcmlwdGlvblwiKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e2UgaW5zdGFuY2VvZiBFcnJvciA/IGUudG9TdHJpbmcoKSA6IFwiXCJ9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGFzeW5jIGRvRG93bmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1lZGlhRXZlbnRIZWxwZXIgPSB0aGlzLnByb3BzLm1lZGlhRXZlbnRIZWxwZXJHZXQoKTtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZyB8fCAhbWVkaWFFdmVudEhlbHBlcikgcmV0dXJuO1xuXG4gICAgICAgIGlmIChtZWRpYUV2ZW50SGVscGVyLm1lZGlhLmlzRW5jcnlwdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgdG9vbHRpcDogX3RkKFwidGltZWxpbmV8ZG93bmxvYWRfYWN0aW9uX2RlY3J5cHRpbmdcIikgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcblxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5ibG9iKSB7XG4gICAgICAgICAgICAvLyBDaGVhdCBhbmQgdHJpZ2dlciBhIGRvd25sb2FkLCBhZ2Fpbi5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvd25sb2FkQmxvYih0aGlzLnN0YXRlLmJsb2IpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG1lZGlhRXZlbnRIZWxwZXIuc291cmNlQmxvYi52YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGJsb2IgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZG93bmxvYWRCbG9iKGJsb2IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZG93bmxvYWRCbG9iKGJsb2I6IEJsb2IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5kb3dubG9hZGVyLmRvd25sb2FkKHtcbiAgICAgICAgICAgIGJsb2IsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLnByb3BzLm1lZGlhRXZlbnRIZWxwZXJHZXQoKSEuZmlsZU5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgICAgICBsZXQgc3Bpbm5lcjogSlNYLkVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHNwaW5uZXIgPSA8U3Bpbm5lciB3PXsxOH0gaD17MTh9IC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzTmFtZXMoe1xuICAgICAgICAgICAgbXhfTWVzc2FnZUFjdGlvbkJhcl9pY29uQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgbXhfTWVzc2FnZUFjdGlvbkJhcl9kb3dubG9hZEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgIG14X01lc3NhZ2VBY3Rpb25CYXJfZG93bmxvYWRTcGlubmVyQnV0dG9uOiAhIXNwaW5uZXIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8Um92aW5nQWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlc31cbiAgICAgICAgICAgICAgICB0aXRsZT17c3Bpbm5lciA/IF90KHRoaXMuc3RhdGUudG9vbHRpcCkgOiBfdChcImFjdGlvbnxkb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRG93bmxvYWRDbGlja31cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ISFzcGlubmVyfVxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gLz5cbiAgICAgICAgICAgICAgICB7c3Bpbm5lcn1cbiAgICAgICAgICAgIDwvUm92aW5nQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBU0EsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsZUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFlBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQW5CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUE4QmUsTUFBTVMsb0JBQW9CLFNBQVNDLGNBQUssQ0FBQ0MsYUFBYSxDQUFpQjtFQUczRUMsV0FBV0EsQ0FBQ0MsS0FB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