* Use userId to filter users in non-federated rooms.
* a line
* another line
* Add getDomain to Jest test
(cherry picked from commit 700068a558)
Co-authored-by: Will Hunt <will@half-shot.uk>
This commit is contained in:
@@ -358,20 +358,22 @@ export default class InviteDialog extends React.PureComponent<Props, IInviteDial
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.profilesStore = SdkContextClass.instance.userProfilesStore;
|
this.profilesStore = SdkContextClass.instance.userProfilesStore;
|
||||||
|
const cli = MatrixClientPeg.safeGet();
|
||||||
|
|
||||||
const excludedIds = new Set([MatrixClientPeg.safeGet().getUserId()!]);
|
const excludedIds = new Set([cli.getSafeUserId()]);
|
||||||
if (isRoomInvite(props)) {
|
if (isRoomInvite(props)) {
|
||||||
const room = MatrixClientPeg.safeGet().getRoom(props.roomId);
|
const room = cli.getRoom(props.roomId);
|
||||||
const isFederated = room?.currentState.getStateEvents(EventType.RoomCreate, "")?.getContent()["m.federate"];
|
|
||||||
if (!room) throw new Error("Room ID given to InviteDialog does not look like a room");
|
if (!room) throw new Error("Room ID given to InviteDialog does not look like a room");
|
||||||
|
const isFederated = room?.currentState.getStateEvents(EventType.RoomCreate, "")?.getContent()["m.federate"];
|
||||||
room.getMembersWithMembership(KnownMembership.Invite).forEach((m) => excludedIds.add(m.userId));
|
room.getMembersWithMembership(KnownMembership.Invite).forEach((m) => excludedIds.add(m.userId));
|
||||||
room.getMembersWithMembership(KnownMembership.Join).forEach((m) => excludedIds.add(m.userId));
|
room.getMembersWithMembership(KnownMembership.Join).forEach((m) => excludedIds.add(m.userId));
|
||||||
// add banned users, so we don't try to invite them
|
// add banned users, so we don't try to invite them
|
||||||
room.getMembersWithMembership(KnownMembership.Ban).forEach((m) => excludedIds.add(m.userId));
|
room.getMembersWithMembership(KnownMembership.Ban).forEach((m) => excludedIds.add(m.userId));
|
||||||
if (isFederated === false) {
|
const ourHomeserver = cli.getDomain();
|
||||||
|
if (isFederated === false && ourHomeserver) {
|
||||||
|
// If this room isn't federated, we must be on the same server.
|
||||||
// exclude users from external servers
|
// exclude users from external servers
|
||||||
const homeserver = props.roomId.split(":")[1];
|
this.excludeExternals(ourHomeserver, excludedIds);
|
||||||
this.excludeExternals(homeserver, excludedIds);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -385,7 +387,7 @@ export default class InviteDialog extends React.PureComponent<Props, IInviteDial
|
|||||||
numSuggestionsShown: INITIAL_ROOMS_SHOWN,
|
numSuggestionsShown: INITIAL_ROOMS_SHOWN,
|
||||||
serverResultsMixin: [],
|
serverResultsMixin: [],
|
||||||
threepidResultsMixin: [],
|
threepidResultsMixin: [],
|
||||||
canUseIdentityServer: !!MatrixClientPeg.safeGet().getIdentityServerUrl(),
|
canUseIdentityServer: !!cli.getIdentityServerUrl(),
|
||||||
tryingIdentityServer: false,
|
tryingIdentityServer: false,
|
||||||
consultFirst: false,
|
consultFirst: false,
|
||||||
dialPadValue: "",
|
dialPadValue: "",
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ const expectNoPill = (value: string) => {
|
|||||||
expect(getSearchField()).toHaveValue(value);
|
expect(getSearchField()).toHaveValue(value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const serverDomain = "example.org";
|
||||||
const roomId = "!111111111111111111:example.org";
|
const roomId = "!111111111111111111:example.org";
|
||||||
const aliceId = "@alice:example.org";
|
const aliceId = "@alice:example.org";
|
||||||
const aliceEmail = "foobar@email.com";
|
const aliceEmail = "foobar@email.com";
|
||||||
@@ -103,6 +104,7 @@ describe("InviteDialog", () => {
|
|||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
mockClient = getMockClientWithEventEmitter({
|
mockClient = getMockClientWithEventEmitter({
|
||||||
|
getDomain: jest.fn().mockReturnValue(serverDomain),
|
||||||
getUserId: jest.fn().mockReturnValue(bobId),
|
getUserId: jest.fn().mockReturnValue(bobId),
|
||||||
getSafeUserId: jest.fn().mockReturnValue(bobId),
|
getSafeUserId: jest.fn().mockReturnValue(bobId),
|
||||||
isGuest: jest.fn().mockReturnValue(false),
|
isGuest: jest.fn().mockReturnValue(false),
|
||||||
|
|||||||
Reference in New Issue
Block a user