Introduce Membership type
This commit is contained in:
parent
3c6fd58628
commit
da99bad7b9
115 changed files with 582 additions and 526 deletions
|
@ -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,
|
||||
},
|
||||
});
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
|
|
|
@ -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`,
|
||||
}));
|
||||
|
|
|
@ -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,
|
||||
}),
|
||||
);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue