matrix-react-sdk
Version:
SDK for matrix.org using React
55 lines (51 loc) • 8.65 kB
JavaScript
;
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==