matrix-react-sdk
Version:
SDK for matrix.org using React
62 lines (59 loc) • 6.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useUserDirectory = void 0;
var _react = require("react");
var _MatrixClientPeg = require("../MatrixClientPeg");
var _directMessages = require("../utils/direct-messages");
var _useLatestResult = require("./useLatestResult");
/*
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 useUserDirectory = () => {
const [users, setUsers] = (0, _react.useState)([]);
const [loading, setLoading] = (0, _react.useState)(false);
const [updateQuery, updateResult] = (0, _useLatestResult.useLatestResult)(setUsers);
const search = (0, _react.useCallback)(async ({
limit = 20,
query: term
}) => {
const opts = {
limit,
term
};
updateQuery(opts);
if (!term?.length) {
setUsers([]);
return true;
}
try {
setLoading(true);
const {
results
} = await _MatrixClientPeg.MatrixClientPeg.safeGet().searchUserDirectory(opts);
updateResult(opts, results.map(user => new _directMessages.DirectoryMember(user)));
return true;
} catch (e) {
console.error("Could not fetch user in user directory for params", {
limit,
term
}, e);
updateResult(opts, []);
return false;
} finally {
setLoading(false);
}
}, [updateQuery, updateResult]);
return {
ready: true,
loading,
users,
search
};
};
exports.useUserDirectory = useUserDirectory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX01hdHJpeENsaWVudFBlZyIsIl9kaXJlY3RNZXNzYWdlcyIsIl91c2VMYXRlc3RSZXN1bHQiLCJ1c2VVc2VyRGlyZWN0b3J5IiwidXNlcnMiLCJzZXRVc2VycyIsInVzZVN0YXRlIiwibG9hZGluZyIsInNldExvYWRpbmciLCJ1cGRhdGVRdWVyeSIsInVwZGF0ZVJlc3VsdCIsInVzZUxhdGVzdFJlc3VsdCIsInNlYXJjaCIsInVzZUNhbGxiYWNrIiwibGltaXQiLCJxdWVyeSIsInRlcm0iLCJvcHRzIiwibGVuZ3RoIiwicmVzdWx0cyIsIk1hdHJpeENsaWVudFBlZyIsInNhZmVHZXQiLCJzZWFyY2hVc2VyRGlyZWN0b3J5IiwibWFwIiwidXNlciIsIkRpcmVjdG9yeU1lbWJlciIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJyZWFkeSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlVXNlckRpcmVjdG9yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uL01hdHJpeENsaWVudFBlZ1wiO1xuaW1wb3J0IHsgRGlyZWN0b3J5TWVtYmVyIH0gZnJvbSBcIi4uL3V0aWxzL2RpcmVjdC1tZXNzYWdlc1wiO1xuaW1wb3J0IHsgdXNlTGF0ZXN0UmVzdWx0IH0gZnJvbSBcIi4vdXNlTGF0ZXN0UmVzdWx0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJEaXJlY3RvcnlPcHRzIHtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIHF1ZXJ5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VVc2VyRGlyZWN0b3J5ID0gKCk6IHtcbiAgICByZWFkeTogYm9vbGVhbjtcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuICAgIHVzZXJzOiBEaXJlY3RvcnlNZW1iZXJbXTtcbiAgICBzZWFyY2gob3B0czogSVVzZXJEaXJlY3RvcnlPcHRzKTogUHJvbWlzZTxib29sZWFuPjtcbn0gPT4ge1xuICAgIGNvbnN0IFt1c2Vycywgc2V0VXNlcnNdID0gdXNlU3RhdGU8RGlyZWN0b3J5TWVtYmVyW10+KFtdKTtcblxuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAgIGNvbnN0IFt1cGRhdGVRdWVyeSwgdXBkYXRlUmVzdWx0XSA9IHVzZUxhdGVzdFJlc3VsdDx7IHRlcm06IHN0cmluZzsgbGltaXQ/OiBudW1iZXIgfSwgRGlyZWN0b3J5TWVtYmVyW10+KHNldFVzZXJzKTtcblxuICAgIGNvbnN0IHNlYXJjaCA9IHVzZUNhbGxiYWNrKFxuICAgICAgICBhc3luYyAoeyBsaW1pdCA9IDIwLCBxdWVyeTogdGVybSB9OiBJVXNlckRpcmVjdG9yeU9wdHMpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSB7IGxpbWl0LCB0ZXJtIH07XG4gICAgICAgICAgICB1cGRhdGVRdWVyeShvcHRzKTtcblxuICAgICAgICAgICAgaWYgKCF0ZXJtPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzZXRVc2VycyhbXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlc3VsdHMgfSA9IGF3YWl0IE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KCkuc2VhcmNoVXNlckRpcmVjdG9yeShvcHRzKTtcbiAgICAgICAgICAgICAgICB1cGRhdGVSZXN1bHQoXG4gICAgICAgICAgICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMubWFwKCh1c2VyKSA9PiBuZXcgRGlyZWN0b3J5TWVtYmVyKHVzZXIpKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDb3VsZCBub3QgZmV0Y2ggdXNlciBpbiB1c2VyIGRpcmVjdG9yeSBmb3IgcGFyYW1zXCIsIHsgbGltaXQsIHRlcm0gfSwgZSk7XG4gICAgICAgICAgICAgICAgdXBkYXRlUmVzdWx0KG9wdHMsIFtdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbdXBkYXRlUXVlcnksIHVwZGF0ZVJlc3VsdF0sXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHJlYWR5OiB0cnVlLFxuICAgICAgICBsb2FkaW5nLFxuICAgICAgICB1c2VycyxcbiAgICAgICAgc2VhcmNoLFxuICAgIH0gYXMgY29uc3Q7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxnQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsZUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQVpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWFPLE1BQU1JLGdCQUFnQixHQUFHQSxDQUFBLEtBSzNCO0VBQ0QsTUFBTSxDQUFDQyxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxHQUFHLElBQUFDLGVBQVEsRUFBb0IsRUFBRSxDQUFDO0VBRXpELE1BQU0sQ0FBQ0MsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBRyxJQUFBRixlQUFRLEVBQUMsS0FBSyxDQUFDO0VBRTdDLE1BQU0sQ0FBQ0csV0FBVyxFQUFFQyxZQUFZLENBQUMsR0FBRyxJQUFBQyxnQ0FBZSxFQUFzRE4sUUFBUSxDQUFDO0VBRWxILE1BQU1PLE1BQU0sR0FBRyxJQUFBQyxrQkFBVyxFQUN0QixPQUFPO0lBQUVDLEtBQUssR0FBRyxFQUFFO0lBQUVDLEtBQUssRUFBRUM7RUFBeUIsQ0FBQyxLQUF1QjtJQUN6RSxNQUFNQyxJQUFJLEdBQUc7TUFBRUgsS0FBSztNQUFFRTtJQUFLLENBQUM7SUFDNUJQLFdBQVcsQ0FBQ1EsSUFBSSxDQUFDO0lBRWpCLElBQUksQ0FBQ0QsSUFBSSxFQUFFRSxNQUFNLEVBQUU7TUFDZmIsUUFBUSxDQUFDLEVBQUUsQ0FBQztNQUNaLE9BQU8sSUFBSTtJQUNmO0lBRUEsSUFBSTtNQUNBRyxVQUFVLENBQUMsSUFBSSxDQUFDO01BQ2hCLE1BQU07UUFBRVc7TUFBUSxDQUFDLEdBQUcsTUFBTUMsZ0NBQWUsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsbUJBQW1CLENBQUNMLElBQUksQ0FBQztNQUM3RVAsWUFBWSxDQUNSTyxJQUFJLEVBQ0pFLE9BQU8sQ0FBQ0ksR0FBRyxDQUFFQyxJQUFJLElBQUssSUFBSUMsK0JBQWUsQ0FBQ0QsSUFBSSxDQUFDLENBQ25ELENBQUM7TUFDRCxPQUFPLElBQUk7SUFDZixDQUFDLENBQUMsT0FBT0UsQ0FBQyxFQUFFO01BQ1JDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLG1EQUFtRCxFQUFFO1FBQUVkLEtBQUs7UUFBRUU7TUFBSyxDQUFDLEVBQUVVLENBQUMsQ0FBQztNQUN0RmhCLFlBQVksQ0FBQ08sSUFBSSxFQUFFLEVBQUUsQ0FBQztNQUN0QixPQUFPLEtBQUs7SUFDaEIsQ0FBQyxTQUFTO01BQ05ULFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDckI7RUFDSixDQUFDLEVBQ0QsQ0FBQ0MsV0FBVyxFQUFFQyxZQUFZLENBQzlCLENBQUM7RUFFRCxPQUFPO0lBQ0htQixLQUFLLEVBQUUsSUFBSTtJQUNYdEIsT0FBTztJQUNQSCxLQUFLO0lBQ0xRO0VBQ0osQ0FBQztBQUNMLENBQUM7QUFBQ2tCLE9BQUEsQ0FBQTNCLGdCQUFBLEdBQUFBLGdCQUFBIiwiaWdub3JlTGlzdCI6W119