128 lines
5.1 KiB
TypeScript
128 lines
5.1 KiB
TypeScript
import { MatrixClient } from "./client";
|
|
import { MatrixEvent } from "./models/event";
|
|
import { IAnnotatedPushRule, IPushRule, IPushRules, PushRuleAction, PushRuleKind, TweakName } from "./@types/PushRules";
|
|
export interface IActionsObject {
|
|
/** Whether this event should notify the user or not. */
|
|
notify: boolean;
|
|
/** How this event should be notified. */
|
|
tweaks: Partial<Record<TweakName, any>>;
|
|
}
|
|
export declare class PushProcessor {
|
|
private readonly client;
|
|
/**
|
|
* Construct a Push Processor.
|
|
* @param client - The Matrix client object to use
|
|
*/
|
|
constructor(client: MatrixClient);
|
|
/**
|
|
* Maps the original key from the push rules to a list of property names
|
|
* after unescaping.
|
|
*/
|
|
private readonly parsedKeys;
|
|
/**
|
|
* Convert a list of actions into a object with the actions as keys and their values
|
|
* @example
|
|
* eg. `[ 'notify', { set_tweak: 'sound', value: 'default' } ]`
|
|
* becomes `{ notify: true, tweaks: { sound: 'default' } }`
|
|
* @param actionList - The actions list
|
|
*
|
|
* @returns A object with key 'notify' (true or false) and an object of actions
|
|
*/
|
|
static actionListToActionsObject(actionList: PushRuleAction[]): IActionsObject;
|
|
/**
|
|
* Rewrites conditions on a client's push rules to match the defaults
|
|
* where applicable. Useful for upgrading push rules to more strict
|
|
* conditions when the server is falling behind on defaults.
|
|
* @param incomingRules - The client's existing push rules
|
|
* @param userId - The Matrix ID of the client.
|
|
* @returns The rewritten rules
|
|
*/
|
|
static rewriteDefaultRules(incomingRules: IPushRules, userId?: string | undefined): IPushRules;
|
|
/**
|
|
* Pre-caches the parsed keys for push rules and cleans out any obsolete cache
|
|
* entries. Should be called after push rules are updated.
|
|
* @param newRules - The new push rules.
|
|
*/
|
|
updateCachedPushRuleKeys(newRules: IPushRules): void;
|
|
private static cachedGlobToRegex;
|
|
private matchingRuleFromKindSet;
|
|
private templateRuleToRaw;
|
|
private eventFulfillsCondition;
|
|
private eventFulfillsSenderNotifPermCondition;
|
|
private eventFulfillsRoomMemberCountCondition;
|
|
private eventFulfillsDisplayNameCondition;
|
|
/**
|
|
* Check whether the given event matches the push rule condition by fetching
|
|
* the property from the event and comparing against the condition's glob-based
|
|
* pattern.
|
|
* @param cond - The push rule condition to check for a match.
|
|
* @param ev - The event to check for a match.
|
|
*/
|
|
private eventFulfillsEventMatchCondition;
|
|
/**
|
|
* Check whether the given event matches the push rule condition by fetching
|
|
* the property from the event and comparing exactly against the condition's
|
|
* value.
|
|
* @param cond - The push rule condition to check for a match.
|
|
* @param ev - The event to check for a match.
|
|
*/
|
|
private eventFulfillsEventPropertyIsCondition;
|
|
/**
|
|
* Check whether the given event matches the push rule condition by fetching
|
|
* the property from the event and comparing exactly against the condition's
|
|
* value.
|
|
* @param cond - The push rule condition to check for a match.
|
|
* @param ev - The event to check for a match.
|
|
*/
|
|
private eventFulfillsEventPropertyContains;
|
|
private eventFulfillsCallStartedCondition;
|
|
private createCachedRegex;
|
|
/**
|
|
* Parse the key into the separate fields to search by splitting on
|
|
* unescaped ".", and then removing any escape characters.
|
|
*
|
|
* @param str - The key of the push rule condition: a dotted field.
|
|
* @returns The unescaped parts to fetch.
|
|
* @internal
|
|
*/
|
|
static partsForDottedKey(str: string): string[];
|
|
/**
|
|
* For a dotted field and event, fetch the value at that position, if one
|
|
* exists.
|
|
*
|
|
* @param key - The key of the push rule condition: a dotted field to fetch.
|
|
* @param ev - The matrix event to fetch the field from.
|
|
* @returns The value at the dotted path given by key.
|
|
*/
|
|
private valueForDottedKey;
|
|
private matchingRuleForEventWithRulesets;
|
|
private pushActionsForEventAndRulesets;
|
|
ruleMatchesEvent(rule: Partial<IPushRule> & Pick<IPushRule, "conditions">, ev: MatrixEvent): boolean;
|
|
/**
|
|
* Get the user's push actions for the given event
|
|
*/
|
|
actionsForEvent(ev: MatrixEvent): IActionsObject;
|
|
actionsAndRuleForEvent(ev: MatrixEvent): {
|
|
actions?: IActionsObject;
|
|
rule?: IAnnotatedPushRule;
|
|
};
|
|
/**
|
|
* Get one of the users push rules by its ID
|
|
*
|
|
* @param ruleId - The ID of the rule to search for
|
|
* @returns The push rule, or null if no such rule was found
|
|
*/
|
|
getPushRuleById(ruleId: string): IPushRule | null;
|
|
/**
|
|
* Get one of the users push rules by its ID
|
|
*
|
|
* @param ruleId - The ID of the rule to search for
|
|
* @returns rule The push rule, or null if no such rule was found
|
|
* @returns kind - The PushRuleKind of the rule to search for
|
|
*/
|
|
getPushRuleAndKindById(ruleId: string): {
|
|
rule: IPushRule;
|
|
kind: PushRuleKind;
|
|
} | null;
|
|
}
|
|
//# sourceMappingURL=pushprocessor.d.ts.map
|