Update for compatibility with v12 rooms (#30452)

* Update for compatibility with v12 rooms

Stop using powerLevelNorm and reading PL events manually.

To support https://github.com/matrix-org/matrix-js-sdk/pull/4937

* Add test for leave space dialog

* Don't compute stuff if we don't need it

* Use room.client

* Use getSafeUserId

* Remove client arg

* Use getJoinedMembers

and add doc

* Fix tests

* Fix more tests

* Fix other test

* Clarify comment

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

---------

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
David Baker
2025-08-05 12:10:30 +01:00
committed by GitHub
parent 12927cc4a7
commit 6a8493c6eb
5 changed files with 105 additions and 33 deletions

View File

@@ -691,6 +691,8 @@ describe("<MatrixChat />", () => {
jest.spyOn(spaceRoom, "isSpaceRoom").mockReturnValue(true);
jest.spyOn(ReleaseAnnouncementStore.instance, "getReleaseAnnouncement").mockReturnValue(null);
(room as any).client = mockClient;
(spaceRoom as any).client = mockClient;
});
describe("forget_room", () => {
@@ -775,6 +777,22 @@ describe("<MatrixChat />", () => {
),
).toBeInTheDocument();
});
it("should warn when user is the last admin", async () => {
jest.spyOn(room, "getJoinedMembers").mockReturnValue([
{ powerLevel: 100 } as unknown as MatrixJs.RoomMember,
{ powerLevel: 0 } as unknown as MatrixJs.RoomMember,
]);
jest.spyOn(room, "getMember").mockReturnValue({
powerLevel: 100,
} as unknown as MatrixJs.RoomMember);
dispatchAction();
await screen.findByRole("dialog");
expect(
screen.getByText(
"You're the only administrator in this room. If you leave, nobody will be able to change room settings or take other important actions.",
),
).toBeInTheDocument();
});
it("should do nothing on cancel", async () => {
dispatchAction();
const dialog = await screen.findByRole("dialog");