UNPKG

matrix-react-sdk

Version:
78 lines (75 loc) 9.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSlidingSyncRoomSearch = void 0; var _react = require("react"); var _MatrixClientPeg = require("../MatrixClientPeg"); var _useLatestResult = require("./useLatestResult"); var _SlidingSyncManager = require("../SlidingSyncManager"); /* 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 useSlidingSyncRoomSearch = () => { const [rooms, setRooms] = (0, _react.useState)([]); const [loading, setLoading] = (0, _react.useState)(false); const [updateQuery, updateResult] = (0, _useLatestResult.useLatestResult)(setRooms); const search = (0, _react.useCallback)(async ({ limit = 100, query: term }) => { const opts = { limit, term }; updateQuery(opts); if (!term?.length) { setRooms([]); return true; } try { setLoading(true); await _SlidingSyncManager.SlidingSyncManager.instance.ensureListRegistered(_SlidingSyncManager.SlidingSyncManager.ListSearch, { ranges: [[0, limit]], filters: { room_name_like: term } }); const rooms = []; const { roomIndexToRoomId } = _SlidingSyncManager.SlidingSyncManager.instance.slidingSync.getListData(_SlidingSyncManager.SlidingSyncManager.ListSearch); let i = 0; while (roomIndexToRoomId[i]) { const roomId = roomIndexToRoomId[i]; const room = _MatrixClientPeg.MatrixClientPeg.safeGet().getRoom(roomId); if (room) { rooms.push(room); } i++; } updateResult(opts, rooms); return true; } catch (e) { console.error("Could not fetch sliding sync rooms for params", { limit, term }, e); updateResult(opts, []); return false; } finally { setLoading(false); // TODO: delete the list? } }, [updateQuery, updateResult]); return { loading, rooms, search }; }; exports.useSlidingSyncRoomSearch = useSlidingSyncRoomSearch; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX01hdHJpeENsaWVudFBlZyIsIl91c2VMYXRlc3RSZXN1bHQiLCJfU2xpZGluZ1N5bmNNYW5hZ2VyIiwidXNlU2xpZGluZ1N5bmNSb29tU2VhcmNoIiwicm9vbXMiLCJzZXRSb29tcyIsInVzZVN0YXRlIiwibG9hZGluZyIsInNldExvYWRpbmciLCJ1cGRhdGVRdWVyeSIsInVwZGF0ZVJlc3VsdCIsInVzZUxhdGVzdFJlc3VsdCIsInNlYXJjaCIsInVzZUNhbGxiYWNrIiwibGltaXQiLCJxdWVyeSIsInRlcm0iLCJvcHRzIiwibGVuZ3RoIiwiU2xpZGluZ1N5bmNNYW5hZ2VyIiwiaW5zdGFuY2UiLCJlbnN1cmVMaXN0UmVnaXN0ZXJlZCIsIkxpc3RTZWFyY2giLCJyYW5nZXMiLCJmaWx0ZXJzIiwicm9vbV9uYW1lX2xpa2UiLCJyb29tSW5kZXhUb1Jvb21JZCIsInNsaWRpbmdTeW5jIiwiZ2V0TGlzdERhdGEiLCJpIiwicm9vbUlkIiwicm9vbSIsIk1hdHJpeENsaWVudFBlZyIsInNhZmVHZXQiLCJnZXRSb29tIiwicHVzaCIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVNsaWRpbmdTeW5jUm9vbVNlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJvb20gfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCB7IE1hdHJpeENsaWVudFBlZyB9IGZyb20gXCIuLi9NYXRyaXhDbGllbnRQZWdcIjtcbmltcG9ydCB7IHVzZUxhdGVzdFJlc3VsdCB9IGZyb20gXCIuL3VzZUxhdGVzdFJlc3VsdFwiO1xuaW1wb3J0IHsgU2xpZGluZ1N5bmNNYW5hZ2VyIH0gZnJvbSBcIi4uL1NsaWRpbmdTeW5jTWFuYWdlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNsaWRpbmdTeW5jUm9vbVNlYXJjaE9wdHMge1xuICAgIGxpbWl0OiBudW1iZXI7XG4gICAgcXVlcnk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVNsaWRpbmdTeW5jUm9vbVNlYXJjaCA9ICgpOiB7XG4gICAgbG9hZGluZzogYm9vbGVhbjtcbiAgICByb29tczogUm9vbVtdO1xuICAgIHNlYXJjaChvcHRzOiBTbGlkaW5nU3luY1Jvb21TZWFyY2hPcHRzKTogUHJvbWlzZTxib29sZWFuPjtcbn0gPT4ge1xuICAgIGNvbnN0IFtyb29tcywgc2V0Um9vbXNdID0gdXNlU3RhdGU8Um9vbVtdPihbXSk7XG5cbiAgICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBbdXBkYXRlUXVlcnksIHVwZGF0ZVJlc3VsdF0gPSB1c2VMYXRlc3RSZXN1bHQ8eyB0ZXJtOiBzdHJpbmc7IGxpbWl0PzogbnVtYmVyIH0sIFJvb21bXT4oc2V0Um9vbXMpO1xuXG4gICAgY29uc3Qgc2VhcmNoID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIGFzeW5jICh7IGxpbWl0ID0gMTAwLCBxdWVyeTogdGVybSB9OiBTbGlkaW5nU3luY1Jvb21TZWFyY2hPcHRzKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0geyBsaW1pdCwgdGVybSB9O1xuICAgICAgICAgICAgdXBkYXRlUXVlcnkob3B0cyk7XG5cbiAgICAgICAgICAgIGlmICghdGVybT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2V0Um9vbXMoW10pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgU2xpZGluZ1N5bmNNYW5hZ2VyLmluc3RhbmNlLmVuc3VyZUxpc3RSZWdpc3RlcmVkKFNsaWRpbmdTeW5jTWFuYWdlci5MaXN0U2VhcmNoLCB7XG4gICAgICAgICAgICAgICAgICAgIHJhbmdlczogW1swLCBsaW1pdF1dLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb29tX25hbWVfbGlrZTogdGVybSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCByb29tczogUm9vbVtdID0gW107XG4gICAgICAgICAgICAgICAgY29uc3QgeyByb29tSW5kZXhUb1Jvb21JZCB9ID0gU2xpZGluZ1N5bmNNYW5hZ2VyLmluc3RhbmNlLnNsaWRpbmdTeW5jIS5nZXRMaXN0RGF0YShcbiAgICAgICAgICAgICAgICAgICAgU2xpZGluZ1N5bmNNYW5hZ2VyLkxpc3RTZWFyY2gsXG4gICAgICAgICAgICAgICAgKSE7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgIHdoaWxlIChyb29tSW5kZXhUb1Jvb21JZFtpXSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb29tSWQgPSByb29tSW5kZXhUb1Jvb21JZFtpXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm9vbSA9IE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KCkuZ2V0Um9vbShyb29tSWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm9vbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbXMucHVzaChyb29tKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVJlc3VsdChvcHRzLCByb29tcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkNvdWxkIG5vdCBmZXRjaCBzbGlkaW5nIHN5bmMgcm9vbXMgZm9yIHBhcmFtc1wiLCB7IGxpbWl0LCB0ZXJtIH0sIGUpO1xuICAgICAgICAgICAgICAgIHVwZGF0ZVJlc3VsdChvcHRzLCBbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBkZWxldGUgdGhlIGxpc3Q/XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFt1cGRhdGVRdWVyeSwgdXBkYXRlUmVzdWx0XSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9hZGluZyxcbiAgICAgICAgcm9vbXMsXG4gICAgICAgIHNlYXJjaCxcbiAgICB9IGFzIGNvbnN0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsZ0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxtQkFBQSxHQUFBSCxPQUFBO0FBYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBY08sTUFBTUksd0JBQXdCLEdBQUdBLENBQUEsS0FJbkM7RUFDRCxNQUFNLENBQUNDLEtBQUssRUFBRUMsUUFBUSxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFTLEVBQUUsQ0FBQztFQUU5QyxNQUFNLENBQUNDLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUcsSUFBQUYsZUFBUSxFQUFDLEtBQUssQ0FBQztFQUU3QyxNQUFNLENBQUNHLFdBQVcsRUFBRUMsWUFBWSxDQUFDLEdBQUcsSUFBQUMsZ0NBQWUsRUFBMkNOLFFBQVEsQ0FBQztFQUV2RyxNQUFNTyxNQUFNLEdBQUcsSUFBQUMsa0JBQVcsRUFDdEIsT0FBTztJQUFFQyxLQUFLLEdBQUcsR0FBRztJQUFFQyxLQUFLLEVBQUVDO0VBQWdDLENBQUMsS0FBdUI7SUFDakYsTUFBTUMsSUFBSSxHQUFHO01BQUVILEtBQUs7TUFBRUU7SUFBSyxDQUFDO0lBQzVCUCxXQUFXLENBQUNRLElBQUksQ0FBQztJQUVqQixJQUFJLENBQUNELElBQUksRUFBRUUsTUFBTSxFQUFFO01BQ2ZiLFFBQVEsQ0FBQyxFQUFFLENBQUM7TUFDWixPQUFPLElBQUk7SUFDZjtJQUVBLElBQUk7TUFDQUcsVUFBVSxDQUFDLElBQUksQ0FBQztNQUNoQixNQUFNVyxzQ0FBa0IsQ0FBQ0MsUUFBUSxDQUFDQyxvQkFBb0IsQ0FBQ0Ysc0NBQWtCLENBQUNHLFVBQVUsRUFBRTtRQUNsRkMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUVULEtBQUssQ0FBQyxDQUFDO1FBQ3BCVSxPQUFPLEVBQUU7VUFDTEMsY0FBYyxFQUFFVDtRQUNwQjtNQUNKLENBQUMsQ0FBQztNQUNGLE1BQU1aLEtBQWEsR0FBRyxFQUFFO01BQ3hCLE1BQU07UUFBRXNCO01BQWtCLENBQUMsR0FBR1Asc0NBQWtCLENBQUNDLFFBQVEsQ0FBQ08sV0FBVyxDQUFFQyxXQUFXLENBQzlFVCxzQ0FBa0IsQ0FBQ0csVUFDdkIsQ0FBRTtNQUNGLElBQUlPLENBQUMsR0FBRyxDQUFDO01BQ1QsT0FBT0gsaUJBQWlCLENBQUNHLENBQUMsQ0FBQyxFQUFFO1FBQ3pCLE1BQU1DLE1BQU0sR0FBR0osaUJBQWlCLENBQUNHLENBQUMsQ0FBQztRQUNuQyxNQUFNRSxJQUFJLEdBQUdDLGdDQUFlLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQ0osTUFBTSxDQUFDO1FBQ3RELElBQUlDLElBQUksRUFBRTtVQUNOM0IsS0FBSyxDQUFDK0IsSUFBSSxDQUFDSixJQUFJLENBQUM7UUFDcEI7UUFDQUYsQ0FBQyxFQUFFO01BQ1A7TUFDQW5CLFlBQVksQ0FBQ08sSUFBSSxFQUFFYixLQUFLLENBQUM7TUFDekIsT0FBTyxJQUFJO0lBQ2YsQ0FBQyxDQUFDLE9BQU9nQyxDQUFDLEVBQUU7TUFDUkMsT0FBTyxDQUFDQyxLQUFLLENBQUMsK0NBQStDLEVBQUU7UUFBRXhCLEtBQUs7UUFBRUU7TUFBSyxDQUFDLEVBQUVvQixDQUFDLENBQUM7TUFDbEYxQixZQUFZLENBQUNPLElBQUksRUFBRSxFQUFFLENBQUM7TUFDdEIsT0FBTyxLQUFLO0lBQ2hCLENBQUMsU0FBUztNQUNOVCxVQUFVLENBQUMsS0FBSyxDQUFDO01BQ2pCO0lBQ0o7RUFDSixDQUFDLEVBQ0QsQ0FBQ0MsV0FBVyxFQUFFQyxZQUFZLENBQzlCLENBQUM7RUFFRCxPQUFPO0lBQ0hILE9BQU87SUFDUEgsS0FBSztJQUNMUTtFQUNKLENBQUM7QUFDTCxDQUFDO0FBQUMyQixPQUFBLENBQUFwQyx3QkFBQSxHQUFBQSx3QkFBQSIsImlnbm9yZUxpc3QiOltdfQ==