UNPKG

matrix-react-sdk

Version:
77 lines (73 loc) 10.1 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 _logger = require("matrix-js-sdk/src/logger"); var _languageHandler = require("./languageHandler"); var _BaseDialog = _interopRequireDefault(require("./components/views/dialogs/BaseDialog")); var _DialogButtons = _interopRequireDefault(require("./components/views/elements/DialogButtons")); var _Spinner = _interopRequireDefault(require("./components/views/elements/Spinner")); /* Copyright 2024 New Vector Ltd. Copyright 2015-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. */ /** * Wrap an asynchronous loader function with a react component which shows a * spinner until the real component loads. */ class AsyncWrapper extends _react.default.Component { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "unmounted", false); (0, _defineProperty2.default)(this, "state", {}); (0, _defineProperty2.default)(this, "onWrapperCancelClick", () => { this.props.onFinished(); }); } componentDidMount() { this.props.prom.then(result => { if (this.unmounted) return; // Take the 'default' member if it's there, then we support // passing in just an import()ed module, since ES6 async import // always returns a module *namespace*. const component = result.default ? result.default : result; this.setState({ component }); }).catch(e => { _logger.logger.warn("AsyncWrapper promise failed", e); this.setState({ error: e }); }); } componentWillUnmount() { this.unmounted = true; } render() { if (this.state.component) { const Component = this.state.component; return /*#__PURE__*/_react.default.createElement(Component, this.props); } else if (this.state.error) { return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, { onFinished: this.props.onFinished, title: (0, _languageHandler._t)("common|error") }, (0, _languageHandler._t)("failed_load_async_component"), /*#__PURE__*/_react.default.createElement(_DialogButtons.default, { primaryButton: (0, _languageHandler._t)("action|dismiss"), onPrimaryButtonClick: this.onWrapperCancelClick, hasCancel: false })); } else { // show a spinner until the component is loaded. return /*#__PURE__*/_react.default.createElement(_Spinner.default, null); } } } exports.default = AsyncWrapper; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX0Jhc2VEaWFsb2ciLCJfRGlhbG9nQnV0dG9ucyIsIl9TcGlubmVyIiwiQXN5bmNXcmFwcGVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsInByb3BzIiwib25GaW5pc2hlZCIsImNvbXBvbmVudERpZE1vdW50IiwicHJvbSIsInRoZW4iLCJyZXN1bHQiLCJ1bm1vdW50ZWQiLCJjb21wb25lbnQiLCJzZXRTdGF0ZSIsImNhdGNoIiwiZSIsImxvZ2dlciIsIndhcm4iLCJlcnJvciIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVuZGVyIiwic3RhdGUiLCJjcmVhdGVFbGVtZW50IiwidGl0bGUiLCJfdCIsInByaW1hcnlCdXR0b24iLCJvblByaW1hcnlCdXR0b25DbGljayIsIm9uV3JhcHBlckNhbmNlbENsaWNrIiwiaGFzQ2FuY2VsIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9Bc3luY1dyYXBwZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE1LTIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFR5cGUsIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbG9nZ2VyXCI7XG5cbmltcG9ydCB7IF90IH0gZnJvbSBcIi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQmFzZURpYWxvZyBmcm9tIFwiLi9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvQmFzZURpYWxvZ1wiO1xuaW1wb3J0IERpYWxvZ0J1dHRvbnMgZnJvbSBcIi4vY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9EaWFsb2dCdXR0b25zXCI7XG5pbXBvcnQgU3Bpbm5lciBmcm9tIFwiLi9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL1NwaW5uZXJcIjtcblxudHlwZSBBc3luY0ltcG9ydDxUPiA9IHsgZGVmYXVsdDogVCB9O1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICAvLyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2l0aCB0aGUgcmVhbCBjb21wb25lbnRcbiAgICBwcm9tOiBQcm9taXNlPENvbXBvbmVudFR5cGU8YW55PiB8IEFzeW5jSW1wb3J0PENvbXBvbmVudFR5cGU8YW55Pj4+O1xuICAgIG9uRmluaXNoZWQoKTogdm9pZDtcbn1cblxuaW50ZXJmYWNlIElTdGF0ZSB7XG4gICAgY29tcG9uZW50PzogQ29tcG9uZW50VHlwZTxQcm9wc1dpdGhDaGlsZHJlbjxhbnk+PjtcbiAgICBlcnJvcj86IEVycm9yO1xufVxuXG4vKipcbiAqIFdyYXAgYW4gYXN5bmNocm9ub3VzIGxvYWRlciBmdW5jdGlvbiB3aXRoIGEgcmVhY3QgY29tcG9uZW50IHdoaWNoIHNob3dzIGFcbiAqIHNwaW5uZXIgdW50aWwgdGhlIHJlYWwgY29tcG9uZW50IGxvYWRzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBc3luY1dyYXBwZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwcml2YXRlIHVubW91bnRlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIHN0YXRlOiBJU3RhdGUgPSB7fTtcblxuICAgIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wcy5wcm9tXG4gICAgICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudW5tb3VudGVkKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAvLyBUYWtlIHRoZSAnZGVmYXVsdCcgbWVtYmVyIGlmIGl0J3MgdGhlcmUsIHRoZW4gd2Ugc3VwcG9ydFxuICAgICAgICAgICAgICAgIC8vIHBhc3NpbmcgaW4ganVzdCBhbiBpbXBvcnQoKWVkIG1vZHVsZSwgc2luY2UgRVM2IGFzeW5jIGltcG9ydFxuICAgICAgICAgICAgICAgIC8vIGFsd2F5cyByZXR1cm5zIGEgbW9kdWxlICpuYW1lc3BhY2UqLlxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IChyZXN1bHQgYXMgQXN5bmNJbXBvcnQ8Q29tcG9uZW50VHlwZT4pLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgPyAocmVzdWx0IGFzIEFzeW5jSW1wb3J0PENvbXBvbmVudFR5cGU+KS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIDogKHJlc3VsdCBhcyBDb21wb25lbnRUeXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgY29tcG9uZW50IH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiQXN5bmNXcmFwcGVyIHByb21pc2UgZmFpbGVkXCIsIGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcjogZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bm1vdW50ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25XcmFwcGVyQ2FuY2VsQ2xpY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucHJvcHMub25GaW5pc2hlZCgpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgQ29tcG9uZW50ID0gdGhpcy5zdGF0ZS5jb21wb25lbnQ7XG4gICAgICAgICAgICByZXR1cm4gPENvbXBvbmVudCB7Li4udGhpcy5wcm9wc30gLz47XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QmFzZURpYWxvZyBvbkZpbmlzaGVkPXt0aGlzLnByb3BzLm9uRmluaXNoZWR9IHRpdGxlPXtfdChcImNvbW1vbnxlcnJvclwiKX0+XG4gICAgICAgICAgICAgICAgICAgIHtfdChcImZhaWxlZF9sb2FkX2FzeW5jX2NvbXBvbmVudFwiKX1cbiAgICAgICAgICAgICAgICAgICAgPERpYWxvZ0J1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlCdXR0b249e190KFwiYWN0aW9ufGRpc21pc3NcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblByaW1hcnlCdXR0b25DbGljaz17dGhpcy5vbldyYXBwZXJDYW5jZWxDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NhbmNlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9CYXNlRGlhbG9nPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNob3cgYSBzcGlubmVyIHVudGlsIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkLlxuICAgICAgICAgICAgcmV0dXJuIDxTcGlubmVyIC8+O1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEs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