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
@@ -115,7 +115,7 @@ const DEFAULT_OVERRIDE_RULES: Record<string, IPushRule> = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// A special rule id for `EXPECTED_DEFAULT_OVERRIDE_RULE_IDS` and friends.
|
// A special rule id for `EXPECTED_DEFAULT_OVERRIDE_RULE_IDS` and friends which denotes where user-defined rules live in the order.
|
||||||
const UserDefinedRules = Symbol("UserDefinedRules");
|
const UserDefinedRules = Symbol("UserDefinedRules");
|
||||||
|
|
||||||
type OrderedRules = Array<string | typeof UserDefinedRules>;
|
type OrderedRules = Array<string | typeof UserDefinedRules>;
|
||||||
@@ -160,6 +160,7 @@ const DEFAULT_UNDERRIDE_RULES: Record<string, IPushRule> = {
|
|||||||
const EXPECTED_DEFAULT_UNDERRIDE_RULE_IDS: OrderedRules = [
|
const EXPECTED_DEFAULT_UNDERRIDE_RULE_IDS: OrderedRules = [
|
||||||
UserDefinedRules,
|
UserDefinedRules,
|
||||||
RuleId.IncomingCall,
|
RuleId.IncomingCall,
|
||||||
|
".org.matrix.msc3914.rule.room.call",
|
||||||
RuleId.EncryptedDM,
|
RuleId.EncryptedDM,
|
||||||
RuleId.DM,
|
RuleId.DM,
|
||||||
RuleId.Message,
|
RuleId.Message,
|
||||||
@@ -182,17 +183,14 @@ function mergeRulesWithDefaults(
|
|||||||
defaultRules: Record<string, IPushRule>,
|
defaultRules: Record<string, IPushRule>,
|
||||||
orderedRuleIds: OrderedRules,
|
orderedRuleIds: OrderedRules,
|
||||||
): IPushRule[] {
|
): IPushRule[] {
|
||||||
// Find the indices of the edges of the user-defined rules in the incoming rules
|
// Split the incomingRules into defaults and custom
|
||||||
const mappedIncomingRules = incomingRules.map((rule) => rule.default);
|
const incomingDefaultRules = incomingRules.filter((rule) => rule.default);
|
||||||
const userDefinedRulesRange: [number, number] = [
|
const incomingCustomRules = incomingRules.filter((rule) => !rule.default);
|
||||||
mappedIncomingRules.indexOf(false),
|
|
||||||
mappedIncomingRules.lastIndexOf(false),
|
|
||||||
];
|
|
||||||
|
|
||||||
function insertDefaultPushRule(ruleId: OrderedRules[number]): void {
|
function insertDefaultPushRule(ruleId: OrderedRules[number]): void {
|
||||||
if (ruleId === UserDefinedRules) {
|
if (ruleId === UserDefinedRules) {
|
||||||
// Re-insert any user-defined rules that were in `incomingRules`
|
// Re-insert any user-defined rules that were in `incomingRules`
|
||||||
newRules.push(...incomingRules.slice(...userDefinedRulesRange));
|
newRules.push(...incomingCustomRules);
|
||||||
} else if (ruleId in defaultRules) {
|
} else if (ruleId in defaultRules) {
|
||||||
logger.warn(`Adding default global ${kind} push rule ${ruleId}`);
|
logger.warn(`Adding default global ${kind} push rule ${ruleId}`);
|
||||||
newRules.push(defaultRules[ruleId]);
|
newRules.push(defaultRules[ruleId]);
|
||||||
@@ -204,10 +202,7 @@ function mergeRulesWithDefaults(
|
|||||||
let nextExpectedRuleIdIndex = 0;
|
let nextExpectedRuleIdIndex = 0;
|
||||||
const newRules: IPushRule[] = [];
|
const newRules: IPushRule[] = [];
|
||||||
// Merge our expected rules (including the incoming custom rules) into the incoming default rules.
|
// Merge our expected rules (including the incoming custom rules) into the incoming default rules.
|
||||||
for (const rule of [
|
for (const rule of incomingDefaultRules) {
|
||||||
...incomingRules.slice(0, userDefinedRulesRange[0]),
|
|
||||||
...incomingRules.slice(userDefinedRulesRange[1]),
|
|
||||||
]) {
|
|
||||||
const ruleIndex = orderedRuleIds.indexOf(rule.rule_id);
|
const ruleIndex = orderedRuleIds.indexOf(rule.rule_id);
|
||||||
if (ruleIndex === -1) {
|
if (ruleIndex === -1) {
|
||||||
// an unrecognised rule; copy it over
|
// an unrecognised rule; copy it over
|
||||||
|
|||||||
Reference in New Issue
Block a user