Consider the empty push rule actions array equiv to deprecated dont_notify (#11155)

* Consider the empty push rule actions array equiv to deprecated dont_notify

* Switch primary tests to empty actions, add test for dont_notify

* strict types
pull/28788/head^2
Michael Telatynski 2023-06-28 15:07:02 +01:00 committed by GitHub
parent 6836a5fa7b
commit 209f5bdf33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 3 deletions

View File

@ -219,7 +219,10 @@ function isRuleRoomMuteRuleForRoomId(roomId: string, rule: IPushRule): boolean {
}
function isMuteRule(rule: IPushRule): boolean {
return rule.actions.length === 1 && rule.actions[0] === PushRuleActionName.DontNotify;
// DontNotify is equivalent to the empty actions array
return (
rule.actions.length === 0 || (rule.actions.length === 1 && rule.actions[0] === PushRuleActionName.DontNotify)
);
}
export function determineUnreadState(

View File

@ -64,6 +64,13 @@ describe("RoomNotifs test", () => {
expect(getRoomNotifsState(client, room.roomId)).toBe(RoomNotifState.Mute);
});
it("getRoomNotifsState handles mute state for legacy DontNotify action", () => {
const room = mkRoom(client, "!roomId:server");
muteRoom(room);
client.pushRules!.global.override![0]!.actions = [PushRuleActionName.DontNotify];
expect(getRoomNotifsState(client, room.roomId)).toBe(RoomNotifState.Mute);
});
it("getRoomNotifsState handles mentions only", () => {
(client as any).getRoomPushRule = () => ({
rule_id: "!roomId:server",

View File

@ -34,7 +34,6 @@ import {
RoomType,
KNOWN_SAFE_ROOM_VERSION,
ConditionKind,
PushRuleActionName,
IPushRules,
RelationType,
} from "matrix-js-sdk/src/matrix";
@ -796,7 +795,7 @@ export function muteRoom(room: Room): void {
pattern: room.roomId,
},
],
actions: [PushRuleActionName.DontNotify],
actions: [],
},
];
}