1
0
mirror of https://github.com/matrix-org/matrix-react-sdk.git synced 2025-07-30 02:21:17 +03:00

Introduce Membership type

This commit is contained in:
Stanislav Demydiuk
2024-03-11 17:16:53 +00:00
committed by Andy Balaam
parent 3c6fd58628
commit da99bad7b9
115 changed files with 582 additions and 526 deletions

View File

@ -102,7 +102,7 @@ function mkStubDM(roomId: string, userId: string) {
name: "Member",
rawDisplayName: "Member",
roomId: roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -111,7 +111,7 @@ function mkStubDM(roomId: string, userId: string) {
name: "Member",
rawDisplayName: "Member",
roomId: roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -120,7 +120,7 @@ function mkStubDM(roomId: string, userId: string) {
name: "Bot user",
rawDisplayName: "Bot user",
roomId: roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},

View File

@ -277,7 +277,7 @@ describe("RoomNotifs test", () => {
});
it("indicates the user has been invited to a channel", async () => {
room.updateMyMembership("invite");
room.updateMyMembership(Membership.Invite);
const { level, symbol, count } = determineUnreadState(room);
@ -290,9 +290,15 @@ describe("RoomNotifs test", () => {
jest.spyOn(SettingsStore, "getValue").mockImplementation((name) => {
return name === "feature_ask_to_join";
});
const roomMember = mkRoomMember(room.roomId, MatrixClientPeg.get()!.getSafeUserId(), "leave", true, {
membership: "knock",
});
const roomMember = mkRoomMember(
room.roomId,
MatrixClientPeg.get()!.getSafeUserId(),
Membership.Leave,
true,
{
membership: Membership.Knock,
},
);
jest.spyOn(room, "getMember").mockReturnValue(roomMember);
const { level, symbol, count } = determineUnreadState(room);

View File

@ -162,7 +162,7 @@ describe("SlashCommands", () => {
it("should warn about self demotion", async () => {
setCurrentRoom();
const member = new RoomMember(roomId, client.getSafeUserId());
member.membership = "join";
member.membership = Membership.Join;
member.powerLevel = 100;
room.getMember = () => member;
command.run(client, roomId, null, `${client.getUserId()} 0`);
@ -172,7 +172,7 @@ describe("SlashCommands", () => {
it("should default to 50 if no powerlevel specified", async () => {
setCurrentRoom();
const member = new RoomMember(roomId, "@user:server");
member.membership = "join";
member.membership = Membership.Join;
room.getMember = () => member;
command.run(client, roomId, null, member.userId);
expect(client.setPowerLevel).toHaveBeenCalledWith(roomId, member.userId, 50);
@ -191,7 +191,7 @@ describe("SlashCommands", () => {
it("should warn about self demotion", async () => {
setCurrentRoom();
const member = new RoomMember(roomId, client.getSafeUserId());
member.membership = "join";
member.membership = Membership.Join;
member.powerLevel = 100;
room.getMember = () => member;
command.run(client, roomId, null, client.getSafeUserId());
@ -366,7 +366,7 @@ describe("SlashCommands", () => {
describe("/join", () => {
beforeEach(() => {
jest.spyOn(dispatcher, "dispatch");
command = findCommand("join")!;
command = findCommand(Membership.Join)!;
});
it("should return usage if no args", () => {

View File

@ -504,12 +504,12 @@ describe("TextForEvent", () => {
type: "m.room.member",
sender: "@a:foo",
content: {
membership: "join",
membership: Membership.Join,
avatar_url: "b",
displayname: "Bob",
},
prev_content: {
membership: "join",
membership: Membership.Join,
avatar_url: "a",
displayname: "Andy",
},

View File

@ -171,8 +171,8 @@ describe("MessagePanel", function () {
user: "@user:id",
target: bobMember,
ts: ts0 + i * 1000,
mship: "join",
prevMship: "join",
mship: Membership.Join,
prevMship: Membership.Join,
name: "A user",
}),
);
@ -205,8 +205,8 @@ describe("MessagePanel", function () {
user: "@user:id",
target: bobMember,
ts: ts0 + i * 1000,
mship: "join",
prevMship: "join",
mship: Membership.Join,
prevMship: Membership.Join,
name: "A user",
}),
);
@ -245,7 +245,7 @@ describe("MessagePanel", function () {
user: alice,
target: aliceMember,
ts: ts0 + 1,
mship: "join",
mship: Membership.Join,
name: "Alice",
}),
mkEvent({
@ -285,7 +285,7 @@ describe("MessagePanel", function () {
skey: "@bob:example.org",
target: bobMember,
ts: ts0 + 5,
mship: "invite",
mship: Membership.Invite,
name: "Bob",
}),
];
@ -542,8 +542,8 @@ describe("MessagePanel", function () {
user: "@user:id",
target: bobMember,
ts: Date.now(),
mship: "join",
prevMship: "join",
mship: Membership.Join,
prevMship: Membership.Join,
name: "A user",
}),
];
@ -571,8 +571,8 @@ describe("MessagePanel", function () {
user: "@user:id",
target: bobMember,
ts: Date.now(),
mship: "join",
prevMship: "join",
mship: Membership.Join,
prevMship: Membership.Join,
name: "A user",
}),
...events,
@ -695,8 +695,8 @@ describe("MessagePanel", function () {
for (let i = 0; i < 100; i++) {
events.push(
TestUtilsMatrix.mkMembership({
mship: "join",
prevMship: "join",
mship: Membership.Join,
prevMship: Membership.Join,
room: "!room:id",
user: "@user:id",
event: true,
@ -716,8 +716,8 @@ describe("MessagePanel", function () {
for (let i = 0; i < 100; i++) {
events.push(
TestUtilsMatrix.mkMembership({
mship: "join",
prevMship: "join",
mship: Membership.Join,
prevMship: Membership.Join,
room: "!room:id",
user: "@user:id",
event: true,

View File

@ -238,7 +238,7 @@ describe("RoomView", () => {
});
it("updates url preview visibility on encryption state change", async () => {
room.getMyMembership = jest.fn().mockReturnValue("join");
room.getMyMembership = jest.fn().mockReturnValue(Membership.Join);
// we should be starting unencrypted
expect(cli.isCryptoEnabled()).toEqual(false);
expect(cli.isRoomEncrypted(room.roomId)).toEqual(false);
@ -583,7 +583,7 @@ describe("RoomView", () => {
it("allows to cancel a join request", async () => {
jest.spyOn(MatrixClientPeg, "safeGet").mockReturnValue(client);
jest.spyOn(client, "leave").mockResolvedValue({});
jest.spyOn(room, "getMyMembership").mockReturnValue("knock");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Knock);
await mountRoomView();
fireEvent.click(screen.getByRole("button", { name: "Cancel request" }));
@ -594,7 +594,7 @@ describe("RoomView", () => {
});
it("should close search results when edit is clicked", async () => {
room.getMyMembership = jest.fn().mockReturnValue("join");
room.getMyMembership = jest.fn().mockReturnValue(Membership.Join);
const eventMapper = (obj: Partial<IEvent>) => new MatrixEvent(obj);
@ -655,7 +655,7 @@ describe("RoomView", () => {
const room2 = new Room(`!${roomCount++}:example.org`, cli, "@alice:example.org");
rooms.set(room2.roomId, room2);
room.getMyMembership = jest.fn().mockReturnValue("join");
room.getMyMembership = jest.fn().mockReturnValue(Membership.Join);
const eventMapper = (obj: Partial<IEvent>) => new MatrixEvent(obj);

View File

@ -181,7 +181,7 @@ describe("SpaceHierarchy", () => {
mocked(client.getRoom).mockImplementation(
(roomId) => client.getRooms().find((room) => room.roomId === roomId) ?? null,
);
[room1, room2, space1, room3].forEach((r) => mocked(r.getMyMembership).mockReturnValue("leave"));
[room1, room2, space1, room3].forEach((r) => mocked(r.getMyMembership).mockReturnValue(Membership.Leave));
const hierarchyRoot: HierarchyRoom = {
room_id: root.roomId,

View File

@ -988,8 +988,8 @@ describe("TimelinePanel", () => {
events.forEach((event) => timelineSet.getLiveTimeline().addEvent(event, { toStartOfTimeline: true }));
const roomMembership = mkMembership({
mship: "join",
prevMship: "join",
mship: Membership.Join,
prevMship: Membership.Join,
user: authorId,
room: room.roomId,
event: true,
@ -999,7 +999,7 @@ describe("TimelinePanel", () => {
events.push(roomMembership);
const member = new RoomMember(room.roomId, authorId);
member.membership = "join";
member.membership = Membership.Join;
const roomState = new RoomState(room.roomId);
jest.spyOn(roomState, "getMember").mockReturnValue(member);

View File

@ -106,7 +106,7 @@ describe("RoomContextMenu", () => {
it("should render notification option for joined rooms", () => {
const chamber = EchoChamber.forRoom(room);
chamber.notificationVolume = RoomNotifState.Mute;
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
renderComponent();
expect(

View File

@ -105,7 +105,7 @@ describe("RoomGeneralContextMenu", () => {
});
it("does not render invite menu item when UIComponent customisations disable room invite", () => {
room.updateMyMembership("join");
room.updateMyMembership(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(true);
mocked(shouldShowComponent).mockReturnValue(false);
@ -116,7 +116,7 @@ describe("RoomGeneralContextMenu", () => {
});
it("renders invite menu item when UIComponent customisations enables room invite", () => {
room.updateMyMembership("join");
room.updateMyMembership(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(true);
mocked(shouldShowComponent).mockReturnValue(true);

View File

@ -25,7 +25,7 @@ describe("ConfirmUserActionDialog", () => {
const { asFragment } = render(
<ConfirmUserActionDialog
onFinished={jest.fn()}
member={mkRoomMember("123", "@user:test.com", "join")}
member={mkRoomMember("123", "@user:test.com", Membership.Join)}
action="Ban"
title="Ban this " // eg. 'Ban this user?'
/>,

View File

@ -163,7 +163,7 @@ describe("InviteDialog", () => {
mkMembership({
event: true,
room: roomId,
mship: "join",
mship: Membership.Join,
user: aliceId,
skey: aliceId,
}),

View File

@ -158,9 +158,9 @@ describe("Spotlight Dialog", () => {
beforeEach(() => {
mockedClient = mockClient({ rooms: [testPublicRoom], users: [testPerson] });
testRoom = mkRoom(mockedClient, "!test23:example.com");
mocked(testRoom.getMyMembership).mockReturnValue("join");
mocked(testRoom.getMyMembership).mockReturnValue(Membership.Join);
testLocalRoom = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test23", mockedClient, mockedClient.getUserId()!);
testLocalRoom.updateMyMembership("join");
testLocalRoom.updateMyMembership(Membership.Join);
mocked(mockedClient.getVisibleRooms).mockReturnValue([testRoom, testLocalRoom]);
jest.spyOn(DMRoomMap, "shared").mockReturnValue({
@ -169,7 +169,7 @@ describe("Spotlight Dialog", () => {
testDM = mkRoom(mockedClient, testDMRoomId);
testDM.name = "Chat with Alice";
mocked(testDM.getMyMembership).mockReturnValue("join");
mocked(testDM.getMyMembership).mockReturnValue(Membership.Join);
mocked(DMRoomMap.shared().getUserIdForRoomId).mockImplementation((roomId: string) => {
if (roomId === testDMRoomId) {

View File

@ -61,8 +61,8 @@ describe("EventListSummary", function () {
interface MembershipEventParams {
senderId?: string;
userId?: string;
membership: string;
prevMembership?: string;
membership: Membership;
prevMembership?: Membership;
}
const generateMembershipEvent = (
eventId: string,
@ -145,7 +145,9 @@ describe("EventListSummary", function () {
});
it("renders expanded events if there are less than props.threshold", function () {
const events = generateEvents([{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" }]);
const events = generateEvents([
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
]);
const props = {
events: events,
children: generateTiles(events),
@ -163,8 +165,8 @@ describe("EventListSummary", function () {
it("renders expanded events if there are less than props.threshold for join and leave", function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
]);
const props = {
events: events,
@ -184,9 +186,9 @@ describe("EventListSummary", function () {
it("renders collapsed events if events.length = props.threshold", function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
]);
const props = {
events: events,
@ -203,20 +205,20 @@ describe("EventListSummary", function () {
it("truncates long join,leave repetitions", function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
]);
const props = {
events: events,
@ -235,28 +237,28 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "invite",
prevMembership: Membership.Leave,
membership: Membership.Invite,
senderId: "@some_other_user:some.domain",
},
]);
@ -277,30 +279,30 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "ban", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Ban, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "invite",
prevMembership: Membership.Leave,
membership: Membership.Invite,
senderId: "@some_other_user:some.domain",
},
]);
@ -324,35 +326,35 @@ describe("EventListSummary", function () {
// user_1
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
// user_2
{
userId: "@user_2:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_2:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_2:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_2:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_2:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_2:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_2:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_2:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_2:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_2:some.domain",
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
]);
@ -374,17 +376,17 @@ describe("EventListSummary", function () {
it("handles many users following the same sequence of memberships", function () {
const events = generateEventsForUsers("@user_$:some.domain", 20, [
{
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ prevMembership: "leave", membership: "join" },
{ prevMembership: "join", membership: "leave" },
{ prevMembership: "leave", membership: "join" },
{ prevMembership: "join", membership: "leave" },
{ prevMembership: Membership.Leave, membership: Membership.Join },
{ prevMembership: Membership.Join, membership: Membership.Leave },
{ prevMembership: Membership.Leave, membership: Membership.Join },
{ prevMembership: Membership.Join, membership: Membership.Leave },
{
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
]);
@ -407,30 +409,30 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_2:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_1:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{
userId: "@user_1:some.domain",
prevMembership: "leave",
membership: "ban",
prevMembership: Membership.Leave,
membership: Membership.Ban,
senderId: "@some_other_user:some.domain",
},
{ userId: "@user_2:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_2:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_2:some.domain", prevMembership: "leave", membership: "join" },
{ userId: "@user_2:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_2:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_2:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
{ userId: "@user_2:some.domain", prevMembership: Membership.Leave, membership: Membership.Join },
{ userId: "@user_2:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
]);
const props = {
events: events,
@ -451,52 +453,52 @@ describe("EventListSummary", function () {
it("correctly identifies transitions", function () {
const events = generateEvents([
// invited
{ userId: "@user_1:some.domain", membership: "invite" },
{ userId: "@user_1:some.domain", membership: Membership.Invite },
// banned
{ userId: "@user_1:some.domain", membership: "ban" },
{ userId: "@user_1:some.domain", membership: Membership.Ban },
// joined
{ userId: "@user_1:some.domain", membership: "join" },
{ userId: "@user_1:some.domain", membership: Membership.Join },
// invite_reject
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
// left
{ userId: "@user_1:some.domain", prevMembership: "join", membership: "leave" },
{ userId: "@user_1:some.domain", prevMembership: Membership.Join, membership: Membership.Leave },
// invite_withdrawal
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
// unbanned
{
userId: "@user_1:some.domain",
prevMembership: "ban",
membership: "leave",
prevMembership: Membership.Ban,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
// kicked
{
userId: "@user_1:some.domain",
prevMembership: "join",
membership: "leave",
prevMembership: Membership.Join,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
// default for sender=target (leave)
{
userId: "@user_1:some.domain",
prevMembership: "????",
membership: "leave",
prevMembership: "????" as Membership,
membership: Membership.Leave,
senderId: "@user_1:some.domain",
},
// default for sender<>target (kicked)
{
userId: "@user_1:some.domain",
prevMembership: "????",
membership: "leave",
prevMembership: "????" as Membership,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
]);
@ -520,24 +522,24 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
{
userId: "@user_2:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
{
userId: "@user_2:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
senderId: "@some_other_user:some.domain",
},
]);
@ -560,13 +562,13 @@ describe("EventListSummary", function () {
const events = generateEvents([
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
{
userId: "@user_1:some.domain",
prevMembership: "invite",
membership: "leave",
prevMembership: Membership.Invite,
membership: Membership.Leave,
},
]);
const props = {
@ -584,10 +586,10 @@ describe("EventListSummary", function () {
it('handles a summary length = 2, with no "others"', function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", membership: "join" },
{ userId: "@user_1:some.domain", membership: "join" },
{ userId: "@user_2:some.domain", membership: "join" },
{ userId: "@user_2:some.domain", membership: "join" },
{ userId: "@user_1:some.domain", membership: Membership.Join },
{ userId: "@user_1:some.domain", membership: Membership.Join },
{ userId: "@user_2:some.domain", membership: Membership.Join },
{ userId: "@user_2:some.domain", membership: Membership.Join },
]);
const props = {
events: events,
@ -604,9 +606,9 @@ describe("EventListSummary", function () {
it('handles a summary length = 2, with 1 "other"', function () {
const events = generateEvents([
{ userId: "@user_1:some.domain", membership: "join" },
{ userId: "@user_2:some.domain", membership: "join" },
{ userId: "@user_3:some.domain", membership: "join" },
{ userId: "@user_1:some.domain", membership: Membership.Join },
{ userId: "@user_2:some.domain", membership: Membership.Join },
{ userId: "@user_3:some.domain", membership: Membership.Join },
]);
const props = {
events: events,
@ -622,7 +624,7 @@ describe("EventListSummary", function () {
});
it('handles a summary length = 2, with many "others"', function () {
const events = generateEventsForUsers("@user_$:some.domain", 20, [{ membership: "join" }]);
const events = generateEventsForUsers("@user_$:some.domain", 20, [{ membership: Membership.Join }]);
const props = {
events: events,
children: generateTiles(events),

View File

@ -21,7 +21,7 @@ import { mkRoomMember } from "../../../test-utils";
describe("<FacePile />", () => {
it("renders with a tooltip", () => {
const member = mkRoomMember("123", "456", "join");
const member = mkRoomMember("123", "456", Membership.Join);
const { asFragment } = render(
<FacePile members={[member]} size="36px" overflow={false} tooltipLabel="tooltip" />,

View File

@ -27,7 +27,9 @@ describe("<RoomFacePile />", () => {
DMRoomMap.makeShared(cli);
const room = mkRoom(cli, "!123");
jest.spyOn(room, "getJoinedMembers").mockReturnValue([mkRoomMember(room.roomId, "@bob:example.org", "join")]);
jest.spyOn(room, "getJoinedMembers").mockReturnValue([
mkRoomMember(room.roomId, "@bob:example.org", Membership.Join),
]);
const { asFragment } = render(
<TooltipProvider>

View File

@ -86,7 +86,7 @@ describe("<RoomSummaryCard />", () => {
state_key: "",
});
room.currentState.setStateEvents([roomCreateEvent]);
room.updateMyMembership("join");
room.updateMyMembership(Membership.Join);
jest.spyOn(Modal, "createDialog");
jest.spyOn(RightPanelStore.instance, "pushCard");

View File

@ -943,8 +943,8 @@ describe("<PowerLevelEditor />", () => {
describe("<RoomKickButton />", () => {
const defaultMember = new RoomMember(defaultRoomId, defaultUserId);
const memberWithInviteMembership = { ...defaultMember, membership: "invite" };
const memberWithJoinMembership = { ...defaultMember, membership: "join" };
const memberWithInviteMembership = { ...defaultMember, membership: Membership.Invite };
const memberWithJoinMembership = { ...defaultMember, membership: Membership.Join };
let defaultProps: Parameters<typeof RoomKickButton>[0];
beforeEach(() => {
@ -1031,7 +1031,7 @@ describe("<RoomKickButton />", () => {
// null vs their member followed by
// my member vs their member
const mockMyMember = { powerLevel: 1 };
const mockTheirMember = { membership: "invite", powerLevel: 0 };
const mockTheirMember = { membership: Membership.Invite, powerLevel: 0 };
const mockRoom = {
getMember: jest
@ -1052,7 +1052,7 @@ describe("<RoomKickButton />", () => {
describe("<BanToggleButton />", () => {
const defaultMember = new RoomMember(defaultRoomId, defaultUserId);
const memberWithBanMembership = { ...defaultMember, membership: "ban" };
const memberWithBanMembership = { ...defaultMember, membership: Membership.Ban };
let defaultProps: Parameters<typeof BanToggleButton>[0];
beforeEach(() => {
defaultProps = {
@ -1161,7 +1161,7 @@ describe("<BanToggleButton />", () => {
// null vs their member followed by
// my member vs their member
const mockMyMember = { powerLevel: 1 };
const mockTheirMember = { membership: "ban", powerLevel: 0 };
const mockTheirMember = { membership: Membership.Ban, powerLevel: 0 };
const mockRoom = {
getMember: jest
@ -1182,7 +1182,7 @@ describe("<BanToggleButton />", () => {
describe("<RoomAdminToolsContainer />", () => {
const defaultMember = new RoomMember(defaultRoomId, defaultUserId);
defaultMember.membership = "invite";
defaultMember.membership = Membership.Invite;
let defaultProps: Parameters<typeof RoomAdminToolsContainer>[0];
beforeEach(() => {
@ -1245,7 +1245,11 @@ describe("<RoomAdminToolsContainer />", () => {
mockMeMember.powerLevel = 51; // defaults to 50
mockRoom.getMember.mockReturnValueOnce(mockMeMember);
const defaultMemberWithPowerLevelAndJoinMembership = { ...defaultMember, powerLevel: 0, membership: "join" };
const defaultMemberWithPowerLevelAndJoinMembership = {
...defaultMember,
powerLevel: 0,
membership: Membership.Join,
};
renderComponent({
member: defaultMemberWithPowerLevelAndJoinMembership,
@ -1263,7 +1267,11 @@ describe("<RoomAdminToolsContainer />", () => {
mockMeMember.powerLevel = 51; // defaults to 50
mockRoom.getMember.mockReturnValueOnce(mockMeMember);
const defaultMemberWithPowerLevelAndJoinMembership = { ...defaultMember, powerLevel: 0, membership: "join" };
const defaultMemberWithPowerLevelAndJoinMembership = {
...defaultMember,
powerLevel: 0,
membership: Membership.Join,
};
renderComponent({
member: defaultMemberWithPowerLevelAndJoinMembership,

View File

@ -906,7 +906,7 @@ function mkJoinEvent(roomId: string, userId: string) {
room: roomId,
user: userId,
content: {
membership: "join",
membership: Membership.Join,
avatar_url: "mxc://example.org/" + userId,
},
});

View File

@ -170,7 +170,7 @@ describe("MemberList", () => {
const usersPerLevel = 2;
for (let i = 0; i < usersPerLevel; i++) {
const adminUser = new RoomMember(memberListRoom.roomId, `@admin${i}:localhost`);
adminUser.membership = "join";
adminUser.membership = Membership.Join;
adminUser.powerLevel = 100;
adminUser.user = User.createUser(adminUser.userId, client);
adminUser.user.currentlyActive = true;
@ -180,7 +180,7 @@ describe("MemberList", () => {
adminUsers.push(adminUser);
const moderatorUser = new RoomMember(memberListRoom.roomId, `@moderator${i}:localhost`);
moderatorUser.membership = "join";
moderatorUser.membership = Membership.Join;
moderatorUser.powerLevel = 50;
moderatorUser.user = User.createUser(moderatorUser.userId, client);
moderatorUser.user.currentlyActive = true;
@ -190,7 +190,7 @@ describe("MemberList", () => {
moderatorUsers.push(moderatorUser);
const defaultUser = new RoomMember(memberListRoom.roomId, `@default${i}:localhost`);
defaultUser.membership = "join";
defaultUser.membership = Membership.Join;
defaultUser.powerLevel = 0;
defaultUser.user = User.createUser(defaultUser.userId, client);
defaultUser.user.currentlyActive = true;
@ -402,7 +402,7 @@ describe("MemberList", () => {
});
it("renders disabled invite button when current user is a member but does not have rights to invite", async () => {
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(false);
renderComponent();
@ -413,7 +413,7 @@ describe("MemberList", () => {
});
it("renders enabled invite button when current user is a member and has rights to invite", async () => {
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(true);
renderComponent();
@ -424,7 +424,7 @@ describe("MemberList", () => {
it("opens room inviter on button click", async () => {
jest.spyOn(defaultDispatcher, "dispatch");
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
jest.spyOn(room, "canInvite").mockReturnValue(true);
renderComponent();

View File

@ -140,7 +140,7 @@ describe("UnreadNotificationBadge", () => {
});
it("adds a warning for invites", () => {
room.updateMyMembership("invite");
room.updateMyMembership(Membership.Invite);
render(getComponent());
expect(screen.queryByText("!")).not.toBeNull();
});

View File

@ -154,7 +154,7 @@ describe("RoomHeader", () => {
name: "Member",
rawDisplayName: "Member",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -172,7 +172,7 @@ describe("RoomHeader", () => {
name: "Member",
rawDisplayName: "Member",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -181,7 +181,7 @@ describe("RoomHeader", () => {
name: "Member",
rawDisplayName: "Member",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -190,7 +190,7 @@ describe("RoomHeader", () => {
name: "Member",
rawDisplayName: "Member",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -199,7 +199,7 @@ describe("RoomHeader", () => {
name: "Bot user",
rawDisplayName: "Bot user",
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => "mxc://avatar.url/image.png",
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
},
@ -703,7 +703,7 @@ function mockRoomMembers(room: Room, count: number) {
name: `Member ${index}`,
rawDisplayName: `Member ${index}`,
roomId: room.roomId,
membership: "join",
membership: Membership.Join,
getAvatarUrl: () => `mxc://avatar.url/user-${index}.png`,
getMxcAvatarUrl: () => `mxc://avatar.url/user-${index}.png`,
}));

View File

@ -111,15 +111,26 @@ describe("RoomKnocksBar", () => {
const other = new RoomMember(roomId, "@doe:example.org");
bob.setMembershipEvent(
new MatrixEvent({ content: { displayname: "Bob", membership: "knock" }, type: EventType.RoomMember }),
new MatrixEvent({
content: { displayname: "Bob", membership: Membership.Knock },
type: EventType.RoomMember,
}),
);
jane.setMembershipEvent(
new MatrixEvent({ content: { displayname: "Jane", membership: "knock" }, type: EventType.RoomMember }),
new MatrixEvent({
content: { displayname: "Jane", membership: Membership.Knock },
type: EventType.RoomMember,
}),
);
john.setMembershipEvent(
new MatrixEvent({ content: { displayname: "John", membership: "knock" }, type: EventType.RoomMember }),
new MatrixEvent({
content: { displayname: "John", membership: Membership.Knock },
type: EventType.RoomMember,
}),
);
other.setMembershipEvent(
new MatrixEvent({ content: { membership: Membership.Knock }, type: EventType.RoomMember }),
);
other.setMembershipEvent(new MatrixEvent({ content: { membership: "knock" }, type: EventType.RoomMember }));
beforeEach(async () => {
await clearAllModals();
@ -178,7 +189,7 @@ describe("RoomKnocksBar", () => {
it("renders a link to open the room settings people tab", () => {
bob.setMembershipEvent(
new MatrixEvent({
content: { displayname: "Bob", membership: "knock", reason: "some reason" },
content: { displayname: "Bob", membership: Membership.Knock, reason: "some reason" },
type: EventType.RoomMember,
}),
);

View File

@ -49,10 +49,10 @@ const makeMockRoomMember = ({
}: {
userId?: string;
isKicked?: boolean;
membership?: "invite" | "ban" | "leave";
membership?: Membership.Invite | Membership.Ban | Membership.Leave;
content?: Partial<IContent>;
memberContent?: Partial<IContent>;
oldMembership?: "join" | "knock";
oldMembership?: Membership.Join | Membership.Knock;
}) =>
({
userId,
@ -180,7 +180,7 @@ describe("<RoomPreviewBar />", () => {
it("renders denied request message", () => {
const room = createRoom(roomId, otherUserId);
jest.spyOn(room, "getMember").mockReturnValue(
makeMockRoomMember({ isKicked: true, membership: "leave", oldMembership: "knock" }),
makeMockRoomMember({ isKicked: true, membership: Membership.Leave, oldMembership: Membership.Knock }),
);
const component = getComponent({ room, promptAskToJoin: true });
@ -191,7 +191,7 @@ describe("<RoomPreviewBar />", () => {
const onForgetClick = jest.fn();
const room = createRoom(roomId, otherUserId);
jest.spyOn(room, "getMember").mockReturnValue(
makeMockRoomMember({ isKicked: true, membership: "leave", oldMembership: "knock" }),
makeMockRoomMember({ isKicked: true, membership: Membership.Leave, oldMembership: Membership.Knock }),
);
const component = getComponent({ room, promptAskToJoin: true, onForgetClick });
@ -201,7 +201,7 @@ describe("<RoomPreviewBar />", () => {
it("renders banned message", () => {
const room = createRoom(roomId, otherUserId);
jest.spyOn(room, "getMember").mockReturnValue(makeMockRoomMember({ membership: "ban" }));
jest.spyOn(room, "getMember").mockReturnValue(makeMockRoomMember({ membership: Membership.Ban }));
const component = getComponent({ loading: true, room });
expect(getMessage(component)).toMatchSnapshot();
@ -244,8 +244,8 @@ describe("<RoomPreviewBar />", () => {
const userMember = makeMockRoomMember({ userId });
const userMemberWithDmInvite = makeMockRoomMember({
userId,
membership: "invite",
memberContent: { is_direct: true, membership: "invite" },
membership: Membership.Invite,
memberContent: { is_direct: true, membership: Membership.Invite },
});
const inviterMember = makeMockRoomMember({
userId: inviterUserId,

View File

@ -68,7 +68,7 @@ describe("RoomPreviewCard", () => {
it("shows a beta pill on Jitsi video room invites", async () => {
jest.spyOn(room, "getType").mockReturnValue(RoomType.ElementVideo);
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
enabledFeatures = ["feature_video_rooms"];
await renderPreview();
@ -77,7 +77,7 @@ describe("RoomPreviewCard", () => {
it("shows a beta pill on Element video room invites", async () => {
jest.spyOn(room, "getType").mockReturnValue(RoomType.UnstableCall);
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
enabledFeatures = ["feature_video_rooms", "feature_element_call_video_rooms"];
await renderPreview();
@ -85,7 +85,7 @@ describe("RoomPreviewCard", () => {
});
it("doesn't show a beta pill on normal invites", async () => {
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
await renderPreview();
expect(screen.queryByRole("button", { name: /beta/i })).toBeNull();
@ -93,7 +93,7 @@ describe("RoomPreviewCard", () => {
it("shows instructions on Jitsi video rooms invites if video rooms are disabled", async () => {
jest.spyOn(room, "getType").mockReturnValue(RoomType.ElementVideo);
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
await renderPreview();
screen.getByText(/enable video rooms in labs/i);
@ -101,7 +101,7 @@ describe("RoomPreviewCard", () => {
it("shows instructions on Element video rooms invites if video rooms are disabled", async () => {
jest.spyOn(room, "getType").mockReturnValue(RoomType.UnstableCall);
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
enabledFeatures = ["feature_element_call_video_rooms"];
await renderPreview();

View File

@ -187,7 +187,7 @@ describe("RoomTile", () => {
return name === "feature_ask_to_join";
});
mocked(shouldShowComponent).mockReturnValue(true);
jest.spyOn(room, "getMyMembership").mockReturnValue("knock");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Knock);
const { container } = renderRoomTile();
expect(container.querySelector(".mx_RoomTile_sticky")).toBeInTheDocument();
expect(screen.queryByRole("button", { name: "Room options" })).not.toBeInTheDocument();
@ -198,9 +198,15 @@ describe("RoomTile", () => {
return name === "feature_ask_to_join";
});
mocked(shouldShowComponent).mockReturnValue(true);
const roomMember = mkRoomMember(room.roomId, MatrixClientPeg.get()!.getSafeUserId(), "leave", true, {
membership: "knock",
});
const roomMember = mkRoomMember(
room.roomId,
MatrixClientPeg.get()!.getSafeUserId(),
Membership.Leave,
true,
{
membership: Membership.Knock,
},
);
jest.spyOn(room, "getMember").mockReturnValue(roomMember);
const { container } = renderRoomTile();
expect(container.querySelector(".mx_RoomTile_sticky")).toBeInTheDocument();

View File

@ -177,7 +177,7 @@ describe("<JoinRuleSettings />", () => {
const memberBob = new RoomMember(roomId, "@bob:server.org");
const memberCharlie = new RoomMember(roomId, "@charlie:server.org");
jest.spyOn(room, "getMembersWithMembership").mockImplementation((membership) =>
membership === "join" ? [memberAlice, memberBob] : [memberCharlie],
membership === Membership.Join ? [memberAlice, memberBob] : [memberCharlie],
);
const upgradedRoom = new Room(newRoomId, client, userId);
setRoomStateEvents(upgradedRoom, preferredRoomVersion);

View File

@ -91,7 +91,7 @@ describe("PeopleRoomSettingsTab", () => {
content: {
avatar_url: "mxc://example.org/albert-einstein.png",
displayname: "Albert Einstein",
membership: "knock",
membership: Membership.Knock,
reason,
},
origin_server_ts: -464140800000,
@ -110,7 +110,7 @@ describe("PeopleRoomSettingsTab", () => {
new MatrixEvent({
content: {
displayname: "albert.einstein",
membership: "knock",
membership: Membership.Knock,
},
type: EventType.RoomMember,
}),
@ -138,7 +138,7 @@ describe("PeopleRoomSettingsTab", () => {
new MatrixEvent({
content: {
displayname: "albert.einstein",
membership: "knock",
membership: Membership.Knock,
reason,
},
type: EventType.RoomMember,

View File

@ -197,7 +197,7 @@ describe("RolesRoomSettingsTab", () => {
new MatrixEvent({
type: EventType.RoomMember,
content: {
membership: "ban",
membership: Membership.Ban,
reason: "just testing",
},
sender: userId,
@ -218,7 +218,7 @@ describe("RolesRoomSettingsTab", () => {
new MatrixEvent({
type: EventType.RoomMember,
content: {
membership: "ban",
membership: Membership.Ban,
reason: "just testing",
},
sender: userId,

View File

@ -49,7 +49,7 @@ describe("useRoomMembers", () => {
state_key: "!user:server",
room_id: room.roomId,
content: {
membership: "join",
membership: Membership.Join,
},
}),
]);
@ -85,7 +85,7 @@ describe("useRoomMemberCount", () => {
state_key: "!user:server",
room_id: room.roomId,
content: {
membership: "join",
membership: Membership.Join,
},
}),
]);
@ -109,14 +109,14 @@ describe("useMyRoomMembership", () => {
});
it("should update on RoomState.Members events", async () => {
room.updateMyMembership("join");
room.updateMyMembership(Membership.Join);
const { result } = render(room);
expect(result.current).toBe("join");
expect(result.current).toBe(Membership.Join);
act(() => {
room.updateMyMembership("leave");
room.updateMyMembership(Membership.Leave);
});
await waitFor(() => expect(result.current).toBe("leave"));
await waitFor(() => expect(result.current).toBe(Membership.Leave));
});
});

View File

@ -66,7 +66,7 @@ describe("useUnreadNotifications", () => {
});
it("indicates the user has been invited to a channel", async () => {
room.updateMyMembership("invite");
room.updateMyMembership(Membership.Invite);
const { result } = renderHook(() => useUnreadNotifications(room));
const { level, symbol, count } = result.current;

View File

@ -95,7 +95,7 @@ const setUpClientRoomAndStores = (): {
}
});
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
client.getRoom.mockImplementation((roomId) => (roomId === room.roomId ? room : null));
client.getRoom.mockImplementation((roomId) => (roomId === room.roomId ? room : null));
@ -380,7 +380,7 @@ describe("JitsiCall", () => {
it("disconnects when we leave the room", async () => {
await call.start();
expect(call.connectionState).toBe(ConnectionState.Connected);
room.emit(RoomEvent.MyMembership, room, "leave");
room.emit(RoomEvent.MyMembership, room, Membership.Leave);
expect(call.connectionState).toBe(ConnectionState.Disconnected);
});
@ -395,7 +395,7 @@ describe("JitsiCall", () => {
it("remains connected if we stay in the room", async () => {
await call.start();
expect(call.connectionState).toBe(ConnectionState.Connected);
room.emit(RoomEvent.MyMembership, room, "join");
room.emit(RoomEvent.MyMembership, room, Membership.Join);
expect(call.connectionState).toBe(ConnectionState.Connected);
});
@ -911,14 +911,14 @@ describe("ElementCall", () => {
it("disconnects when we leave the room", async () => {
await callConnectProcedure(call);
expect(call.connectionState).toBe(ConnectionState.Connected);
room.emit(RoomEvent.MyMembership, room, "leave");
room.emit(RoomEvent.MyMembership, room, Membership.Leave);
expect(call.connectionState).toBe(ConnectionState.Disconnected);
});
it("remains connected if we stay in the room", async () => {
await callConnectProcedure(call);
expect(call.connectionState).toBe(ConnectionState.Connected);
room.emit(RoomEvent.MyMembership, room, "join");
room.emit(RoomEvent.MyMembership, room, Membership.Join);
expect(call.connectionState).toBe(ConnectionState.Connected);
});

View File

@ -55,7 +55,7 @@ describe("MemberListStore", () => {
type: EventType.RoomMember,
state_key: alice,
content: {
membership: "join",
membership: Membership.Join,
},
sender: alice,
room_id: roomId,
@ -77,8 +77,8 @@ describe("MemberListStore", () => {
});
it("loads members in a room", async () => {
addMember(room, bob, "invite");
addMember(room, charlie, "leave");
addMember(room, bob, Membership.Invite);
addMember(room, charlie, Membership.Leave);
const { invited, joined } = await store.loadMemberList(roomId);
expect(invited).toEqual([room.getMember(bob)]);
@ -92,8 +92,8 @@ describe("MemberListStore", () => {
});
it("sorts by power level", async () => {
addMember(room, bob, "join");
addMember(room, charlie, "join");
addMember(room, bob, Membership.Join);
addMember(room, charlie, Membership.Join);
setPowerLevels(room, {
users: {
[alice]: 100,
@ -109,8 +109,8 @@ describe("MemberListStore", () => {
it("sorts by name if power level is equal", async () => {
const doris = "@doris:bar";
addMember(room, bob, "join");
addMember(room, charlie, "join");
addMember(room, bob, Membership.Join);
addMember(room, charlie, Membership.Join);
setPowerLevels(room, {
users_default: 10,
});
@ -120,7 +120,7 @@ describe("MemberListStore", () => {
expect(joined).toEqual([room.getMember(alice), room.getMember(bob), room.getMember(charlie)]);
// Ensure it sorts by display name if they are set
addMember(room, doris, "join", "AAAAA");
addMember(room, doris, Membership.Join, "AAAAA");
({ invited, joined } = await store.loadMemberList(roomId));
expect(invited).toEqual([]);
expect(joined).toEqual([
@ -134,15 +134,15 @@ describe("MemberListStore", () => {
it("filters based on a search query", async () => {
const mice = "@mice:bar";
const zorro = "@zorro:bar";
addMember(room, bob, "join");
addMember(room, mice, "join");
addMember(room, bob, Membership.Join);
addMember(room, mice, Membership.Join);
let { invited, joined } = await store.loadMemberList(roomId, "ice");
expect(invited).toEqual([]);
expect(joined).toEqual([room.getMember(alice), room.getMember(mice)]);
// Ensure it filters by display name if they are set
addMember(room, zorro, "join", "ice ice baby");
addMember(room, zorro, Membership.Join, "ice ice baby");
({ invited, joined } = await store.loadMemberList(roomId, "ice"));
expect(invited).toEqual([]);
expect(joined).toEqual([room.getMember(alice), room.getMember(zorro), room.getMember(mice)]);
@ -180,7 +180,7 @@ describe("MemberListStore", () => {
type: EventType.RoomMember,
state_key: bob,
content: {
membership: "join",
membership: Membership.Join,
displayname: "Bob",
},
sender: bob,

View File

@ -556,7 +556,7 @@ describe("OwnBeaconStore", () => {
it("destroys and removes beacons when current user leaves room", async () => {
// alice leaves room1
const membershipEvent = makeMembershipEvent(room1Id, aliceId, "leave");
const membershipEvent = makeMembershipEvent(room1Id, aliceId, Membership.Leave);
const member = new RoomMember(room1Id, aliceId);
member.setMembershipEvent(membershipEvent);

View File

@ -57,13 +57,13 @@ const fav2 = "!fav2:server";
const fav3 = "!fav3:server";
const dm1 = "!dm1:server";
const dm1Partner = new RoomMember(dm1, "@dm1Partner:server");
dm1Partner.membership = "join";
dm1Partner.membership = Membership.Join;
const dm2 = "!dm2:server";
const dm2Partner = new RoomMember(dm2, "@dm2Partner:server");
dm2Partner.membership = "join";
dm2Partner.membership = Membership.Join;
const dm3 = "!dm3:server";
const dm3Partner = new RoomMember(dm3, "@dm3Partner:server");
dm3Partner.membership = "join";
dm3Partner.membership = Membership.Join;
const orphan1 = "!orphan1:server";
const orphan2 = "!orphan2:server";
const invite1 = "!invite1:server";
@ -289,7 +289,7 @@ describe("SpaceStore", () => {
});
it("invite to a subspace is only shown at the top level", async () => {
mkSpace(invite1).getMyMembership.mockReturnValue("invite");
mkSpace(invite1).getMyMembership.mockReturnValue(Membership.Invite);
mkSpace(space1, [invite1]);
await run();
@ -335,20 +335,20 @@ describe("SpaceStore", () => {
});
[invite1, invite2].forEach((roomId) => {
mocked(client.getRoom(roomId)!).getMyMembership.mockReturnValue("invite");
mocked(client.getRoom(roomId)).getMyMembership.mockReturnValue(Membership.Invite);
});
// have dmPartner1 be in space1 with you
const mySpace1Member = new RoomMember(space1, testUserId);
mySpace1Member.membership = "join";
(rooms.find((r) => r.roomId === space1)!.getMembers as jest.Mock).mockReturnValue([
mySpace1Member.membership = Membership.Join;
(rooms.find((r) => r.roomId === space1).getMembers as jest.Mock).mockReturnValue([
mySpace1Member,
dm1Partner,
]);
// have dmPartner2 be in space2 with you
const mySpace2Member = new RoomMember(space2, testUserId);
mySpace2Member.membership = "join";
(rooms.find((r) => r.roomId === space2)!.getMembers as jest.Mock).mockReturnValue([
mySpace2Member.membership = Membership.Join;
(rooms.find((r) => r.roomId === space2).getMembers as jest.Mock).mockReturnValue([
mySpace2Member,
dm2Partner,
]);
@ -683,16 +683,16 @@ describe("SpaceStore", () => {
it("should add new DM Invites to the People Space Notification State", async () => {
mkRoom(dm1);
mocked(client.getRoom(dm1)!).getMyMembership.mockReturnValue("join");
mocked(client.getRoom(dm1)!).getMyMembership.mockReturnValue(Membership.Join);
mocked(client).getRoom.mockImplementation((roomId) => rooms.find((room) => room.roomId === roomId) || null);
await run();
mkRoom(dm2);
const cliDm2 = client.getRoom(dm2)!;
mocked(cliDm2).getMyMembership.mockReturnValue("invite");
mocked(cliDm2).getMyMembership.mockReturnValue(Membership.Invite);
mocked(client).getRoom.mockImplementation((roomId) => rooms.find((room) => room.roomId === roomId) || null);
client.emit(RoomEvent.MyMembership, cliDm2, "invite");
client.emit(RoomEvent.MyMembership, cliDm2, Membership.Invite);
[dm1, dm2].forEach((d) => {
expect(
@ -721,9 +721,9 @@ describe("SpaceStore", () => {
await run();
expect(store.spacePanelSpaces).toStrictEqual([space]);
space.getMyMembership.mockReturnValue("leave");
space.getMyMembership.mockReturnValue(Membership.Leave);
const prom = testUtils.emitPromise(store, UPDATE_TOP_LEVEL_SPACES);
client.emit(RoomEvent.MyMembership, space, "leave", "join");
client.emit(RoomEvent.MyMembership, space, Membership.Leave, Membership.Join);
await prom;
expect(store.spacePanelSpaces).toStrictEqual([]);
});
@ -733,7 +733,7 @@ describe("SpaceStore", () => {
expect(store.spacePanelSpaces).toStrictEqual([]);
expect(store.invitedSpaces).toStrictEqual([]);
const space = mkSpace(space1);
space.getMyMembership.mockReturnValue("invite");
space.getMyMembership.mockReturnValue(Membership.Invite);
const prom = testUtils.emitPromise(store, UPDATE_INVITED_SPACES);
client.emit(ClientEvent.Room, space);
await prom;
@ -743,14 +743,14 @@ describe("SpaceStore", () => {
it("updates state when space invite is accepted", async () => {
const space = mkSpace(space1);
space.getMyMembership.mockReturnValue("invite");
space.getMyMembership.mockReturnValue(Membership.Invite);
await run();
expect(store.spacePanelSpaces).toStrictEqual([]);
expect(store.invitedSpaces).toStrictEqual([space]);
space.getMyMembership.mockReturnValue("join");
space.getMyMembership.mockReturnValue(Membership.Join);
const prom = testUtils.emitPromise(store, UPDATE_TOP_LEVEL_SPACES);
client.emit(RoomEvent.MyMembership, space, "join", "invite");
client.emit(RoomEvent.MyMembership, space, Membership.Join, Membership.Invite);
await prom;
expect(store.spacePanelSpaces).toStrictEqual([space]);
expect(store.invitedSpaces).toStrictEqual([]);
@ -758,14 +758,14 @@ describe("SpaceStore", () => {
it("updates state when space invite is rejected", async () => {
const space = mkSpace(space1);
space.getMyMembership.mockReturnValue("invite");
space.getMyMembership.mockReturnValue(Membership.Invite);
await run();
expect(store.spacePanelSpaces).toStrictEqual([]);
expect(store.invitedSpaces).toStrictEqual([space]);
space.getMyMembership.mockReturnValue("leave");
space.getMyMembership.mockReturnValue(Membership.Leave);
const prom = testUtils.emitPromise(store, UPDATE_INVITED_SPACES);
client.emit(RoomEvent.MyMembership, space, "leave", "invite");
client.emit(RoomEvent.MyMembership, space, Membership.Leave, Membership.Invite);
await prom;
expect(store.spacePanelSpaces).toStrictEqual([]);
expect(store.invitedSpaces).toStrictEqual([]);
@ -783,7 +783,7 @@ describe("SpaceStore", () => {
expect(store.isRoomInSpace(MetaSpace.Home, invite1)).toBeFalsy();
const invite = mkRoom(invite1);
invite.getMyMembership.mockReturnValue("invite");
invite.getMyMembership.mockReturnValue(Membership.Invite);
const prom = testUtils.emitPromise(store, space1);
client.emit(ClientEvent.Room, space);
await prom;
@ -845,7 +845,7 @@ describe("SpaceStore", () => {
room: spaceId,
user: client.getUserId()!,
skey: user.userId,
content: { membership: "join" },
content: { membership: Membership.Join },
ts: Date.now(),
});
const spaceRoom = client.getRoom(spaceId)!;
@ -926,7 +926,7 @@ describe("SpaceStore", () => {
beforeEach(async () => {
mkRoom(room1); // not a space
mkSpace(space1, [mkSpace(space2).roomId]);
mkSpace(space3).getMyMembership.mockReturnValue("invite");
mkSpace(space3).getMyMembership.mockReturnValue(Membership.Invite);
await run();
store.setActiveSpace(MetaSpace.Home);
expect(store.activeSpace).toBe(MetaSpace.Home);
@ -986,7 +986,7 @@ describe("SpaceStore", () => {
const event = mkEvent({
event: true,
type: EventType.RoomMember,
content: { membership: "join" },
content: { membership: Membership.Join },
skey: dm1Partner.userId,
user: dm1Partner.userId,
room: space1,
@ -994,7 +994,7 @@ describe("SpaceStore", () => {
space.getMember.mockImplementation((userId) => {
if (userId === dm1Partner.userId) {
const member = new RoomMember(space1, dm1Partner.userId);
member.membership = "join";
member.membership = Membership.Join;
return member;
}
return null;
@ -1249,15 +1249,15 @@ describe("SpaceStore", () => {
// receive invite to space
const rootSpace = mkSpace(space1, [room1, room2, space2]);
rootSpace.getMyMembership.mockReturnValue("invite");
rootSpace.getMyMembership.mockReturnValue(Membership.Invite);
client.emit(ClientEvent.Room, rootSpace);
jest.runOnlyPendingTimers();
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([rootSpace]);
expect(SpaceStore.instance.spacePanelSpaces).toStrictEqual([]);
// accept invite to space
rootSpace.getMyMembership.mockReturnValue("join");
client.emit(RoomEvent.MyMembership, rootSpace, "join", "invite");
rootSpace.getMyMembership.mockReturnValue(Membership.Join);
client.emit(RoomEvent.MyMembership, rootSpace, Membership.Join, Membership.Invite);
jest.runOnlyPendingTimers();
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
expect(SpaceStore.instance.spacePanelSpaces).toStrictEqual([rootSpace]);
@ -1265,7 +1265,7 @@ describe("SpaceStore", () => {
// join room in space
expect(SpaceStore.instance.isRoomInSpace(space1, room1)).toBeFalsy();
const rootSpaceRoom1 = mkRoom(room1);
rootSpaceRoom1.getMyMembership.mockReturnValue("join");
rootSpaceRoom1.getMyMembership.mockReturnValue(Membership.Join);
client.emit(ClientEvent.Room, rootSpaceRoom1);
jest.runOnlyPendingTimers();
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
@ -1279,7 +1279,7 @@ describe("SpaceStore", () => {
// receive room invite
expect(SpaceStore.instance.isRoomInSpace(space1, room2)).toBeFalsy();
const rootSpaceRoom2 = mkRoom(room2);
rootSpaceRoom2.getMyMembership.mockReturnValue("invite");
rootSpaceRoom2.getMyMembership.mockReturnValue(Membership.Invite);
client.emit(ClientEvent.Room, rootSpaceRoom2);
jest.runOnlyPendingTimers();
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
@ -1292,9 +1292,9 @@ describe("SpaceStore", () => {
// start DM in space
const myRootSpaceMember = new RoomMember(space1, testUserId);
myRootSpaceMember.membership = "join";
myRootSpaceMember.membership = Membership.Join;
const rootSpaceFriend = new RoomMember(space1, dm1Partner.userId);
rootSpaceFriend.membership = "join";
rootSpaceFriend.membership = Membership.Join;
rootSpace.getMembers.mockReturnValue([myRootSpaceMember, rootSpaceFriend]);
rootSpace.getMember.mockImplementation((userId) => {
switch (userId) {
@ -1310,7 +1310,7 @@ describe("SpaceStore", () => {
event: true,
type: EventType.RoomMember,
content: {
membership: "join",
membership: Membership.Join,
},
skey: dm1Partner.userId,
user: dm1Partner.userId,
@ -1320,7 +1320,7 @@ describe("SpaceStore", () => {
jest.runOnlyPendingTimers();
expect(SpaceStore.instance.getSpaceFilteredUserIds(space1)!.has(dm1Partner.userId)).toBeTruthy();
const dm1Room = mkRoom(dm1);
dm1Room.getMyMembership.mockReturnValue("join");
dm1Room.getMyMembership.mockReturnValue(Membership.Join);
client.emit(ClientEvent.Room, dm1Room);
jest.runOnlyPendingTimers();
expect(SpaceStore.instance.invitedSpaces).toStrictEqual([]);
@ -1333,7 +1333,7 @@ describe("SpaceStore", () => {
// join subspace
const subspace = mkSpace(space2);
subspace.getMyMembership.mockReturnValue("join");
subspace.getMyMembership.mockReturnValue(Membership.Join);
const prom = testUtils.emitPromise(SpaceStore.instance, space1);
client.emit(ClientEvent.Room, subspace);
jest.runOnlyPendingTimers();

View File

@ -119,7 +119,7 @@ describe("RoomNotificationState", () => {
muteRoom(room);
setUnreads(room, 1234, 0);
room.updateMyMembership("join"); // emit
room.updateMyMembership(Membership.Join); // emit
expect(roomNotifState.level).toBe(NotificationLevel.None);
expect(roomNotifState.symbol).toBe(null);
@ -129,7 +129,7 @@ describe("RoomNotificationState", () => {
it("suggests a red ! if the user has been invited to a room", () => {
const roomNotifState = new RoomNotificationState(room, false);
room.updateMyMembership("invite"); // emit
room.updateMyMembership(Membership.Invite); // emit
expect(roomNotifState.level).toBe(NotificationLevel.Highlight);
expect(roomNotifState.symbol).toBe("!");
@ -140,7 +140,7 @@ describe("RoomNotificationState", () => {
const roomNotifState = new RoomNotificationState(room, false);
setUnreads(room, 4321, 0);
room.updateMyMembership("join"); // emit
room.updateMyMembership(Membership.Join); // emit
expect(roomNotifState.level).toBe(NotificationLevel.Notification);
expect(roomNotifState.symbol).toBe(null);
@ -151,7 +151,7 @@ describe("RoomNotificationState", () => {
const roomNotifState = new RoomNotificationState(room, false);
setUnreads(room, 0, 69);
room.updateMyMembership("join"); // emit
room.updateMyMembership(Membership.Join); // emit
expect(roomNotifState.level).toBe(NotificationLevel.Highlight);
expect(roomNotifState.symbol).toBe(null);
@ -171,7 +171,7 @@ describe("RoomNotificationState", () => {
);
addThread(room);
room.updateMyMembership("join"); // emit
room.updateMyMembership(Membership.Join); // emit
expect(roomNotifState.level).toBe(NotificationLevel.Activity);
expect(roomNotifState.symbol).toBe(null);

View File

@ -123,8 +123,8 @@ describe("RoomListStore", () => {
// When we tell it we joined a new room that has an old room as
// predecessor in the create event
const payload = {
oldMembership: "invite",
membership: "join",
oldMembership: Membership.Invite,
membership: Membership.Join,
room: roomWithCreatePredecessor,
};
store.onDispatchMyMembership(payload);
@ -142,8 +142,8 @@ describe("RoomListStore", () => {
// When we tell it we joined a new room with no predecessor
const payload = {
oldMembership: "invite",
membership: "join",
oldMembership: Membership.Invite,
membership: Membership.Join,
room: roomNoPredecessor,
};
store.onDispatchMyMembership(payload);
@ -159,9 +159,9 @@ describe("RoomListStore", () => {
const room1 = new Room("!r1:e.com", client, userId, { pendingEventOrdering: PendingEventOrdering.Detached });
const room2 = new Room("!r2:e.com", client, userId, { pendingEventOrdering: PendingEventOrdering.Detached });
const room3 = new Room("!r3:e.com", client, userId, { pendingEventOrdering: PendingEventOrdering.Detached });
room1.updateMyMembership("join");
room2.updateMyMembership("join");
room3.updateMyMembership("join");
room1.updateMyMembership(Membership.Join);
room2.updateMyMembership(Membership.Join);
room3.updateMyMembership(Membership.Join);
DMRoomMap.makeShared(client);
const { store } = createStore();
client.getVisibleRooms = jest.fn().mockReturnValue([room1, room2, room3]);
@ -259,8 +259,8 @@ describe("RoomListStore", () => {
// When we tell it we joined a new room that has an old room as
// predecessor in the create event
const payload = {
oldMembership: "invite",
membership: "join",
oldMembership: Membership.Invite,
membership: Membership.Join,
room: roomWithPredecessorEvent,
};
store.onDispatchMyMembership(payload);

View File

@ -82,7 +82,7 @@ describe("Algorithm", () => {
client.reEmitter.reEmit(room, [RoomStateEvent.Events]);
client.reEmitter.reEmit(roomWithCall, [RoomStateEvent.Events]);
for (const room of client.getRooms()) jest.spyOn(room, "getMyMembership").mockReturnValue("join");
for (const room of client.getRooms()) jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
algorithm.setKnownRooms(client.getRooms());
setupAsyncStoreWithClient(CallStore.instance, client);

View File

@ -53,7 +53,7 @@ describe("RecentAlgorithm", () => {
event: true,
});
room.getMyMembership = () => "join";
room.getMyMembership = () => Membership.Join;
room.addLiveEvents([event1]);
expect(algorithm.getLastTs(room, "@jane:matrix.org")).toBe(5);
@ -74,7 +74,7 @@ describe("RecentAlgorithm", () => {
it("works when not a member", () => {
const room = mkRoom(cli, "!new:example.org");
room.getMyMembership.mockReturnValue(EffectiveMembership.Invite);
room.getMyMembership.mockReturnValue(Membership.Invite);
expect(algorithm.getLastTs(room, "@john:matrix.org")).toBe(Number.MAX_SAFE_INTEGER);
});
});
@ -84,8 +84,8 @@ describe("RecentAlgorithm", () => {
const room1 = new Room("room1", cli, "@bob:matrix.org");
const room2 = new Room("room2", cli, "@bob:matrix.org");
room1.getMyMembership = () => "join";
room2.getMyMembership = () => "join";
room1.getMyMembership = () => Membership.Join;
room2.getMyMembership = () => Membership.Join;
const evt = mkMessage({
room: room1.roomId,
@ -112,8 +112,8 @@ describe("RecentAlgorithm", () => {
const room1 = new Room("room1", cli, "@bob:matrix.org");
const room2 = new Room("room2", cli, "@bob:matrix.org");
room1.getMyMembership = () => "join";
room2.getMyMembership = () => "join";
room1.getMyMembership = () => Membership.Join;
room2.getMyMembership = () => Membership.Join;
const evt = mkMessage({
room: room1.roomId,
@ -142,8 +142,8 @@ describe("RecentAlgorithm", () => {
const room1 = new Room("room1", cli, "@bob:matrix.org");
const room2 = new Room("room2", cli, "@bob:matrix.org");
room1.getMyMembership = () => "join";
room2.getMyMembership = () => "join";
room1.getMyMembership = () => Membership.Join;
room2.getMyMembership = () => Membership.Join;
const { rootEvent, events: events1 } = mkThread({
room: room1,

View File

@ -22,7 +22,7 @@ import { TimelineRenderingType } from "../../src/contexts/RoomContext";
import { Layout } from "../../src/settings/enums/Layout";
import { mkEvent } from "./test-utils";
export const makeMembershipEvent = (roomId: string, userId: string, membership = "join") =>
export const makeMembershipEvent = (roomId: string, userId: string, membership = Membership.Join) =>
mkEvent({
event: true,
type: EventType.RoomMember,

View File

@ -391,7 +391,7 @@ export function mkEvent(opts: MakeEventProps): MatrixEvent {
if (!mxEvent.sender && opts.user && opts.room) {
mxEvent.sender = {
userId: opts.user,
membership: "join",
membership: Membership.Join,
name: opts.user,
rawDisplayName: opts.user,
roomId: opts.room,
@ -465,8 +465,8 @@ export async function mkEncryptedEvent(opts: {
export function mkMembership(
opts: MakeEventPassThruProps & {
room: Room["roomId"];
mship: string;
prevMship?: string;
mship: Membership;
prevMship?: Membership;
name?: string;
url?: string;
skey?: string;
@ -506,7 +506,7 @@ export function mkMembership(
export function mkRoomMember(
roomId: string,
userId: string,
membership = "join",
membership = Membership.Join,
isKicked = false,
prevMemberContent: Partial<IContent> = {},
): RoomMember {
@ -654,7 +654,7 @@ export function mkStubRoom(
getMembers: jest.fn().mockReturnValue([]),
getMembersWithMembership: jest.fn().mockReturnValue([]),
getMxcAvatarUrl: () => "mxc://avatar.url/room.png",
getMyMembership: jest.fn().mockReturnValue("join"),
getMyMembership: jest.fn().mockReturnValue(Membership.Join),
getPendingEvents: () => [] as MatrixEvent[],
getReceiptsForEvent: jest.fn().mockReturnValue([]),
getRecommendedVersion: jest.fn().mockReturnValue(Promise.resolve("")),
@ -794,7 +794,7 @@ export const mkRoomMemberJoinEvent = (user: string, room: string, content?: ICon
event: true,
type: EventType.RoomMember,
content: {
membership: "join",
membership: Membership.Join,
...content,
},
skey: user,

View File

@ -168,10 +168,10 @@ describe("MultiInviter", () => {
const room = new Room(ROOMID, client, client.getSafeUserId());
mocked(client.getRoom).mockReturnValue(room);
const ourMember = new RoomMember(ROOMID, client.getSafeUserId());
ourMember.membership = "join";
ourMember.membership = Membership.Join;
ourMember.powerLevel = 100;
const member = new RoomMember(ROOMID, MXID1);
member.membership = "ban";
member.membership = Membership.Ban;
member.powerLevel = 0;
room.getMember = (userId: string) => {
if (userId === client.getSafeUserId()) return ourMember;

View File

@ -86,7 +86,7 @@ describe("direct-messages", () => {
});
room1 = new Room("!room1:example.com", mockClient, userId1);
room1.getMyMembership = () => "join";
room1.getMyMembership = () => Membership.Join;
localRoom = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test", mockClient, userId1);

View File

@ -37,16 +37,16 @@ function assertLocalRoom(room: LocalRoom, targets: Member[], encrypted: boolean)
expect(room.name).toBe(targets.length ? targets[0].name : "Empty Room");
expect(room.encrypted).toBe(encrypted);
expect(room.targets).toEqual(targets);
expect(room.getMyMembership()).toBe("join");
expect(room.getMyMembership()).toBe(Membership.Join);
const roomCreateEvent = room.currentState.getStateEvents(EventType.RoomCreate)[0];
expect(roomCreateEvent).toBeDefined();
expect(roomCreateEvent.getContent()["room_version"]).toBe(KNOWN_SAFE_ROOM_VERSION);
// check that the user and all targets are joined
expect(room.getMember("@userId:matrix.org")?.membership).toBe("join");
expect(room.getMember("@userId:matrix.org").membership).toBe(Membership.Join);
targets.forEach((target: Member) => {
expect(room.getMember(target.userId)?.membership).toBe("join");
expect(room.getMember(target.userId).membership).toBe(Membership.Join);
});
if (encrypted) {

View File

@ -51,32 +51,32 @@ describe("findDMForUser", () => {
mocked(getFunctionalMembers).mockReturnValue([botId]);
room1 = new Room("!room1:example.com", mockClient, userId1);
room1.getMyMembership = () => "join";
room1.getMyMembership = () => Membership.Join;
room1.currentState.setStateEvents([
makeMembershipEvent(room1.roomId, userId1, "join"),
makeMembershipEvent(room1.roomId, userId2, "join"),
makeMembershipEvent(room1.roomId, userId1, Membership.Join),
makeMembershipEvent(room1.roomId, userId2, Membership.Join),
]);
// this should not be a DM room because it is a local room
room2 = new LocalRoom("!room2:example.com", mockClient, userId1);
room2.getMyMembership = () => "join";
room2.getMyMembership = () => Membership.Join;
room2.getLastActiveTimestamp = () => 100;
room3 = new Room("!room3:example.com", mockClient, userId1);
room3.getMyMembership = () => "join";
room3.getMyMembership = () => Membership.Join;
room3.currentState.setStateEvents([
makeMembershipEvent(room3.roomId, userId1, "join"),
makeMembershipEvent(room3.roomId, userId2, "join"),
makeMembershipEvent(room3.roomId, userId1, Membership.Join),
makeMembershipEvent(room3.roomId, userId2, Membership.Join),
// Adding the bot user here. Should be excluded when determining if the room is a DM.
makeMembershipEvent(room3.roomId, botId, "join"),
makeMembershipEvent(room3.roomId, botId, Membership.Join),
]);
// this should not be a DM room because it has only one joined user
room4 = new Room("!room4:example.com", mockClient, userId1);
room4.getMyMembership = () => "join";
room4.getMyMembership = () => Membership.Join;
room4.currentState.setStateEvents([
makeMembershipEvent(room4.roomId, userId1, "invite"),
makeMembershipEvent(room4.roomId, userId2, "join"),
makeMembershipEvent(room4.roomId, userId1, Membership.Invite),
makeMembershipEvent(room4.roomId, userId2, Membership.Join),
]);
// this should not be a DM room because it has no users
@ -85,17 +85,17 @@ describe("findDMForUser", () => {
// room not correctly stored in userId → room map; should be found by the "all rooms" fallback
room6 = new Room("!room6:example.com", mockClient, userId1);
room6.getMyMembership = () => "join";
room6.getMyMembership = () => Membership.Join;
room6.currentState.setStateEvents([
makeMembershipEvent(room6.roomId, userId1, "join"),
makeMembershipEvent(room6.roomId, userId3, "join"),
makeMembershipEvent(room6.roomId, userId1, Membership.Join),
makeMembershipEvent(room6.roomId, userId3, Membership.Join),
]);
// room with pending third-party invite
room7 = new Room("!room7:example.com", mockClient, userId1);
room7.getMyMembership = () => "join";
room7.getMyMembership = () => Membership.Join;
room7.currentState.setStateEvents([
makeMembershipEvent(room7.roomId, userId1, "join"),
makeMembershipEvent(room7.roomId, userId1, Membership.Join),
mkThirdPartyInviteEvent(thirdPartyId, "third-party", room7.roomId),
]);

View File

@ -201,8 +201,8 @@ describe("export", function () {
getMxcAvatarUrl: () => "mxc://avatar.url/image.png",
} as unknown as RoomMember,
ts: ts0 + i * 1000,
mship: "join",
prevMship: "join",
mship: Membership.Join,
prevMship: Membership.Join,
name: "A user",
}),
);

View File

@ -36,7 +36,7 @@ describe("local-room", () => {
beforeEach(() => {
client = createTestClient();
room1 = new Room("!room1:example.com", client, userId1);
room1.getMyMembership = () => "join";
room1.getMyMembership = () => Membership.Join;
localRoom = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test", client, "@test:example.com");
mocked(client.getRoom).mockImplementation((roomId: string) => {
if (roomId === localRoom.roomId) {

View File

@ -33,7 +33,7 @@ describe("isRoomReady", () => {
beforeEach(() => {
client = createTestClient();
room1 = new Room("!room1:example.com", client, userId1);
room1.getMyMembership = () => "join";
room1.getMyMembership = () => Membership.Join;
localRoom = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test", client, "@test:example.com");
});
@ -70,8 +70,8 @@ describe("isRoomReady", () => {
describe("and all members have been invited or joined", () => {
beforeEach(() => {
room1.currentState.setStateEvents([
makeMembershipEvent(room1.roomId, userId1, "join"),
makeMembershipEvent(room1.roomId, userId2, "invite"),
makeMembershipEvent(room1.roomId, userId1, Membership.Join),
makeMembershipEvent(room1.roomId, userId2, Membership.Invite),
]);
});

View File

@ -31,16 +31,16 @@ describe("isKnockDenied", () => {
});
it("checks that the user knock has been denied", () => {
const roomMember = mkRoomMember(room.roomId, userId, "leave", true, { membership: "knock" });
const roomMember = mkRoomMember(room.roomId, userId, Membership.Leave, true, { membership: Membership.Knock });
jest.spyOn(room, "getMember").mockReturnValue(roomMember);
expect(isKnockDenied(room)).toBe(true);
});
it.each([
{ membership: "leave", isKicked: false, prevMembership: "invite" },
{ membership: "leave", isKicked: true, prevMembership: "invite" },
{ membership: "leave", isKicked: false, prevMembership: "join" },
{ membership: "leave", isKicked: true, prevMembership: "join" },
{ membership: Membership.Leave, isKicked: false, prevMembership: Membership.Invite },
{ membership: Membership.Leave, isKicked: true, prevMembership: Membership.Invite },
{ membership: Membership.Leave, isKicked: false, prevMembership: Membership.Join },
{ membership: Membership.Leave, isKicked: true, prevMembership: Membership.Join },
])("checks that the user knock has been not denied", ({ membership, isKicked, prevMembership }) => {
const roomMember = mkRoomMember(room.roomId, userId, membership, isKicked, { membership: prevMembership });
jest.spyOn(room, "getMember").mockReturnValue(roomMember);

View File

@ -45,7 +45,7 @@ describe("Permalinks", function () {
members: RoomMember[],
serverACLContent?: { deny?: string[]; allow?: string[] },
): Room {
members.forEach((m) => (m.membership = "join"));
members.forEach((m) => (m.membership = Membership.Join));
const powerLevelsUsers = members.reduce<Record<string, number>>((pl, member) => {
if (Number.isFinite(member.powerLevel)) {
pl[member.userId] = member.powerLevel;
@ -152,11 +152,11 @@ describe("Permalinks", function () {
const creator = new RoomPermalinkCreator(room, null);
creator.load();
expect(creator.serverCandidates![0]).toBe("pl_95");
member95.membership = "left";
member95.membership = Membership.Leave;
// @ts-ignore illegal private property
creator.onRoomStateUpdate();
expect(creator.serverCandidates![0]).toBe("pl_75");
member95.membership = "join";
member95.membership = Membership.Join;
// @ts-ignore illegal private property
creator.onRoomStateUpdate();
expect(creator.serverCandidates![0]).toBe("pl_95");

View File

@ -39,7 +39,7 @@ describe("canInviteTo()", () => {
...mockClientMethodsUser(userId),
});
const room = new Room(roomId, client, userId);
jest.spyOn(room, "getMyMembership").mockReturnValue("join");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Join);
jest.spyOn(room, "getJoinRule").mockReturnValue(JoinRule.Public);
jest.spyOn(room, "canInvite").mockReturnValue(true);
return room;
@ -54,7 +54,7 @@ describe("canInviteTo()", () => {
it("should return false when current user membership is not joined", () => {
const room = makeRoom();
jest.spyOn(room, "getMyMembership").mockReturnValue("invite");
jest.spyOn(room, "getMyMembership").mockReturnValue(Membership.Invite);
expect(canInviteTo(room)).toEqual(false);
});