You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-11-23 17:02:25 +03:00
Follows on from https://github.com/matrix-org/matrix-js-sdk/pull/4937
(cherry picked from commit dea184e9ec)
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
This commit is contained in:
@@ -39,10 +39,10 @@ describe("RoomState", function () {
|
|||||||
const userLazy = "@lazy:bar";
|
const userLazy = "@lazy:bar";
|
||||||
|
|
||||||
let state = new RoomState(roomId);
|
let state = new RoomState(roomId);
|
||||||
|
let statev12 = new RoomState(roomId);
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
state = new RoomState(roomId);
|
const commonEvents = [
|
||||||
state.setStateEvents([
|
|
||||||
utils.mkMembership({
|
utils.mkMembership({
|
||||||
// userA joined
|
// userA joined
|
||||||
event: true,
|
event: true,
|
||||||
@@ -67,6 +67,11 @@ describe("RoomState", function () {
|
|||||||
name: "Room name goes here",
|
name: "Room name goes here",
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
];
|
||||||
|
|
||||||
|
state = new RoomState(roomId);
|
||||||
|
state.setStateEvents([
|
||||||
|
...commonEvents,
|
||||||
utils.mkEvent({
|
utils.mkEvent({
|
||||||
// Room creation
|
// Room creation
|
||||||
type: "m.room.create",
|
type: "m.room.create",
|
||||||
@@ -76,6 +81,19 @@ describe("RoomState", function () {
|
|||||||
content: {},
|
content: {},
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
statev12 = new RoomState(roomId);
|
||||||
|
statev12.setStateEvents([
|
||||||
|
...commonEvents,
|
||||||
|
utils.mkEvent({
|
||||||
|
// Room creation (v12 version)
|
||||||
|
type: "m.room.create",
|
||||||
|
user: userA,
|
||||||
|
room: roomId,
|
||||||
|
event: true,
|
||||||
|
content: { room_version: "12" },
|
||||||
|
}),
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("getMembers", function () {
|
describe("getMembers", function () {
|
||||||
@@ -1002,6 +1020,24 @@ describe("RoomState", function () {
|
|||||||
expect(state.maySendEvent("m.room.other_thing", userA)).toEqual(true);
|
expect(state.maySendEvent("m.room.other_thing", userA)).toEqual(true);
|
||||||
expect(state.maySendEvent("m.room.other_thing", userB)).toEqual(false);
|
expect(state.maySendEvent("m.room.other_thing", userB)).toEqual(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should recognise power level of room creators in v12 rooms", function () {
|
||||||
|
const powerLevelEvent = new MatrixEvent({
|
||||||
|
type: "m.room.power_levels",
|
||||||
|
room_id: roomId,
|
||||||
|
sender: userA,
|
||||||
|
state_key: "",
|
||||||
|
content: {
|
||||||
|
users_default: 0,
|
||||||
|
state_default: 100,
|
||||||
|
events_default: 100,
|
||||||
|
users: {},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
statev12.setStateEvents([powerLevelEvent]);
|
||||||
|
|
||||||
|
expect(statev12.maySendEvent("m.room.name", userA)).toEqual(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("processBeaconEvents", () => {
|
describe("processBeaconEvents", () => {
|
||||||
|
|||||||
@@ -939,7 +939,6 @@ export class RoomState extends TypedEventEmitter<EmittedEvents, EventHandlerMap>
|
|||||||
|
|
||||||
let stateDefault = 0;
|
let stateDefault = 0;
|
||||||
let eventsDefault = 0;
|
let eventsDefault = 0;
|
||||||
let powerLevel = 0;
|
|
||||||
if (powerLevelsEvent) {
|
if (powerLevelsEvent) {
|
||||||
powerLevels = powerLevelsEvent.getContent();
|
powerLevels = powerLevelsEvent.getContent();
|
||||||
eventsLevels = powerLevels.events || {};
|
eventsLevels = powerLevels.events || {};
|
||||||
@@ -950,13 +949,6 @@ export class RoomState extends TypedEventEmitter<EmittedEvents, EventHandlerMap>
|
|||||||
stateDefault = 50;
|
stateDefault = 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
const userPowerLevel = powerLevels.users && powerLevels.users[userId];
|
|
||||||
if (Number.isSafeInteger(userPowerLevel)) {
|
|
||||||
powerLevel = userPowerLevel!;
|
|
||||||
} else if (Number.isSafeInteger(powerLevels.users_default)) {
|
|
||||||
powerLevel = powerLevels.users_default!;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Number.isSafeInteger(powerLevels.events_default)) {
|
if (Number.isSafeInteger(powerLevels.events_default)) {
|
||||||
eventsDefault = powerLevels.events_default!;
|
eventsDefault = powerLevels.events_default!;
|
||||||
}
|
}
|
||||||
@@ -966,7 +958,11 @@ export class RoomState extends TypedEventEmitter<EmittedEvents, EventHandlerMap>
|
|||||||
if (Number.isSafeInteger(eventsLevels[eventType])) {
|
if (Number.isSafeInteger(eventsLevels[eventType])) {
|
||||||
requiredLevel = eventsLevels[eventType];
|
requiredLevel = eventsLevels[eventType];
|
||||||
}
|
}
|
||||||
return powerLevel >= requiredLevel;
|
|
||||||
|
const roomMember = this.getMember(userId);
|
||||||
|
const userPowerLevel = roomMember?.powerLevel ?? 0;
|
||||||
|
|
||||||
|
return userPowerLevel >= requiredLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user