matrix-react-sdk
Version:
SDK for matrix.org using React
49 lines (44 loc) • 5.21 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.shouldEncryptRoomWithSingle3rdPartyInvite = void 0;
var _DMRoomMap = _interopRequireDefault(require("../DMRoomMap"));
var _rooms = require("../rooms");
/*
Copyright 2024 New Vector Ltd.
Copyright 2023 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.
*/
/**
* Tests whether a DM room with exactly one third-party invite should be encrypted.
* If it should be encrypted, the third-party invitation event is also returned.
*/
const shouldEncryptRoomWithSingle3rdPartyInvite = room => {
// encryption not promoted via .well-known
if (!(0, _rooms.privateShouldBeEncrypted)(room.client)) return {
shouldEncrypt: false
};
// not a DM room
if (!_DMRoomMap.default.shared().getRoomIds().has(room.roomId)) return {
shouldEncrypt: false
};
// more than one room member / invite
if (room.getInvitedAndJoinedMemberCount() !== 1) return {
shouldEncrypt: false
};
const thirdPartyInvites = room.currentState.getStateEvents("m.room.third_party_invite") || [];
if (thirdPartyInvites.length === 1) {
return {
shouldEncrypt: true,
inviteEvent: thirdPartyInvites[0]
};
}
return {
shouldEncrypt: false
};
};
exports.shouldEncryptRoomWithSingle3rdPartyInvite = shouldEncryptRoomWithSingle3rdPartyInvite;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRE1Sb29tTWFwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcm9vbXMiLCJzaG91bGRFbmNyeXB0Um9vbVdpdGhTaW5nbGUzcmRQYXJ0eUludml0ZSIsInJvb20iLCJwcml2YXRlU2hvdWxkQmVFbmNyeXB0ZWQiLCJjbGllbnQiLCJzaG91bGRFbmNyeXB0IiwiRE1Sb29tTWFwIiwic2hhcmVkIiwiZ2V0Um9vbUlkcyIsImhhcyIsInJvb21JZCIsImdldEludml0ZWRBbmRKb2luZWRNZW1iZXJDb3VudCIsInRoaXJkUGFydHlJbnZpdGVzIiwiY3VycmVudFN0YXRlIiwiZ2V0U3RhdGVFdmVudHMiLCJsZW5ndGgiLCJpbnZpdGVFdmVudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvcm9vbS9zaG91bGRFbmNyeXB0Um9vbVdpdGhTaW5nbGUzcmRQYXJ0eUludml0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBNYXRyaXhFdmVudCwgUm9vbSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcblxuaW1wb3J0IERNUm9vbU1hcCBmcm9tIFwiLi4vRE1Sb29tTWFwXCI7XG5pbXBvcnQgeyBwcml2YXRlU2hvdWxkQmVFbmNyeXB0ZWQgfSBmcm9tIFwiLi4vcm9vbXNcIjtcblxuLyoqXG4gKiBUZXN0cyB3aGV0aGVyIGEgRE0gcm9vbSB3aXRoIGV4YWN0bHkgb25lIHRoaXJkLXBhcnR5IGludml0ZSBzaG91bGQgYmUgZW5jcnlwdGVkLlxuICogSWYgaXQgc2hvdWxkIGJlIGVuY3J5cHRlZCwgdGhlIHRoaXJkLXBhcnR5IGludml0YXRpb24gZXZlbnQgaXMgYWxzbyByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHNob3VsZEVuY3J5cHRSb29tV2l0aFNpbmdsZTNyZFBhcnR5SW52aXRlID0gKFxuICAgIHJvb206IFJvb20sXG4pOiB7IHNob3VsZEVuY3J5cHQ6IHRydWU7IGludml0ZUV2ZW50OiBNYXRyaXhFdmVudCB9IHwgeyBzaG91bGRFbmNyeXB0OiBmYWxzZTsgaW52aXRlRXZlbnQ/OiB1bmRlZmluZWQgfSA9PiB7XG4gICAgLy8gZW5jcnlwdGlvbiBub3QgcHJvbW90ZWQgdmlhIC53ZWxsLWtub3duXG4gICAgaWYgKCFwcml2YXRlU2hvdWxkQmVFbmNyeXB0ZWQocm9vbS5jbGllbnQpKSByZXR1cm4geyBzaG91bGRFbmNyeXB0OiBmYWxzZSB9O1xuXG4gICAgLy8gbm90IGEgRE0gcm9vbVxuICAgIGlmICghRE1Sb29tTWFwLnNoYXJlZCgpLmdldFJvb21JZHMoKS5oYXMocm9vbS5yb29tSWQpKSByZXR1cm4geyBzaG91bGRFbmNyeXB0OiBmYWxzZSB9O1xuXG4gICAgLy8gbW9yZSB0aGFuIG9uZSByb29tIG1lbWJlciAvIGludml0ZVxuICAgIGlmIChyb29tLmdldEludml0ZWRBbmRKb2luZWRNZW1iZXJDb3VudCgpICE9PSAxKSByZXR1cm4geyBzaG91bGRFbmNyeXB0OiBmYWxzZSB9O1xuXG4gICAgY29uc3QgdGhpcmRQYXJ0eUludml0ZXMgPSByb29tLmN1cnJlbnRTdGF0ZS5nZXRTdGF0ZUV2ZW50cyhcIm0ucm9vbS50aGlyZF9wYXJ0eV9pbnZpdGVcIikgfHwgW107XG5cbiAgICBpZiAodGhpcmRQYXJ0eUludml0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaG91bGRFbmNyeXB0OiB0cnVlLFxuICAgICAgICAgICAgaW52aXRlRXZlbnQ6IHRoaXJkUGFydHlJbnZpdGVzWzBdLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHNob3VsZEVuY3J5cHQ6IGZhbHNlIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBVUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSx5Q0FBeUMsR0FDbERDLElBQVUsSUFDOEY7RUFDeEc7RUFDQSxJQUFJLENBQUMsSUFBQUMsK0JBQXdCLEVBQUNELElBQUksQ0FBQ0UsTUFBTSxDQUFDLEVBQUUsT0FBTztJQUFFQyxhQUFhLEVBQUU7RUFBTSxDQUFDOztFQUUzRTtFQUNBLElBQUksQ0FBQ0Msa0JBQVMsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQ0MsVUFBVSxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDUCxJQUFJLENBQUNRLE1BQU0sQ0FBQyxFQUFFLE9BQU87SUFBRUwsYUFBYSxFQUFFO0VBQU0sQ0FBQzs7RUFFdEY7RUFDQSxJQUFJSCxJQUFJLENBQUNTLDhCQUE4QixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztJQUFFTixhQUFhLEVBQUU7RUFBTSxDQUFDO0VBRWhGLE1BQU1PLGlCQUFpQixHQUFHVixJQUFJLENBQUNXLFlBQVksQ0FBQ0MsY0FBYyxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRTtFQUU3RixJQUFJRixpQkFBaUIsQ0FBQ0csTUFBTSxLQUFLLENBQUMsRUFBRTtJQUNoQyxPQUFPO01BQ0hWLGFBQWEsRUFBRSxJQUFJO01BQ25CVyxXQUFXLEVBQUVKLGlCQUFpQixDQUFDLENBQUM7SUFDcEMsQ0FBQztFQUNMO0VBRUEsT0FBTztJQUFFUCxhQUFhLEVBQUU7RUFBTSxDQUFDO0FBQ25DLENBQUM7QUFBQ1ksT0FBQSxDQUFBaEIseUNBQUEsR0FBQUEseUNBQUEiLCJpZ25vcmVMaXN0IjpbXX0=