Reuse PushProcessor from MatrixClient (#29561)
* Reuse PushProcessor from MatrixClient Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Reuse PushProcessor getPushRuleGlobRegex Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * delint Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Update regex handling Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
committed by
GitHub
parent
3a39486468
commit
0d28df0f67
@@ -7,7 +7,6 @@ Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
import React, { StrictMode } from "react";
|
||||
import { PushProcessor } from "matrix-js-sdk/src/pushprocessor";
|
||||
import { type MatrixClient, type MatrixEvent, RuleId } from "matrix-js-sdk/src/matrix";
|
||||
import { TooltipProvider } from "@vector-im/compound-web";
|
||||
|
||||
@@ -119,11 +118,10 @@ export function pillifyLinks(
|
||||
}
|
||||
|
||||
if (roomNotifTextNodes.length > 0) {
|
||||
const pushProcessor = new PushProcessor(matrixClient);
|
||||
const atRoomRule = pushProcessor.getPushRuleById(
|
||||
const atRoomRule = matrixClient.pushProcessor.getPushRuleById(
|
||||
mxEvent.getContent()["m.mentions"] !== undefined ? RuleId.IsRoomMention : RuleId.AtRoomNotification,
|
||||
);
|
||||
if (atRoomRule && pushProcessor.ruleMatchesEvent(atRoomRule, mxEvent)) {
|
||||
if (atRoomRule && matrixClient.pushProcessor.ruleMatchesEvent(atRoomRule, mxEvent)) {
|
||||
// Now replace all those nodes with Pills
|
||||
for (const roomNotifTextNode of roomNotifTextNodes) {
|
||||
// Set the next node to be processed to the one after the node
|
||||
|
||||
@@ -12,15 +12,16 @@ import {
|
||||
EventType,
|
||||
type RuleId,
|
||||
type IAnnotatedPushRule,
|
||||
type IPushRule,
|
||||
type PushRuleKind,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { PushProcessor } from "matrix-js-sdk/src/pushprocessor";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
||||
import { VectorPushRulesDefinitions, type VectorPushRuleDefinition } from "../../notifications";
|
||||
import { updateExistingPushRulesWithActions } from "./updatePushRuleActions";
|
||||
|
||||
const pushRuleAndKindToAnnotated = (
|
||||
ruleAndKind: ReturnType<PushProcessor["getPushRuleAndKindById"]>,
|
||||
ruleAndKind: { rule: IPushRule; kind: PushRuleKind } | null,
|
||||
): IAnnotatedPushRule | undefined =>
|
||||
ruleAndKind
|
||||
? {
|
||||
@@ -34,23 +35,21 @@ const pushRuleAndKindToAnnotated = (
|
||||
* And updates any that are out of sync
|
||||
* Ignores ruleIds that do not exist for the user
|
||||
* @param matrixClient - cli
|
||||
* @param pushProcessor - processor used to retrieve current state of rules
|
||||
* @param ruleId - primary rule
|
||||
* @param definition - VectorPushRuleDefinition of the primary rule
|
||||
*/
|
||||
const monitorSyncedRule = async (
|
||||
matrixClient: MatrixClient,
|
||||
pushProcessor: PushProcessor,
|
||||
ruleId: RuleId | string,
|
||||
definition: VectorPushRuleDefinition,
|
||||
): Promise<void> => {
|
||||
const primaryRule = pushRuleAndKindToAnnotated(pushProcessor.getPushRuleAndKindById(ruleId));
|
||||
const primaryRule = pushRuleAndKindToAnnotated(matrixClient.pushProcessor.getPushRuleAndKindById(ruleId));
|
||||
|
||||
if (!primaryRule) {
|
||||
return;
|
||||
}
|
||||
const syncedRules: IAnnotatedPushRule[] | undefined = definition.syncedRuleIds
|
||||
?.map((ruleId) => pushRuleAndKindToAnnotated(pushProcessor.getPushRuleAndKindById(ruleId)))
|
||||
?.map((ruleId) => pushRuleAndKindToAnnotated(matrixClient.pushProcessor.getPushRuleAndKindById(ruleId)))
|
||||
.filter((n?: IAnnotatedPushRule): n is IAnnotatedPushRule => Boolean(n));
|
||||
|
||||
// no synced rules to manage
|
||||
@@ -94,11 +93,10 @@ export const monitorSyncedPushRules = async (
|
||||
if (accountDataEvent?.getType() !== EventType.PushRules) {
|
||||
return;
|
||||
}
|
||||
const pushProcessor = new PushProcessor(matrixClient);
|
||||
|
||||
Object.entries(VectorPushRulesDefinitions).forEach(async ([ruleId, definition]) => {
|
||||
try {
|
||||
await monitorSyncedRule(matrixClient, pushProcessor, ruleId, definition);
|
||||
await monitorSyncedRule(matrixClient, ruleId, definition);
|
||||
} catch (error) {
|
||||
logger.error(`Failed to fully synchronise push rules for ${ruleId}`, error);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
import { type MatrixClient, type IPushRule, type PushRuleAction, type PushRuleKind } from "matrix-js-sdk/src/matrix";
|
||||
import { PushProcessor } from "matrix-js-sdk/src/pushprocessor";
|
||||
|
||||
/**
|
||||
* Sets the actions for a given push rule id and kind
|
||||
@@ -51,10 +50,8 @@ export const updateExistingPushRulesWithActions = async (
|
||||
ruleIds?: IPushRule["rule_id"][],
|
||||
actions?: PushRuleAction[],
|
||||
): Promise<void> => {
|
||||
const pushProcessor = new PushProcessor(matrixClient);
|
||||
|
||||
const rules: PushRuleAndKind[] | undefined = ruleIds
|
||||
?.map((ruleId) => pushProcessor.getPushRuleAndKindById(ruleId))
|
||||
?.map((ruleId) => matrixClient.pushProcessor.getPushRuleAndKindById(ruleId))
|
||||
.filter((n: PushRuleAndKind | null): n is PushRuleAndKind => Boolean(n));
|
||||
|
||||
if (!rules?.length) {
|
||||
|
||||
Reference in New Issue
Block a user