matrix-react-sdk
Version:
SDK for matrix.org using React
101 lines (98 loc) • 14.2 kB
JavaScript
;
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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