1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-23 17:02:25 +03:00
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski
2024-03-28 14:59:52 +00:00
parent 0f25429849
commit 06e083874a

View File

@@ -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