diff --git a/src/capabilities/ServerACLConsequencesRenderer.tsx b/src/capabilities/ServerACLConsequencesRenderer.tsx index 339cec2d..de425e78 100644 --- a/src/capabilities/ServerACLConsequencesRenderer.tsx +++ b/src/capabilities/ServerACLConsequencesRenderer.tsx @@ -24,6 +24,7 @@ class StandardServerConsequencesRenderer implements ServerConsequences { } public readonly requiredEventPermissions = this.capability.requiredEventPermissions; public readonly requiredPermissions = this.capability.requiredPermissions; + public readonly requiredStatePermissions = this.capability.requiredStatePermissions; public async consequenceForServerInRoom(roomID: StringRoomID, revision: PolicyListRevision): Promise> { const capabilityResult = await this.capability.consequenceForServerInRoom(roomID, revision); const title = diff --git a/src/capabilities/StandardEventConsequencesRenderer.tsx b/src/capabilities/StandardEventConsequencesRenderer.tsx index 4b29beb9..f305c855 100644 --- a/src/capabilities/StandardEventConsequencesRenderer.tsx +++ b/src/capabilities/StandardEventConsequencesRenderer.tsx @@ -24,6 +24,7 @@ class StandardEventConsequencesRenderer implements EventConsequences { } public readonly requiredEventPermissions = this.capability.requiredEventPermissions; public readonly requiredPermissions = this.capability.requiredPermissions; + public readonly requiredStatePermissions = this.capability.requiredStatePermissions; public async consequenceForEvent(roomID: StringRoomID, eventID: StringEventID, reason: string): Promise> { const capabilityResult = await this.capability.consequenceForEvent(roomID, eventID, reason); const title = Redacting {Permalinks.forEvent(roomID, eventID)}.; diff --git a/src/capabilities/StandardUserConsequencesRenderer.tsx b/src/capabilities/StandardUserConsequencesRenderer.tsx index 4e8732db..00fc4e28 100644 --- a/src/capabilities/StandardUserConsequencesRenderer.tsx +++ b/src/capabilities/StandardUserConsequencesRenderer.tsx @@ -65,6 +65,7 @@ class StandardUserConsequencesRenderer implements UserConsequences { } public readonly requiredEventPermissions = this.capability.requiredEventPermissions; public readonly requiredPermissions = this.capability.requiredPermissions; + public readonly requiredStatePermissions = this.capability.requiredStatePermissions; public async consequenceForUserInRoom(roomID: StringRoomID, userID: StringUserID, reason: string): Promise> { const capabilityResult = await this.capability.consequenceForUserInRoom(roomID, userID, reason); diff --git a/src/protections/BanPropagation.tsx b/src/protections/BanPropagation.tsx index 1d8424e0..53e8d792 100644 --- a/src/protections/BanPropagation.tsx +++ b/src/protections/BanPropagation.tsx @@ -156,7 +156,7 @@ export class BanPropagationProtection protectedRoomsSet: ProtectedRoomsSet, private readonly draupnir: Draupnir, ) { - super(description, capabilities, protectedRoomsSet, [], []); + super(description, capabilities, protectedRoomsSet, {}); this.userConsequences = capabilities.userConsequences; this.draupnir.reactionHandler.on(BAN_PROPAGATION_PROMPT_LISTENER, this.banPropagationPromptListener); this.draupnir.reactionHandler.on(UNBAN_PROPAGATION_PROMPT_LISTENER, this.unbanPropagationPromptListener); diff --git a/src/protections/BasicFlooding.ts b/src/protections/BasicFlooding.ts index 686e71e3..207380c3 100644 --- a/src/protections/BasicFlooding.ts +++ b/src/protections/BasicFlooding.ts @@ -104,8 +104,7 @@ export class BasicFloodingProtection extends AbstractProtection implements DraupnirProtection { - requiredStatePermissions = ["m.room.join_rules"] - private joinBuckets: { [roomID: StringRoomID]: { lastBucketStart: Date, @@ -101,8 +99,9 @@ export class JoinWaveShortCircuitProtection extends AbstractProtection> { diff --git a/src/protections/MessageIsMedia.ts b/src/protections/MessageIsMedia.ts index 65beb331..833012ba 100644 --- a/src/protections/MessageIsMedia.ts +++ b/src/protections/MessageIsMedia.ts @@ -70,8 +70,7 @@ export class MessageIsMediaProtection extends AbstractProtection> { diff --git a/src/protections/RedactionSynchronisation.ts b/src/protections/RedactionSynchronisation.ts index 21511cfd..ad827f55 100644 --- a/src/protections/RedactionSynchronisation.ts +++ b/src/protections/RedactionSynchronisation.ts @@ -7,7 +7,7 @@ // policies that operate on a timeline cache, which removes the painfull process // that is currently used to repeatedly fetch `/messages`. -import { AbstractProtection, ActionResult, CapabilitySet, MatrixGlob, MembershipChange, MembershipChangeType, Ok, PolicyListRevision, PolicyRule, PolicyRuleChange, PolicyRuleType, ProtectedRoomsSet, Protection, ProtectionDescription, Recommendation, RoomMembershipRevision, SimpleChangeType, StringRoomID, StringUserID, Task, describeProtection } from "matrix-protection-suite"; +import { AbstractProtection, ActionResult, CapabilitySet, MatrixGlob, MembershipChange, MembershipChangeType, Ok, PolicyListRevision, PolicyRule, PolicyRuleChange, PolicyRuleType, PowerLevelPermission, ProtectedRoomsSet, Protection, ProtectionDescription, Recommendation, RoomMembershipRevision, SimpleChangeType, StringRoomID, StringUserID, Task, describeProtection } from "matrix-protection-suite"; import { Draupnir } from "../Draupnir"; import { redactUserMessagesIn } from "../utils"; @@ -25,8 +25,9 @@ export class RedactionSynchronisationProtection extends AbstractProtection description, capabilities, protectedRoomsSet, - [], - [] + {} ); this.userConsequences = capabilities.userConsequences; this.eventConsequences = capabilities.eventConsequences; diff --git a/test/integration/reportPollingTest.ts b/test/integration/reportPollingTest.ts index 49e6d30b..41ce2c1f 100644 --- a/test/integration/reportPollingTest.ts +++ b/test/integration/reportPollingTest.ts @@ -35,7 +35,8 @@ describe("Test: Report polling", function() { }, description: testProtectionDescription, requiredEventPermissions: [], - requiredPermissions: [] + requiredPermissions: [], + requiredStatePermissions: [], }) }, protectionSettings: new StandardProtectionSettings(