Copy over the whole feature of changing the state for keywords entirely

pull/21833/head
Travis Ralston 2021-07-13 00:23:56 -06:00
parent 9d60d29368
commit 8278b2273d
1 changed files with 31 additions and 3 deletions

View File

@ -17,7 +17,7 @@ limitations under the License.
import React from "react"; import React from "react";
import Spinner from "../elements/Spinner"; import Spinner from "../elements/Spinner";
import { MatrixClientPeg } from "../../../MatrixClientPeg"; import { MatrixClientPeg } from "../../../MatrixClientPeg";
import { IAnnotatedPushRule, IPusher, PushRuleKind, RuleId } from "matrix-js-sdk/src/@types/PushRules"; import { IAnnotatedPushRule, IPusher, PushRuleAction, PushRuleKind, RuleId } from "matrix-js-sdk/src/@types/PushRules";
import { import {
ContentRules, ContentRules,
IContentRules, IContentRules,
@ -351,12 +351,40 @@ export default class Notifications extends React.PureComponent<IProps, IState> {
this.setState({ phase: Phase.Persisting }); this.setState({ phase: Phase.Persisting });
try { try {
const cli = MatrixClientPeg.get();
if (rule.ruleId === KEYWORD_RULE_ID) { if (rule.ruleId === KEYWORD_RULE_ID) {
console.log("@@ KEYWORDS"); // Update all the keywords
for (const rule of this.state.vectorKeywordRuleInfo.rules) {
let enabled: boolean;
let actions: PushRuleAction[];
if (checkedState === VectorState.On) {
if (rule.actions.length !== 1) { // XXX: Magic number
actions = PushRuleVectorState.actionsFor(checkedState);
}
if (this.state.vectorKeywordRuleInfo.vectorState === VectorState.Off) {
enabled = true;
}
} else if (checkedState === VectorState.Loud) {
if (rule.actions.length !== 3) { // XXX: Magic number
actions = PushRuleVectorState.actionsFor(checkedState);
}
if (this.state.vectorKeywordRuleInfo.vectorState === VectorState.Off) {
enabled = true;
}
} else {
enabled = false;
}
if (actions) {
await cli.setPushRuleActions('global', rule.kind, rule.rule_id, actions);
}
if (enabled !== undefined) {
await cli.setPushRuleEnabled('global', rule.kind, rule.rule_id, enabled);
}
}
} else { } else {
const definition = VectorPushRulesDefinitions[rule.ruleId]; const definition = VectorPushRulesDefinitions[rule.ruleId];
const actions = definition.vectorStateToActions[checkedState]; const actions = definition.vectorStateToActions[checkedState];
const cli = MatrixClientPeg.get();
if (!actions) { if (!actions) {
await cli.setPushRuleEnabled('global', rule.rule.kind, rule.rule.rule_id, false); await cli.setPushRuleEnabled('global', rule.rule.kind, rule.rule.rule_id, false);
} else { } else {