matrix-react-sdk
Version:
SDK for matrix.org using React
54 lines (50 loc) • 7.42 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useGuestAccessInformation = void 0;
var _react = require("react");
var _matrix = require("matrix-js-sdk/src/matrix");
var _SdkConfig = _interopRequireDefault(require("../../SdkConfig"));
var _useRoomState = require("../useRoomState");
/*
Copyright 2024 New Vector Ltd.
Copyright 2024 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.
*/
/**
* Helper to retrieve the guest access related information for a room.
* @param room
* @returns The GuestAccessInformation which helps decide what options the user should be given.
*/
const useGuestAccessInformation = room => {
const guestSpaUrl = (0, _react.useMemo)(() => {
return _SdkConfig.default.get("element_call").guest_spa_url;
}, []);
// We use the direct function only in functions triggered by user interaction to avoid computation on every render.
const {
joinRule,
canInvite,
canChangeJoinRule
} = (0, _useRoomState.useRoomState)(room, roomState => ({
joinRule: room.getJoinRule(),
canInvite: room.canInvite(room.myUserId),
canChangeJoinRule: roomState.maySendStateEvent(_matrix.EventType.RoomJoinRules, room.myUserId)
}));
const isRoomJoinable = (0, _react.useMemo)(() => joinRule === _matrix.JoinRule.Public || joinRule === _matrix.JoinRule.Knock && canInvite, [canInvite, joinRule]);
const canInviteGuests = (0, _react.useMemo)(() => (canChangeJoinRule || isRoomJoinable) && guestSpaUrl !== undefined, [canChangeJoinRule, isRoomJoinable, guestSpaUrl]);
const isRoomJoinableFunction = () => {
const join = room.getJoinRule();
return join === _matrix.JoinRule.Public || join === _matrix.JoinRule.Knock && room.canInvite(room.myUserId);
};
return {
canInviteGuests,
guestSpaUrl,
isRoomJoinable: isRoomJoinableFunction,
canInvite
};
};
exports.useGuestAccessInformation = useGuestAccessInformation;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX21hdHJpeCIsIl9TZGtDb25maWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZVJvb21TdGF0ZSIsInVzZUd1ZXN0QWNjZXNzSW5mb3JtYXRpb24iLCJyb29tIiwiZ3Vlc3RTcGFVcmwiLCJ1c2VNZW1vIiwiU2RrQ29uZmlnIiwiZ2V0IiwiZ3Vlc3Rfc3BhX3VybCIsImpvaW5SdWxlIiwiY2FuSW52aXRlIiwiY2FuQ2hhbmdlSm9pblJ1bGUiLCJ1c2VSb29tU3RhdGUiLCJyb29tU3RhdGUiLCJnZXRKb2luUnVsZSIsIm15VXNlcklkIiwibWF5U2VuZFN0YXRlRXZlbnQiLCJFdmVudFR5cGUiLCJSb29tSm9pblJ1bGVzIiwiaXNSb29tSm9pbmFibGUiLCJKb2luUnVsZSIsIlB1YmxpYyIsIktub2NrIiwiY2FuSW52aXRlR3Vlc3RzIiwidW5kZWZpbmVkIiwiaXNSb29tSm9pbmFibGVGdW5jdGlvbiIsImpvaW4iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3Jvb20vdXNlR3Vlc3RBY2Nlc3NJbmZvcm1hdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyNCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBFdmVudFR5cGUsIEpvaW5SdWxlLCBSb29tIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgU2RrQ29uZmlnIGZyb20gXCIuLi8uLi9TZGtDb25maWdcIjtcbmltcG9ydCB7IHVzZVJvb21TdGF0ZSB9IGZyb20gXCIuLi91c2VSb29tU3RhdGVcIjtcblxuaW50ZXJmYWNlIEd1ZXN0QWNjZXNzSW5mb3JtYXRpb24ge1xuICAgIGNhbkludml0ZUd1ZXN0czogYm9vbGVhbjtcbiAgICBndWVzdFNwYVVybD86IHN0cmluZztcbiAgICBpc1Jvb21Kb2luYWJsZTogKCkgPT4gYm9vbGVhbjtcbiAgICBjYW5JbnZpdGU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogSGVscGVyIHRvIHJldHJpZXZlIHRoZSBndWVzdCBhY2Nlc3MgcmVsYXRlZCBpbmZvcm1hdGlvbiBmb3IgYSByb29tLlxuICogQHBhcmFtIHJvb21cbiAqIEByZXR1cm5zIFRoZSBHdWVzdEFjY2Vzc0luZm9ybWF0aW9uIHdoaWNoIGhlbHBzIGRlY2lkZSB3aGF0IG9wdGlvbnMgdGhlIHVzZXIgc2hvdWxkIGJlIGdpdmVuLlxuICovXG5leHBvcnQgY29uc3QgdXNlR3Vlc3RBY2Nlc3NJbmZvcm1hdGlvbiA9IChyb29tOiBSb29tKTogR3Vlc3RBY2Nlc3NJbmZvcm1hdGlvbiA9PiB7XG4gICAgY29uc3QgZ3Vlc3RTcGFVcmwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIFNka0NvbmZpZy5nZXQoXCJlbGVtZW50X2NhbGxcIikuZ3Vlc3Rfc3BhX3VybDtcbiAgICB9LCBbXSk7XG5cbiAgICAvLyBXZSB1c2UgdGhlIGRpcmVjdCBmdW5jdGlvbiBvbmx5IGluIGZ1bmN0aW9ucyB0cmlnZ2VyZWQgYnkgdXNlciBpbnRlcmFjdGlvbiB0byBhdm9pZCBjb21wdXRhdGlvbiBvbiBldmVyeSByZW5kZXIuXG4gICAgY29uc3QgeyBqb2luUnVsZSwgY2FuSW52aXRlLCBjYW5DaGFuZ2VKb2luUnVsZSB9ID0gdXNlUm9vbVN0YXRlKHJvb20sIChyb29tU3RhdGUpID0+ICh7XG4gICAgICAgIGpvaW5SdWxlOiByb29tLmdldEpvaW5SdWxlKCksXG4gICAgICAgIGNhbkludml0ZTogcm9vbS5jYW5JbnZpdGUocm9vbS5teVVzZXJJZCksXG4gICAgICAgIGNhbkNoYW5nZUpvaW5SdWxlOiByb29tU3RhdGUubWF5U2VuZFN0YXRlRXZlbnQoRXZlbnRUeXBlLlJvb21Kb2luUnVsZXMsIHJvb20ubXlVc2VySWQpLFxuICAgIH0pKTtcbiAgICBjb25zdCBpc1Jvb21Kb2luYWJsZSA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IGpvaW5SdWxlID09PSBKb2luUnVsZS5QdWJsaWMgfHwgKGpvaW5SdWxlID09PSBKb2luUnVsZS5Lbm9jayAmJiBjYW5JbnZpdGUpLFxuICAgICAgICBbY2FuSW52aXRlLCBqb2luUnVsZV0sXG4gICAgKTtcbiAgICBjb25zdCBjYW5JbnZpdGVHdWVzdHMgPSB1c2VNZW1vKFxuICAgICAgICAoKSA9PiAoY2FuQ2hhbmdlSm9pblJ1bGUgfHwgaXNSb29tSm9pbmFibGUpICYmIGd1ZXN0U3BhVXJsICE9PSB1bmRlZmluZWQsXG4gICAgICAgIFtjYW5DaGFuZ2VKb2luUnVsZSwgaXNSb29tSm9pbmFibGUsIGd1ZXN0U3BhVXJsXSxcbiAgICApO1xuXG4gICAgY29uc3QgaXNSb29tSm9pbmFibGVGdW5jdGlvbiA9ICgpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3Qgam9pbiA9IHJvb20uZ2V0Sm9pblJ1bGUoKTtcbiAgICAgICAgcmV0dXJuIGpvaW4gPT09IEpvaW5SdWxlLlB1YmxpYyB8fCAoam9pbiA9PT0gSm9pblJ1bGUuS25vY2sgJiYgcm9vbS5jYW5JbnZpdGUocm9vbS5teVVzZXJJZCkpO1xuICAgIH07XG5cbiAgICByZXR1cm4geyBjYW5JbnZpdGVHdWVzdHMsIGd1ZXN0U3BhVXJsLCBpc1Jvb21Kb2luYWJsZTogaXNSb29tSm9pbmFibGVGdW5jdGlvbiwgY2FuSW52aXRlIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksYUFBQSxHQUFBSixPQUFBO0FBWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1LLHlCQUF5QixHQUFJQyxJQUFVLElBQTZCO0VBQzdFLE1BQU1DLFdBQVcsR0FBRyxJQUFBQyxjQUFPLEVBQUMsTUFBTTtJQUM5QixPQUFPQyxrQkFBUyxDQUFDQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUNDLGFBQWE7RUFDdEQsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7RUFFTjtFQUNBLE1BQU07SUFBRUMsUUFBUTtJQUFFQyxTQUFTO0lBQUVDO0VBQWtCLENBQUMsR0FBRyxJQUFBQywwQkFBWSxFQUFDVCxJQUFJLEVBQUdVLFNBQVMsS0FBTTtJQUNsRkosUUFBUSxFQUFFTixJQUFJLENBQUNXLFdBQVcsQ0FBQyxDQUFDO0lBQzVCSixTQUFTLEVBQUVQLElBQUksQ0FBQ08sU0FBUyxDQUFDUCxJQUFJLENBQUNZLFFBQVEsQ0FBQztJQUN4Q0osaUJBQWlCLEVBQUVFLFNBQVMsQ0FBQ0csaUJBQWlCLENBQUNDLGlCQUFTLENBQUNDLGFBQWEsRUFBRWYsSUFBSSxDQUFDWSxRQUFRO0VBQ3pGLENBQUMsQ0FBQyxDQUFDO0VBQ0gsTUFBTUksY0FBYyxHQUFHLElBQUFkLGNBQU8sRUFDMUIsTUFBTUksUUFBUSxLQUFLVyxnQkFBUSxDQUFDQyxNQUFNLElBQUtaLFFBQVEsS0FBS1csZ0JBQVEsQ0FBQ0UsS0FBSyxJQUFJWixTQUFVLEVBQ2hGLENBQUNBLFNBQVMsRUFBRUQsUUFBUSxDQUN4QixDQUFDO0VBQ0QsTUFBTWMsZUFBZSxHQUFHLElBQUFsQixjQUFPLEVBQzNCLE1BQU0sQ0FBQ00saUJBQWlCLElBQUlRLGNBQWMsS0FBS2YsV0FBVyxLQUFLb0IsU0FBUyxFQUN4RSxDQUFDYixpQkFBaUIsRUFBRVEsY0FBYyxFQUFFZixXQUFXLENBQ25ELENBQUM7RUFFRCxNQUFNcUIsc0JBQXNCLEdBQUdBLENBQUEsS0FBZTtJQUMxQyxNQUFNQyxJQUFJLEdBQUd2QixJQUFJLENBQUNXLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLE9BQU9ZLElBQUksS0FBS04sZ0JBQVEsQ0FBQ0MsTUFBTSxJQUFLSyxJQUFJLEtBQUtOLGdCQUFRLENBQUNFLEtBQUssSUFBSW5CLElBQUksQ0FBQ08sU0FBUyxDQUFDUCxJQUFJLENBQUNZLFFBQVEsQ0FBRTtFQUNqRyxDQUFDO0VBRUQsT0FBTztJQUFFUSxlQUFlO0lBQUVuQixXQUFXO0lBQUVlLGNBQWMsRUFBRU0sc0JBQXNCO0lBQUVmO0VBQVUsQ0FBQztBQUM5RixDQUFDO0FBQUNpQixPQUFBLENBQUF6Qix5QkFBQSxHQUFBQSx5QkFBQSIsImlnbm9yZUxpc3QiOltdfQ==