Fix: sync intentional mentions push rules with legacy rules (#11667)
* fix monitorSyncedPushRules when primary rule is disabled * sync intentional mentions rules * remove debug log
This commit is contained in:
parent
4d0d024e86
commit
0d367a7c7e
3 changed files with 67 additions and 3 deletions
|
@ -16,7 +16,7 @@ limitations under the License.
|
|||
|
||||
import React from "react";
|
||||
import { render, RenderResult } from "@testing-library/react";
|
||||
import { ConditionKind, EventType, IPushRule, MatrixEvent, ClientEvent } from "matrix-js-sdk/src/matrix";
|
||||
import { ConditionKind, EventType, IPushRule, MatrixEvent, ClientEvent, PushRuleKind } from "matrix-js-sdk/src/matrix";
|
||||
import { MediaHandler } from "matrix-js-sdk/src/webrtc/mediaHandler";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
||||
|
@ -81,6 +81,11 @@ describe("<LoggedInView />", () => {
|
|||
enabled: true,
|
||||
} as IPushRule;
|
||||
|
||||
const oneToOneRuleDisabled = {
|
||||
...oneToOneRule,
|
||||
enabled: false,
|
||||
};
|
||||
|
||||
const groupRule = {
|
||||
conditions: [{ kind: ConditionKind.EventMatch, key: "type", pattern: "m.room.message" }],
|
||||
actions: StandardActions.ACTION_NOTIFY,
|
||||
|
@ -221,6 +226,36 @@ describe("<LoggedInView />", () => {
|
|||
);
|
||||
});
|
||||
|
||||
it("updates all mismatched rules from synced rules when primary rule is disabled", async () => {
|
||||
setPushRules([
|
||||
// poll 1-1 rules are synced with oneToOneRule
|
||||
oneToOneRuleDisabled, // off
|
||||
pollStartOneToOne, // on
|
||||
pollEndOneToOne, // loud
|
||||
// poll group rules are synced with groupRule
|
||||
groupRule, // on
|
||||
pollStartGroup, // loud
|
||||
]);
|
||||
|
||||
getComponent();
|
||||
|
||||
await flushPromises();
|
||||
|
||||
// set to match primary rule
|
||||
expect(mockClient.setPushRuleEnabled).toHaveBeenCalledWith(
|
||||
"global",
|
||||
PushRuleKind.Underride,
|
||||
pollStartOneToOne.rule_id,
|
||||
false,
|
||||
);
|
||||
expect(mockClient.setPushRuleEnabled).toHaveBeenCalledWith(
|
||||
"global",
|
||||
PushRuleKind.Underride,
|
||||
pollEndOneToOne.rule_id,
|
||||
false,
|
||||
);
|
||||
});
|
||||
|
||||
it("catches and logs errors while updating a rule", async () => {
|
||||
mockClient.setPushRuleActions.mockRejectedValueOnce("oups").mockResolvedValueOnce({});
|
||||
|
||||
|
@ -302,6 +337,31 @@ describe("<LoggedInView />", () => {
|
|||
);
|
||||
});
|
||||
|
||||
it("updates all mismatched rules from synced rules on a change to push rules account data when primary rule is disabled", async () => {
|
||||
// setup a push rule state with mismatched rules
|
||||
setPushRules([
|
||||
// poll 1-1 rules are synced with oneToOneRule
|
||||
oneToOneRuleDisabled, // off
|
||||
pollEndOneToOne, // loud
|
||||
]);
|
||||
|
||||
getComponent();
|
||||
|
||||
await flushPromises();
|
||||
|
||||
mockClient.setPushRuleEnabled.mockClear();
|
||||
|
||||
mockClient.emit(ClientEvent.AccountData, pushRulesEvent);
|
||||
|
||||
// set to match primary rule
|
||||
expect(mockClient.setPushRuleEnabled).toHaveBeenCalledWith(
|
||||
"global",
|
||||
"underride",
|
||||
pollEndOneToOne.rule_id,
|
||||
false,
|
||||
);
|
||||
});
|
||||
|
||||
it("stops listening to account data events on unmount", () => {
|
||||
// setup a push rule state with mismatched rules
|
||||
setPushRules([
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue