UNPKG

matrix-react-sdk

Version:
78 lines (75 loc) 16.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.getServerVersionFromFederationApi = getServerVersionFromFederationApi; var _react = _interopRequireWildcard(require("react")); var _BaseTool = _interopRequireDefault(require("./BaseTool")); var _languageHandler = require("../../../../languageHandler"); var _useAsyncMemo = require("../../../../hooks/useAsyncMemo"); var _MatrixClientContext = _interopRequireDefault(require("../../../../contexts/MatrixClientContext")); var _Spinner = _interopRequireDefault(require("../../elements/Spinner")); var _SyntaxHighlight = _interopRequireDefault(require("../../elements/SyntaxHighlight")); var _MatrixClientPeg = require("../../../../MatrixClientPeg"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /* Copyright 2024 New Vector Ltd. Copyright 2022 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. */ const FAILED_TO_LOAD = Symbol("failed-to-load"); async function getServerVersionFromFederationApi(client) { let baseUrl = client.getHomeserverUrl(); try { const hsName = _MatrixClientPeg.MatrixClientPeg.safeGet().getDomain(); // We don't use the js-sdk Autodiscovery module here as it only support client well-known, not server ones. const response = await fetch(`https://${hsName}/.well-known/matrix/server`); const json = await response.json(); if (json["m.server"]) { baseUrl = `https://${json["m.server"]}`; } } catch (e) { console.warn(e); } const response = await fetch(`${baseUrl}/_matrix/federation/v1/version`); return response.json(); } const ServerInfo = ({ onBack }) => { const cli = (0, _react.useContext)(_MatrixClientContext.default); const capabilities = (0, _useAsyncMemo.useAsyncMemo)(() => cli.fetchCapabilities().catch(() => FAILED_TO_LOAD), [cli]); const clientVersions = (0, _useAsyncMemo.useAsyncMemo)(() => cli.getVersions().catch(() => FAILED_TO_LOAD), [cli]); const serverVersions = (0, _useAsyncMemo.useAsyncMemo)(async () => { try { return await getServerVersionFromFederationApi(cli); } catch (e) { console.warn(e); } return FAILED_TO_LOAD; }, [cli]); let body; if (!capabilities || !clientVersions || !serverVersions) { body = /*#__PURE__*/_react.default.createElement(_Spinner.default, null); } else { body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h4", null, (0, _languageHandler._t)("common|capabilities")), capabilities !== FAILED_TO_LOAD ? /*#__PURE__*/_react.default.createElement(_SyntaxHighlight.default, { language: "json", children: JSON.stringify(capabilities, null, 4) }) : /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("devtools|failed_to_load")), /*#__PURE__*/_react.default.createElement("h4", null, (0, _languageHandler._t)("devtools|client_versions")), clientVersions !== FAILED_TO_LOAD ? /*#__PURE__*/_react.default.createElement(_SyntaxHighlight.default, { language: "json", children: JSON.stringify(clientVersions, null, 4) }) : /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("devtools|failed_to_load")), /*#__PURE__*/_react.default.createElement("h4", null, (0, _languageHandler._t)("devtools|server_versions")), serverVersions !== FAILED_TO_LOAD ? /*#__PURE__*/_react.default.createElement(_SyntaxHighlight.default, { language: "json", children: JSON.stringify(serverVersions, null, 4) }) : /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("devtools|failed_to_load"))); } return /*#__PURE__*/_react.default.createElement(_BaseTool.default, { onBack: onBack }, body); }; var _default = exports.default = ServerInfo; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfQmFzZVRvb2wiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xhbmd1YWdlSGFuZGxlciIsIl91c2VBc3luY01lbW8iLCJfTWF0cml4Q2xpZW50Q29udGV4dCIsIl9TcGlubmVyIiwiX1N5bnRheEhpZ2hsaWdodCIsIl9NYXRyaXhDbGllbnRQZWciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJGQUlMRURfVE9fTE9BRCIsIlN5bWJvbCIsImdldFNlcnZlclZlcnNpb25Gcm9tRmVkZXJhdGlvbkFwaSIsImNsaWVudCIsImJhc2VVcmwiLCJnZXRIb21lc2VydmVyVXJsIiwiaHNOYW1lIiwiTWF0cml4Q2xpZW50UGVnIiwic2FmZUdldCIsImdldERvbWFpbiIsInJlc3BvbnNlIiwiZmV0Y2giLCJqc29uIiwiY29uc29sZSIsIndhcm4iLCJTZXJ2ZXJJbmZvIiwib25CYWNrIiwiY2xpIiwidXNlQ29udGV4dCIsIk1hdHJpeENsaWVudENvbnRleHQiLCJjYXBhYmlsaXRpZXMiLCJ1c2VBc3luY01lbW8iLCJmZXRjaENhcGFiaWxpdGllcyIsImNhdGNoIiwiY2xpZW50VmVyc2lvbnMiLCJnZXRWZXJzaW9ucyIsInNlcnZlclZlcnNpb25zIiwiYm9keSIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsIl90IiwibGFuZ3VhZ2UiLCJjaGlsZHJlbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL2RldnRvb2xzL1NlcnZlckluZm8udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIyIE1pY2hhZWwgVGVsYXR5bnNraSA8N3QzY2hndXlAZ21haWwuY29tPlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTWF0cml4Q2xpZW50IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgQmFzZVRvb2wsIHsgSURldnRvb2xzUHJvcHMgfSBmcm9tIFwiLi9CYXNlVG9vbFwiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgeyB1c2VBc3luY01lbW8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlQXN5bmNNZW1vXCI7XG5pbXBvcnQgTWF0cml4Q2xpZW50Q29udGV4dCBmcm9tIFwiLi4vLi4vLi4vLi4vY29udGV4dHMvTWF0cml4Q2xpZW50Q29udGV4dFwiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4uLy4uL2VsZW1lbnRzL1NwaW5uZXJcIjtcbmltcG9ydCBTeW50YXhIaWdobGlnaHQgZnJvbSBcIi4uLy4uL2VsZW1lbnRzL1N5bnRheEhpZ2hsaWdodFwiO1xuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uLy4uLy4uLy4uL01hdHJpeENsaWVudFBlZ1wiO1xuXG5jb25zdCBGQUlMRURfVE9fTE9BRCA9IFN5bWJvbChcImZhaWxlZC10by1sb2FkXCIpO1xuXG5pbnRlcmZhY2UgSVNlcnZlcldlbGxLbm93biB7XG4gICAgc2VydmVyOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZXJ2ZXJWZXJzaW9uRnJvbUZlZGVyYXRpb25BcGkoY2xpZW50OiBNYXRyaXhDbGllbnQpOiBQcm9taXNlPElTZXJ2ZXJXZWxsS25vd24+IHtcbiAgICBsZXQgYmFzZVVybCA9IGNsaWVudC5nZXRIb21lc2VydmVyVXJsKCk7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBoc05hbWUgPSBNYXRyaXhDbGllbnRQZWcuc2FmZUdldCgpLmdldERvbWFpbigpO1xuICAgICAgICAvLyBXZSBkb24ndCB1c2UgdGhlIGpzLXNkayBBdXRvZGlzY292ZXJ5IG1vZHVsZSBoZXJlIGFzIGl0IG9ubHkgc3VwcG9ydCBjbGllbnQgd2VsbC1rbm93biwgbm90IHNlcnZlciBvbmVzLlxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovLyR7aHNOYW1lfS8ud2VsbC1rbm93bi9tYXRyaXgvc2VydmVyYCk7XG4gICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgIGlmIChqc29uW1wibS5zZXJ2ZXJcIl0pIHtcbiAgICAgICAgICAgIGJhc2VVcmwgPSBgaHR0cHM6Ly8ke2pzb25bXCJtLnNlcnZlclwiXX1gO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS9fbWF0cml4L2ZlZGVyYXRpb24vdjEvdmVyc2lvbmApO1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbmNvbnN0IFNlcnZlckluZm86IFJlYWN0LkZDPElEZXZ0b29sc1Byb3BzPiA9ICh7IG9uQmFjayB9KSA9PiB7XG4gICAgY29uc3QgY2xpID0gdXNlQ29udGV4dChNYXRyaXhDbGllbnRDb250ZXh0KTtcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSB1c2VBc3luY01lbW8oKCkgPT4gY2xpLmZldGNoQ2FwYWJpbGl0aWVzKCkuY2F0Y2goKCkgPT4gRkFJTEVEX1RPX0xPQUQpLCBbY2xpXSk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbnMgPSB1c2VBc3luY01lbW8oKCkgPT4gY2xpLmdldFZlcnNpb25zKCkuY2F0Y2goKCkgPT4gRkFJTEVEX1RPX0xPQUQpLCBbY2xpXSk7XG4gICAgY29uc3Qgc2VydmVyVmVyc2lvbnMgPSB1c2VBc3luY01lbW8oYXN5bmMgKCk6IFByb21pc2U8SVNlcnZlcldlbGxLbm93biB8IHN5bWJvbD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGdldFNlcnZlclZlcnNpb25Gcm9tRmVkZXJhdGlvbkFwaShjbGkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRkFJTEVEX1RPX0xPQUQ7XG4gICAgfSwgW2NsaV0pO1xuXG4gICAgbGV0IGJvZHk6IEpTWC5FbGVtZW50O1xuICAgIGlmICghY2FwYWJpbGl0aWVzIHx8ICFjbGllbnRWZXJzaW9ucyB8fCAhc2VydmVyVmVyc2lvbnMpIHtcbiAgICAgICAgYm9keSA9IDxTcGlubmVyIC8+O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGJvZHkgPSAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxoND57X3QoXCJjb21tb258Y2FwYWJpbGl0aWVzXCIpfTwvaDQ+XG4gICAgICAgICAgICAgICAge2NhcGFiaWxpdGllcyAhPT0gRkFJTEVEX1RPX0xPQUQgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTeW50YXhIaWdobGlnaHQgbGFuZ3VhZ2U9XCJqc29uXCIgY2hpbGRyZW49e0pTT04uc3RyaW5naWZ5KGNhcGFiaWxpdGllcywgbnVsbCwgNCl9IC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57X3QoXCJkZXZ0b29sc3xmYWlsZWRfdG9fbG9hZFwiKX08L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgPGg0PntfdChcImRldnRvb2xzfGNsaWVudF92ZXJzaW9uc1wiKX08L2g0PlxuICAgICAgICAgICAgICAgIHtjbGllbnRWZXJzaW9ucyAhPT0gRkFJTEVEX1RPX0xPQUQgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTeW50YXhIaWdobGlnaHQgbGFuZ3VhZ2U9XCJqc29uXCIgY2hpbGRyZW49e0pTT04uc3RyaW5naWZ5KGNsaWVudFZlcnNpb25zLCBudWxsLCA0KX0gLz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2PntfdChcImRldnRvb2xzfGZhaWxlZF90b19sb2FkXCIpfTwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICA8aDQ+e190KFwiZGV2dG9vbHN8c2VydmVyX3ZlcnNpb25zXCIpfTwvaDQ+XG4gICAgICAgICAgICAgICAge3NlcnZlclZlcnNpb25zICE9PSBGQUlMRURfVE9fTE9BRCA/IChcbiAgICAgICAgICAgICAgICAgICAgPFN5bnRheEhpZ2hsaWdodCBsYW5ndWFnZT1cImpzb25cIiBjaGlsZHJlbj17SlNPTi5zdHJpbmdpZnkoc2VydmVyVmVyc2lvbnMsIG51bGwsIDQpfSAvPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e190KFwiZGV2dG9vbHN8ZmFpbGVkX3RvX2xvYWRcIil9PC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiA8QmFzZVRvb2wgb25CYWNrPXtvbkJh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