UNPKG

matrix-react-sdk

Version:
55 lines (51 loc) 8.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSpaceResults = void 0; var _react = require("react"); var _matrix = require("matrix-js-sdk/src/matrix"); var _types = require("matrix-js-sdk/src/types"); var _roomHierarchy = require("matrix-js-sdk/src/room-hierarchy"); var _utils = require("matrix-js-sdk/src/utils"); var _MatrixClientPeg = require("../MatrixClientPeg"); /* Copyright 2024 New Vector Ltd. Copyright 2022 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. */ const useSpaceResults = (space, query) => { const [rooms, setRooms] = (0, _react.useState)([]); const [hierarchy, setHierarchy] = (0, _react.useState)(); const resetHierarchy = (0, _react.useCallback)(() => { setHierarchy(space ? new _roomHierarchy.RoomHierarchy(space, 50) : undefined); }, [space]); (0, _react.useEffect)(resetHierarchy, [resetHierarchy]); (0, _react.useEffect)(() => { if (!space || !hierarchy) return; // nothing to load let unmounted = false; (async () => { while (hierarchy?.canLoadMore && !unmounted && space === hierarchy.root) { await hierarchy.load(); if (hierarchy.canLoadMore) hierarchy.load(); // start next load so that the loading attribute is right setRooms(hierarchy.rooms); } })(); return () => { unmounted = true; }; }, [space, hierarchy]); const results = (0, _react.useMemo)(() => { const trimmedQuery = query.trim(); const lcQuery = trimmedQuery.toLowerCase(); const normalizedQuery = (0, _utils.normalize)(trimmedQuery); const cli = _MatrixClientPeg.MatrixClientPeg.safeGet(); return rooms?.filter(r => { return r.room_type !== _matrix.RoomType.Space && cli.getRoom(r.room_id)?.getMyMembership() !== _types.KnownMembership.Join && ((0, _utils.normalize)(r.name || "").includes(normalizedQuery) || (r.canonical_alias || "").includes(lcQuery)); }); }, [rooms, query]); return [results, hierarchy?.loading ?? false]; }; exports.useSpaceResults = useSpaceResults; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX21hdHJpeCIsIl90eXBlcyIsIl9yb29tSGllcmFyY2h5IiwiX3V0aWxzIiwiX01hdHJpeENsaWVudFBlZyIsInVzZVNwYWNlUmVzdWx0cyIsInNwYWNlIiwicXVlcnkiLCJyb29tcyIsInNldFJvb21zIiwidXNlU3RhdGUiLCJoaWVyYXJjaHkiLCJzZXRIaWVyYXJjaHkiLCJyZXNldEhpZXJhcmNoeSIsInVzZUNhbGxiYWNrIiwiUm9vbUhpZXJhcmNoeSIsInVuZGVmaW5lZCIsInVzZUVmZmVjdCIsInVubW91bnRlZCIsImNhbkxvYWRNb3JlIiwicm9vdCIsImxvYWQiLCJyZXN1bHRzIiwidXNlTWVtbyIsInRyaW1tZWRRdWVyeSIsInRyaW0iLCJsY1F1ZXJ5IiwidG9Mb3dlckNhc2UiLCJub3JtYWxpemVkUXVlcnkiLCJub3JtYWxpemUiLCJjbGkiLCJNYXRyaXhDbGllbnRQZWciLCJzYWZlR2V0IiwiZmlsdGVyIiwiciIsInJvb21fdHlwZSIsIlJvb21UeXBlIiwiU3BhY2UiLCJnZXRSb29tIiwicm9vbV9pZCIsImdldE15TWVtYmVyc2hpcCIsIktub3duTWVtYmVyc2hpcCIsIkpvaW4iLCJuYW1lIiwiaW5jbHVkZXMiLCJjYW5vbmljYWxfYWxpYXMiLCJsb2FkaW5nIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTcGFjZVJlc3VsdHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJvb20sIFJvb21UeXBlLCBIaWVyYXJjaHlSb29tIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuaW1wb3J0IHsgS25vd25NZW1iZXJzaGlwIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3R5cGVzXCI7XG5pbXBvcnQgeyBSb29tSGllcmFyY2h5IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3Jvb20taGllcmFyY2h5XCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvdXRpbHNcIjtcblxuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uL01hdHJpeENsaWVudFBlZ1wiO1xuXG5leHBvcnQgY29uc3QgdXNlU3BhY2VSZXN1bHRzID0gKHNwYWNlOiBSb29tIHwgdW5kZWZpbmVkLCBxdWVyeTogc3RyaW5nKTogW0hpZXJhcmNoeVJvb21bXSwgYm9vbGVhbl0gPT4ge1xuICAgIGNvbnN0IFtyb29tcywgc2V0Um9vbXNdID0gdXNlU3RhdGU8SGllcmFyY2h5Um9vbVtdPihbXSk7XG4gICAgY29uc3QgW2hpZXJhcmNoeSwgc2V0SGllcmFyY2h5XSA9IHVzZVN0YXRlPFJvb21IaWVyYXJjaHk+KCk7XG5cbiAgICBjb25zdCByZXNldEhpZXJhcmNoeSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0SGllcmFyY2h5KHNwYWNlID8gbmV3IFJvb21IaWVyYXJjaHkoc3BhY2UsIDUwKSA6IHVuZGVmaW5lZCk7XG4gICAgfSwgW3NwYWNlXSk7XG4gICAgdXNlRWZmZWN0KHJlc2V0SGllcmFyY2h5LCBbcmVzZXRIaWVyYXJjaHldKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghc3BhY2UgfHwgIWhpZXJhcmNoeSkgcmV0dXJuOyAvLyBub3RoaW5nIHRvIGxvYWRcblxuICAgICAgICBsZXQgdW5tb3VudGVkID0gZmFsc2U7XG5cbiAgICAgICAgKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgIHdoaWxlIChoaWVyYXJjaHk/LmNhbkxvYWRNb3JlICYmICF1bm1vdW50ZWQgJiYgc3BhY2UgPT09IGhpZXJhcmNoeS5yb290KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgaGllcmFyY2h5LmxvYWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGllcmFyY2h5LmNhbkxvYWRNb3JlKSBoaWVyYXJjaHkubG9hZCgpOyAvLyBzdGFydCBuZXh0IGxvYWQgc28gdGhhdCB0aGUgbG9hZGluZyBhdHRyaWJ1dGUgaXMgcmlnaHRcbiAgICAgICAgICAgICAgICBzZXRSb29tcyhoaWVyYXJjaHkucm9vbXMhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgdW5tb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICB9LCBbc3BhY2UsIGhpZXJhcmNoeV0pO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCB0cmltbWVkUXVlcnkgPSBxdWVyeS50cmltKCk7XG4gICAgICAgIGNvbnN0IGxjUXVlcnkgPSB0cmltbWVkUXVlcnkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gbm9ybWFsaXplKHRyaW1tZWRRdWVyeSk7XG5cbiAgICAgICAgY29uc3QgY2xpID0gTWF0cml4Q2xpZW50UGVnLnNhZmVHZXQoKTtcbiAgICAgICAgcmV0dXJuIHJvb21zPy5maWx0ZXIoKHIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgci5yb29tX3R5cGUgIT09IFJvb21UeXBlLlNwYWNlICYmXG4gICAgICAgICAgICAgICAgY2xpLmdldFJvb20oci5yb29tX2lkKT8uZ2V0TXlNZW1iZXJzaGlwKCkgIT09IEtub3duTWVtYmVyc2hpcC5Kb2luICYmXG4gICAgICAgICAgICAgICAgKG5vcm1hbGl6ZShyLm5hbWUgfHwgXCJcIikuaW5jbHVkZXMobm9ybWFsaXplZFF1ZXJ5KSB8fCAoci5jYW5vbmljYWxfYWxpYXMgfHwgXCJcIikuaW5jbHVkZXMobGNRdWVyeSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9LCBbcm9vbXMsIHF1ZXJ5XSk7XG5cbiAgICByZXR1cm4gW3Jlc3VsdHMsIGhpZXJhcmNoeT8ubG9hZGluZyA/PyBmYWxzZV07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxnQkFBQSxHQUFBTCxPQUFBO0FBZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBVU8sTUFBTU0sZUFBZSxHQUFHQSxDQUFDQyxLQUF1QixFQUFFQyxLQUFhLEtBQWlDO0VBQ25HLE1BQU0sQ0FBQ0MsS0FBSyxFQUFFQyxRQUFRLENBQUMsR0FBRyxJQUFBQyxlQUFRLEVBQWtCLEVBQUUsQ0FBQztFQUN2RCxNQUFNLENBQUNDLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUcsSUFBQUYsZUFBUSxFQUFnQixDQUFDO0VBRTNELE1BQU1HLGNBQWMsR0FBRyxJQUFBQyxrQkFBVyxFQUFDLE1BQU07SUFDckNGLFlBQVksQ0FBQ04sS0FBSyxHQUFHLElBQUlTLDRCQUFhLENBQUNULEtBQUssRUFBRSxFQUFFLENBQUMsR0FBR1UsU0FBUyxDQUFDO0VBQ2xFLENBQUMsRUFBRSxDQUFDVixLQUFLLENBQUMsQ0FBQztFQUNYLElBQUFXLGdCQUFTLEVBQUNKLGNBQWMsRUFBRSxDQUFDQSxjQUFjLENBQUMsQ0FBQztFQUUzQyxJQUFBSSxnQkFBUyxFQUFDLE1BQU07SUFDWixJQUFJLENBQUNYLEtBQUssSUFBSSxDQUFDSyxTQUFTLEVBQUUsT0FBTyxDQUFDOztJQUVsQyxJQUFJTyxTQUFTLEdBQUcsS0FBSztJQUVyQixDQUFDLFlBQTJCO01BQ3hCLE9BQU9QLFNBQVMsRUFBRVEsV0FBVyxJQUFJLENBQUNELFNBQVMsSUFBSVosS0FBSyxLQUFLSyxTQUFTLENBQUNTLElBQUksRUFBRTtRQUNyRSxNQUFNVCxTQUFTLENBQUNVLElBQUksQ0FBQyxDQUFDO1FBQ3RCLElBQUlWLFNBQVMsQ0FBQ1EsV0FBVyxFQUFFUixTQUFTLENBQUNVLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3Q1osUUFBUSxDQUFDRSxTQUFTLENBQUNILEtBQU0sQ0FBQztNQUM5QjtJQUNKLENBQUMsRUFBRSxDQUFDO0lBRUosT0FBTyxNQUFNO01BQ1RVLFNBQVMsR0FBRyxJQUFJO0lBQ3BCLENBQUM7RUFDTCxDQUFDLEVBQUUsQ0FBQ1osS0FBSyxFQUFFSyxTQUFTLENBQUMsQ0FBQztFQUV0QixNQUFNVyxPQUFPLEdBQUcsSUFBQUMsY0FBTyxFQUFDLE1BQU07SUFDMUIsTUFBTUMsWUFBWSxHQUFHakIsS0FBSyxDQUFDa0IsSUFBSSxDQUFDLENBQUM7SUFDakMsTUFBTUMsT0FBTyxHQUFHRixZQUFZLENBQUNHLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLE1BQU1DLGVBQWUsR0FBRyxJQUFBQyxnQkFBUyxFQUFDTCxZQUFZLENBQUM7SUFFL0MsTUFBTU0sR0FBRyxHQUFHQyxnQ0FBZSxDQUFDQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxPQUFPeEIsS0FBSyxFQUFFeUIsTUFBTSxDQUFFQyxDQUFDLElBQUs7TUFDeEIsT0FDSUEsQ0FBQyxDQUFDQyxTQUFTLEtBQUtDLGdCQUFRLENBQUNDLEtBQUssSUFDOUJQLEdBQUcsQ0FBQ1EsT0FBTyxDQUFDSixDQUFDLENBQUNLLE9BQU8sQ0FBQyxFQUFFQyxlQUFlLENBQUMsQ0FBQyxLQUFLQyxzQkFBZSxDQUFDQyxJQUFJLEtBQ2pFLElBQUFiLGdCQUFTLEVBQUNLLENBQUMsQ0FBQ1MsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDQyxRQUFRLENBQUNoQixlQUFlLENBQUMsSUFBSSxDQUFDTSxDQUFDLENBQUNXLGVBQWUsSUFBSSxFQUFFLEVBQUVELFFBQVEsQ0FBQ2xCLE9BQU8sQ0FBQyxDQUFDO0lBRTFHLENBQUMsQ0FBQztFQUNOLENBQUMsRUFBRSxDQUFDbEIsS0FBSyxFQUFFRCxLQUFLLENBQUMsQ0FBQztFQUVsQixPQUFPLENBQUNlLE9BQU8sRUFBRVgsU0FBUyxFQUFFbUMsT0FBTyxJQUFJLEtBQUssQ0FBQztBQUNqRCxDQUFDO0FBQUNDLE9BQUEsQ0FBQTFDLGVBQUEsR0FBQUEsZUFBQSIsImlnbm9yZUxpc3QiOltdfQ==