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