UNPKG

matrix-react-sdk

Version:
101 lines (97 loc) 15.3 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 _ContentMessages = _interopRequireDefault(require("../../ContentMessages")); var _dispatcher = _interopRequireDefault(require("../../dispatcher/dispatcher")); var _languageHandler = require("../../languageHandler"); var _actions = require("../../dispatcher/actions"); var _ProgressBar = _interopRequireDefault(require("../views/elements/ProgressBar")); var _AccessibleButton = _interopRequireDefault(require("../views/elements/AccessibleButton")); var _FileUtils = require("../../utils/FileUtils"); /* Copyright 2024 New Vector Ltd. Copyright 2015, 2016 , 2019, 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. */ function isUploadPayload(payload) { return [_actions.Action.UploadStarted, _actions.Action.UploadProgress, _actions.Action.UploadFailed, _actions.Action.UploadFinished, _actions.Action.UploadCanceled].includes(payload.action); } class UploadBar extends _react.default.PureComponent { constructor(props) { super(props); // Set initial state to any available upload in this room - we might be mounting // earlier than the first progress event, so should show something relevant. (0, _defineProperty2.default)(this, "dispatcherRef", void 0); (0, _defineProperty2.default)(this, "mounted", false); (0, _defineProperty2.default)(this, "onAction", payload => { if (!this.mounted) return; if (isUploadPayload(payload)) { this.setState(this.calculateState()); } }); (0, _defineProperty2.default)(this, "onCancelClick", ev => { ev.preventDefault(); _ContentMessages.default.sharedInstance().cancelUpload(this.state.currentUpload); }); this.state = this.calculateState(); } componentDidMount() { this.dispatcherRef = _dispatcher.default.register(this.onAction); this.mounted = true; } componentWillUnmount() { this.mounted = false; _dispatcher.default.unregister(this.dispatcherRef); } getUploadsInRoom() { const uploads = _ContentMessages.default.sharedInstance().getCurrentUploads(this.props.relation); return uploads.filter(u => u.roomId === this.props.room.roomId); } calculateState() { const [currentUpload, ...otherUploads] = this.getUploadsInRoom(); return { currentUpload, currentFile: currentUpload?.fileName, currentLoaded: currentUpload?.loaded, currentTotal: currentUpload?.total, countFiles: otherUploads.length + 1 }; } render() { if (!this.state.currentFile) { return null; } let uploadText; if (this.state.countFiles > 1) { // MUST use var name 'count' for pluralization to kick in uploadText = (0, _languageHandler._t)("room|upload|uploading_multiple_file", { filename: this.state.currentFile, count: this.state.countFiles - 1 }); } else { uploadText = (0, _languageHandler._t)("room|upload|uploading_single_file", { filename: this.state.currentFile }); } const uploadSize = (0, _FileUtils.fileSize)(this.state.currentTotal); return /*#__PURE__*/_react.default.createElement("div", { className: "mx_UploadBar" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_UploadBar_filename" }, uploadText, " (", uploadSize, ")"), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: this.onCancelClick, className: "mx_UploadBar_cancel" }), /*#__PURE__*/_react.default.createElement(_ProgressBar.default, { value: this.state.currentLoaded, max: this.state.currentTotal })); } } exports.default = UploadBar; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Db250ZW50TWVzc2FnZXMiLCJfZGlzcGF0Y2hlciIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfYWN0aW9ucyIsIl9Qcm9ncmVzc0JhciIsIl9BY2Nlc3NpYmxlQnV0dG9uIiwiX0ZpbGVVdGlscyIsImlzVXBsb2FkUGF5bG9hZCIsInBheWxvYWQiLCJBY3Rpb24iLCJVcGxvYWRTdGFydGVkIiwiVXBsb2FkUHJvZ3Jlc3MiLCJVcGxvYWRGYWlsZWQiLCJVcGxvYWRGaW5pc2hlZCIsIlVwbG9hZENhbmNlbGVkIiwiaW5jbHVkZXMiLCJhY3Rpb24iLCJVcGxvYWRCYXIiLCJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJtb3VudGVkIiwic2V0U3RhdGUiLCJjYWxjdWxhdGVTdGF0ZSIsImV2IiwicHJldmVudERlZmF1bHQiLCJDb250ZW50TWVzc2FnZXMiLCJzaGFyZWRJbnN0YW5jZSIsImNhbmNlbFVwbG9hZCIsInN0YXRlIiwiY3VycmVudFVwbG9hZCIsImNvbXBvbmVudERpZE1vdW50IiwiZGlzcGF0Y2hlclJlZiIsImRpcyIsInJlZ2lzdGVyIiwib25BY3Rpb24iLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInVucmVnaXN0ZXIiLCJnZXRVcGxvYWRzSW5Sb29tIiwidXBsb2FkcyIsImdldEN1cnJlbnRVcGxvYWRzIiwicmVsYXRpb24iLCJmaWx0ZXIiLCJ1Iiwicm9vbUlkIiwicm9vbSIsIm90aGVyVXBsb2FkcyIsImN1cnJlbnRGaWxlIiwiZmlsZU5hbWUiLCJjdXJyZW50TG9hZGVkIiwibG9hZGVkIiwiY3VycmVudFRvdGFsIiwidG90YWwiLCJjb3VudEZpbGVzIiwibGVuZ3RoIiwicmVuZGVyIiwidXBsb2FkVGV4dCIsIl90IiwiZmlsZW5hbWUiLCJjb3VudCIsInVwbG9hZFNpemUiLCJmaWxlU2l6ZSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25DYW5jZWxDbGljayIsInZhbHVlIiwibWF4IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3N0cnVjdHVyZXMvVXBsb2FkQmFyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiAsIDIwMTksIDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUm9vbSwgSUV2ZW50UmVsYXRpb24gfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5pbXBvcnQgeyBPcHRpb25hbCB9IGZyb20gXCJtYXRyaXgtZXZlbnRzLXNka1wiO1xuXG5pbXBvcnQgQ29udGVudE1lc3NhZ2VzIGZyb20gXCIuLi8uLi9Db250ZW50TWVzc2FnZXNcIjtcbmltcG9ydCBkaXMgZnJvbSBcIi4uLy4uL2Rpc3BhdGNoZXIvZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGlzcGF0Y2hlci9hY3Rpb25zXCI7XG5pbXBvcnQgUHJvZ3Jlc3NCYXIgZnJvbSBcIi4uL3ZpZXdzL2VsZW1lbnRzL1Byb2dyZXNzQmFyXCI7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiwgeyBCdXR0b25FdmVudCB9IGZyb20gXCIuLi92aWV3cy9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgeyBSb29tVXBsb2FkIH0gZnJvbSBcIi4uLy4uL21vZGVscy9Sb29tVXBsb2FkXCI7XG5pbXBvcnQgeyBBY3Rpb25QYXlsb2FkIH0gZnJvbSBcIi4uLy4uL2Rpc3BhdGNoZXIvcGF5bG9hZHNcIjtcbmltcG9ydCB7IFVwbG9hZFBheWxvYWQgfSBmcm9tIFwiLi4vLi4vZGlzcGF0Y2hlci9wYXlsb2Fkcy9VcGxvYWRQYXlsb2FkXCI7XG5pbXBvcnQgeyBmaWxlU2l6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9GaWxlVXRpbHNcIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgcm9vbTogUm9vbTtcbiAgICByZWxhdGlvbj86IElFdmVudFJlbGF0aW9uO1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBjdXJyZW50RmlsZT86IHN0cmluZztcbiAgICBjdXJyZW50VXBsb2FkPzogUm9vbVVwbG9hZDtcbiAgICBjdXJyZW50TG9hZGVkPzogbnVtYmVyO1xuICAgIGN1cnJlbnRUb3RhbD86IG51bWJlcjtcbiAgICBjb3VudEZpbGVzOiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGlzVXBsb2FkUGF5bG9hZChwYXlsb2FkOiBBY3Rpb25QYXlsb2FkKTogcGF5bG9hZCBpcyBVcGxvYWRQYXlsb2FkIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBBY3Rpb24uVXBsb2FkU3RhcnRlZCxcbiAgICAgICAgQWN0aW9uLlVwbG9hZFByb2dyZXNzLFxuICAgICAgICBBY3Rpb24uVXBsb2FkRmFpbGVkLFxuICAgICAgICBBY3Rpb24uVXBsb2FkRmluaXNoZWQsXG4gICAgICAgIEFjdGlvbi5VcGxvYWRDYW5jZWxlZCxcbiAgICBdLmluY2x1ZGVzKHBheWxvYWQuYWN0aW9uIGFzIEFjdGlvbik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwbG9hZEJhciBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwcml2YXRlIGRpc3BhdGNoZXJSZWY6IE9wdGlvbmFsPHN0cmluZz47XG4gICAgcHJpdmF0ZSBtb3VudGVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgLy8gU2V0IGluaXRpYWwgc3RhdGUgdG8gYW55IGF2YWlsYWJsZSB1cGxvYWQgaW4gdGhpcyByb29tIC0gd2UgbWlnaHQgYmUgbW91bnRpbmdcbiAgICAgICAgLy8gZWFybGllciB0aGFuIHRoZSBmaXJzdCBwcm9ncmVzcyBldmVudCwgc28gc2hvdWxkIHNob3cgc29tZXRoaW5nIHJlbGV2YW50LlxuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5jYWxjdWxhdGVTdGF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyUmVmID0gZGlzLnJlZ2lzdGVyKHRoaXMub25BY3Rpb24pO1xuICAgICAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3VudGVkID0gZmFsc2U7XG4gICAgICAgIGRpcy51bnJlZ2lzdGVyKHRoaXMuZGlzcGF0Y2hlclJlZiEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VXBsb2Fkc0luUm9vbSgpOiBSb29tVXBsb2FkW10ge1xuICAgICAgICBjb25zdCB1cGxvYWRzID0gQ29udGVudE1lc3NhZ2VzLnNoYXJlZEluc3RhbmNlKCkuZ2V0Q3VycmVudFVwbG9hZHModGhpcy5wcm9wcy5yZWxhdGlvbik7XG4gICAgICAgIHJldHVybiB1cGxvYWRzLmZpbHRlcigodSkgPT4gdS5yb29tSWQgPT09IHRoaXMucHJvcHMucm9vbS5yb29tSWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlU3RhdGUoKTogSVN0YXRlIHtcbiAgICAgICAgY29uc3QgW2N1cnJlbnRVcGxvYWQsIC4uLm90aGVyVXBsb2Fkc10gPSB0aGlzLmdldFVwbG9hZHNJblJvb20oKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGN1cnJlbnRVcGxvYWQsXG4gICAgICAgICAgICBjdXJyZW50RmlsZTogY3VycmVudFVwbG9hZD8uZmlsZU5hbWUsXG4gICAgICAgICAgICBjdXJyZW50TG9hZGVkOiBjdXJyZW50VXBsb2FkPy5sb2FkZWQsXG4gICAgICAgICAgICBjdXJyZW50VG90YWw6IGN1cnJlbnRVcGxvYWQ/LnRvdGFsLFxuICAgICAgICAgICAgY291bnRGaWxlczogb3RoZXJVcGxvYWRzLmxlbmd0aCArIDEsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkFjdGlvbiA9IChwYXlsb2FkOiBBY3Rpb25QYXlsb2FkKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5tb3VudGVkKSByZXR1cm47XG4gICAgICAgIGlmIChpc1VwbG9hZFBheWxvYWQocGF5bG9hZCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUodGhpcy5jYWxjdWxhdGVTdGF0ZSgpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIG9uQ2FuY2VsQ2xpY2sgPSAoZXY6IEJ1dHRvbkV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIENvbnRlbnRNZXNzYWdlcy5zaGFyZWRJbnN0YW5jZSgpLmNhbmNlbFVwbG9hZCh0aGlzLnN0YXRlLmN1cnJlbnRVcGxvYWQhKTtcbiAgICB9O1xuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuY3VycmVudEZpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHVwbG9hZFRleHQ6IHN0cmluZztcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuY291bnRGaWxlcyA+IDEpIHtcbiAgICAgICAgICAgIC8vIE1VU1QgdXNlIHZhciBuYW1lICdjb3VudCcgZm9yIHBsdXJhbGl6YXRpb24gdG8ga2ljayBpblxuICAgICAgICAgICAgdXBsb2FkVGV4dCA9IF90KFwicm9vbXx1cGxvYWR8dXBsb2FkaW5nX211bHRpcGxlX2ZpbGVcIiwge1xuICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLnN0YXRlLmN1cnJlbnRGaWxlLFxuICAgICAgICAgICAgICAgIGNvdW50OiB0aGlzLnN0YXRlLmNvdW50RmlsZXMgLSAxLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGxvYWRUZXh0ID0gX3QoXCJyb29tfHVwbG9hZHx1cGxvYWRpbmdfc2luZ2xlX2ZpbGVcIiwge1xuICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLnN0YXRlLmN1cnJlbnRGaWxlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGxvYWRTaXplID0gZmlsZVNpemUodGhpcy5zdGF0ZS5jdXJyZW50VG90YWwhKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfVXBsb2FkQmFyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9VcGxvYWRCYXJfZmlsZW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3VwbG9hZFRleHR9ICh7dXBsb2FkU2l6ZX0pXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b24gb25DbGljaz17dGhpcy5vbkNhbmNlbENsaWNrfSBjbGFzc05hbWU9XCJteF9VcGxvYWRCYXJfY2FuY2VsXCIgLz5cbiAgICAgICAgICAgICAgICA8UHJvZ3Jlc3NCYXIgdmFsdWU9e3RoaXMuc3RhdGUuY3VycmVudExvYWRlZCF9IG1heD17dGhpcy5zdGF0ZS5jdXJyZW50VG90YWwhfSAvPlxu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