2023-01-11 18:36:41 +00:00
|
|
|
# Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
2023-03-02 13:30:51 +00:00
|
|
|
from typing import Any, Collection, Dict, Mapping, Optional, Sequence, Tuple, Union
|
2022-09-20 11:10:31 +00:00
|
|
|
|
2023-02-14 19:02:19 +00:00
|
|
|
from synapse.types import JsonDict, JsonValue
|
2022-09-20 11:10:31 +00:00
|
|
|
|
|
|
|
class PushRule:
|
|
|
|
@property
|
|
|
|
def rule_id(self) -> str: ...
|
|
|
|
@property
|
|
|
|
def priority_class(self) -> int: ...
|
|
|
|
@property
|
|
|
|
def conditions(self) -> Sequence[Mapping[str, str]]: ...
|
|
|
|
@property
|
|
|
|
def actions(self) -> Sequence[Union[Mapping[str, Any], str]]: ...
|
|
|
|
@property
|
|
|
|
def default(self) -> bool: ...
|
|
|
|
@property
|
|
|
|
def default_enabled(self) -> bool: ...
|
|
|
|
@staticmethod
|
|
|
|
def from_db(
|
|
|
|
rule_id: str, priority_class: int, conditions: str, actions: str
|
|
|
|
) -> "PushRule": ...
|
|
|
|
|
|
|
|
class PushRules:
|
|
|
|
def __init__(self, rules: Collection[PushRule]): ...
|
|
|
|
def rules(self) -> Collection[PushRule]: ...
|
|
|
|
|
|
|
|
class FilteredPushRules:
|
2022-10-25 13:38:01 +00:00
|
|
|
def __init__(
|
2022-11-29 01:02:41 +00:00
|
|
|
self,
|
|
|
|
push_rules: PushRules,
|
|
|
|
enabled_map: Dict[str, bool],
|
|
|
|
msc1767_enabled: bool,
|
2023-01-19 12:47:10 +00:00
|
|
|
msc3381_polls_enabled: bool,
|
|
|
|
msc3664_enabled: bool,
|
2023-01-27 15:16:21 +00:00
|
|
|
msc3952_intentional_mentions: bool,
|
2023-02-03 19:31:14 +00:00
|
|
|
msc3958_suppress_edits_enabled: bool,
|
2022-10-25 13:38:01 +00:00
|
|
|
): ...
|
2022-09-20 11:10:31 +00:00
|
|
|
def rules(self) -> Collection[Tuple[PushRule, bool]]: ...
|
|
|
|
|
|
|
|
def get_base_rule_ids() -> Collection[str]: ...
|
2022-09-29 15:12:09 +00:00
|
|
|
|
|
|
|
class PushRuleEvaluator:
|
|
|
|
def __init__(
|
|
|
|
self,
|
2023-02-14 19:02:19 +00:00
|
|
|
flattened_keys: Mapping[str, JsonValue],
|
2023-02-03 16:28:20 +00:00
|
|
|
has_mentions: bool,
|
2022-09-29 15:12:09 +00:00
|
|
|
room_member_count: int,
|
|
|
|
sender_power_level: Optional[int],
|
|
|
|
notification_power_levels: Mapping[str, int],
|
2023-02-14 19:02:19 +00:00
|
|
|
related_events_flattened: Mapping[str, Mapping[str, JsonValue]],
|
2022-10-25 13:38:01 +00:00
|
|
|
related_event_match_enabled: bool,
|
2022-12-13 13:19:19 +00:00
|
|
|
room_version_feature_flags: Tuple[str, ...],
|
2022-11-28 23:29:53 +00:00
|
|
|
msc3931_enabled: bool,
|
2023-02-14 19:02:19 +00:00
|
|
|
msc3966_exact_event_property_contains: bool,
|
2022-09-29 15:12:09 +00:00
|
|
|
): ...
|
|
|
|
def run(
|
|
|
|
self,
|
|
|
|
push_rules: FilteredPushRules,
|
|
|
|
user_id: Optional[str],
|
|
|
|
display_name: Optional[str],
|
2022-11-16 12:03:05 +00:00
|
|
|
) -> Collection[Union[Mapping, str]]: ...
|
2023-01-11 12:35:40 +00:00
|
|
|
def matches(
|
|
|
|
self, condition: JsonDict, user_id: Optional[str], display_name: Optional[str]
|
|
|
|
) -> bool: ...
|