mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-15 14:40:13 -04:00
Merge remote-tracking branch 'upstream/release-v1.39'
This commit is contained in:
commit
9754df5623
260 changed files with 3981 additions and 2390 deletions
|
@ -194,7 +194,7 @@ class BulkPushRuleEvaluator:
|
|||
count_as_unread = _should_count_as_unread(event, context)
|
||||
|
||||
rules_by_user = await self._get_rules_for_event(event, context)
|
||||
actions_by_user = {} # type: Dict[str, List[Union[dict, str]]]
|
||||
actions_by_user: Dict[str, List[Union[dict, str]]] = {}
|
||||
|
||||
room_members = await self.store.get_joined_users_from_context(event, context)
|
||||
|
||||
|
@ -207,7 +207,7 @@ class BulkPushRuleEvaluator:
|
|||
event, len(room_members), sender_power_level, power_levels
|
||||
)
|
||||
|
||||
condition_cache = {} # type: Dict[str, bool]
|
||||
condition_cache: Dict[str, bool] = {}
|
||||
|
||||
# If the event is not a state event check if any users ignore the sender.
|
||||
if not event.is_state():
|
||||
|
|
|
@ -26,10 +26,10 @@ def format_push_rules_for_user(user: UserID, ruleslist) -> Dict[str, Dict[str, l
|
|||
# We're going to be mutating this a lot, so do a deep copy
|
||||
ruleslist = copy.deepcopy(ruleslist)
|
||||
|
||||
rules = {
|
||||
rules: Dict[str, Dict[str, List[Dict[str, Any]]]] = {
|
||||
"global": {},
|
||||
"device": {},
|
||||
} # type: Dict[str, Dict[str, List[Dict[str, Any]]]]
|
||||
}
|
||||
|
||||
rules["global"] = _add_empty_priority_class_arrays(rules["global"])
|
||||
|
||||
|
|
|
@ -66,8 +66,8 @@ class EmailPusher(Pusher):
|
|||
|
||||
self.store = self.hs.get_datastore()
|
||||
self.email = pusher_config.pushkey
|
||||
self.timed_call = None # type: Optional[IDelayedCall]
|
||||
self.throttle_params = {} # type: Dict[str, ThrottleParams]
|
||||
self.timed_call: Optional[IDelayedCall] = None
|
||||
self.throttle_params: Dict[str, ThrottleParams] = {}
|
||||
self._inited = False
|
||||
|
||||
self._is_processing = False
|
||||
|
@ -168,7 +168,7 @@ class EmailPusher(Pusher):
|
|||
)
|
||||
)
|
||||
|
||||
soonest_due_at = None # type: Optional[int]
|
||||
soonest_due_at: Optional[int] = None
|
||||
|
||||
if not unprocessed:
|
||||
await self.save_last_stream_ordering_and_success(self.max_stream_ordering)
|
||||
|
|
|
@ -71,7 +71,7 @@ class HttpPusher(Pusher):
|
|||
self.data = pusher_config.data
|
||||
self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC
|
||||
self.failing_since = pusher_config.failing_since
|
||||
self.timed_call = None # type: Optional[IDelayedCall]
|
||||
self.timed_call: Optional[IDelayedCall] = None
|
||||
self._is_processing = False
|
||||
self._group_unread_count_by_room = hs.config.push_group_unread_count_by_room
|
||||
self._pusherpool = hs.get_pusherpool()
|
||||
|
|
|
@ -110,7 +110,7 @@ class Mailer:
|
|||
self.state_handler = self.hs.get_state_handler()
|
||||
self.storage = hs.get_storage()
|
||||
self.app_name = app_name
|
||||
self.email_subjects = hs.config.email_subjects # type: EmailSubjectConfig
|
||||
self.email_subjects: EmailSubjectConfig = hs.config.email_subjects
|
||||
|
||||
logger.info("Created Mailer for app_name %s" % app_name)
|
||||
|
||||
|
@ -230,7 +230,7 @@ class Mailer:
|
|||
[pa["event_id"] for pa in push_actions]
|
||||
)
|
||||
|
||||
notifs_by_room = {} # type: Dict[str, List[Dict[str, Any]]]
|
||||
notifs_by_room: Dict[str, List[Dict[str, Any]]] = {}
|
||||
for pa in push_actions:
|
||||
notifs_by_room.setdefault(pa["room_id"], []).append(pa)
|
||||
|
||||
|
@ -356,13 +356,13 @@ class Mailer:
|
|||
|
||||
room_name = await calculate_room_name(self.store, room_state_ids, user_id)
|
||||
|
||||
room_vars = {
|
||||
room_vars: Dict[str, Any] = {
|
||||
"title": room_name,
|
||||
"hash": string_ordinal_total(room_id), # See sender avatar hash
|
||||
"notifs": [],
|
||||
"invite": is_invite,
|
||||
"link": self._make_room_link(room_id),
|
||||
} # type: Dict[str, Any]
|
||||
}
|
||||
|
||||
if not is_invite:
|
||||
for n in notifs:
|
||||
|
@ -460,9 +460,9 @@ class Mailer:
|
|||
type_state_key = ("m.room.member", event.sender)
|
||||
sender_state_event_id = room_state_ids.get(type_state_key)
|
||||
if sender_state_event_id:
|
||||
sender_state_event = await self.store.get_event(
|
||||
sender_state_event: Optional[EventBase] = await self.store.get_event(
|
||||
sender_state_event_id
|
||||
) # type: Optional[EventBase]
|
||||
)
|
||||
else:
|
||||
# Attempt to check the historical state for the room.
|
||||
historical_state = await self.state_store.get_state_for_event(
|
||||
|
|
|
@ -199,7 +199,7 @@ def name_from_member_event(member_event: EventBase) -> str:
|
|||
|
||||
|
||||
def _state_as_two_level_dict(state: StateMap[str]) -> Dict[str, Dict[str, str]]:
|
||||
ret = {} # type: Dict[str, Dict[str, str]]
|
||||
ret: Dict[str, Dict[str, str]] = {}
|
||||
for k, v in state.items():
|
||||
ret.setdefault(k[0], {})[k[1]] = v
|
||||
return ret
|
||||
|
|
|
@ -195,9 +195,9 @@ class PushRuleEvaluatorForEvent:
|
|||
|
||||
|
||||
# Caches (string, is_glob, word_boundary) -> regex for push. See _glob_matches
|
||||
regex_cache = LruCache(
|
||||
regex_cache: LruCache[Tuple[str, bool, bool], Pattern] = LruCache(
|
||||
50000, "regex_push_cache"
|
||||
) # type: LruCache[Tuple[str, bool, bool], Pattern]
|
||||
)
|
||||
|
||||
|
||||
def _glob_matches(glob: str, value: str, word_boundary: bool = False) -> bool:
|
||||
|
|
|
@ -31,13 +31,13 @@ class PusherFactory:
|
|||
self.hs = hs
|
||||
self.config = hs.config
|
||||
|
||||
self.pusher_types = {
|
||||
self.pusher_types: Dict[str, Callable[[HomeServer, PusherConfig], Pusher]] = {
|
||||
"http": HttpPusher
|
||||
} # type: Dict[str, Callable[[HomeServer, PusherConfig], Pusher]]
|
||||
}
|
||||
|
||||
logger.info("email enable notifs: %r", hs.config.email_enable_notifs)
|
||||
if hs.config.email_enable_notifs:
|
||||
self.mailers = {} # type: Dict[str, Mailer]
|
||||
self.mailers: Dict[str, Mailer] = {}
|
||||
|
||||
self._notif_template_html = hs.config.email_notif_template_html
|
||||
self._notif_template_text = hs.config.email_notif_template_text
|
||||
|
|
|
@ -62,10 +62,6 @@ class PusherPool:
|
|||
self.store = self.hs.get_datastore()
|
||||
self.clock = self.hs.get_clock()
|
||||
|
||||
self._account_validity_enabled = (
|
||||
hs.config.account_validity.account_validity_enabled
|
||||
)
|
||||
|
||||
# We shard the handling of push notifications by user ID.
|
||||
self._pusher_shard_config = hs.config.push.pusher_shard_config
|
||||
self._instance_name = hs.get_instance_name()
|
||||
|
@ -87,7 +83,9 @@ class PusherPool:
|
|||
self._last_room_stream_id_seen = self.store.get_room_max_stream_ordering()
|
||||
|
||||
# map from user id to app_id:pushkey to pusher
|
||||
self.pushers = {} # type: Dict[str, Dict[str, Pusher]]
|
||||
self.pushers: Dict[str, Dict[str, Pusher]] = {}
|
||||
|
||||
self._account_validity_handler = hs.get_account_validity_handler()
|
||||
|
||||
def start(self) -> None:
|
||||
"""Starts the pushers off in a background process."""
|
||||
|
@ -238,12 +236,9 @@ class PusherPool:
|
|||
|
||||
for u in users_affected:
|
||||
# Don't push if the user account has expired
|
||||
if self._account_validity_enabled:
|
||||
expired = await self.store.is_account_expired(
|
||||
u, self.clock.time_msec()
|
||||
)
|
||||
if expired:
|
||||
continue
|
||||
expired = await self._account_validity_handler.is_user_expired(u)
|
||||
if expired:
|
||||
continue
|
||||
|
||||
if u in self.pushers:
|
||||
for p in self.pushers[u].values():
|
||||
|
@ -268,12 +263,9 @@ class PusherPool:
|
|||
|
||||
for u in users_affected:
|
||||
# Don't push if the user account has expired
|
||||
if self._account_validity_enabled:
|
||||
expired = await self.store.is_account_expired(
|
||||
u, self.clock.time_msec()
|
||||
)
|
||||
if expired:
|
||||
continue
|
||||
expired = await self._account_validity_handler.is_user_expired(u)
|
||||
if expired:
|
||||
continue
|
||||
|
||||
if u in self.pushers:
|
||||
for p in self.pushers[u].values():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue