diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2022-10-04 11:36:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-04 11:36:16 -0400 |
commit | 2b6d41ebd685fb546e52acdbcb0024dfcf5a5db1 (patch) | |
tree | ee2ead1e78477d6d8bbcdfe94fcc992702067190 /synapse/push | |
parent | update authlib from 0.15.5 to 1.1.0 (#14006) (diff) | |
download | synapse-2b6d41ebd685fb546e52acdbcb0024dfcf5a5db1.tar.xz |
Recursively fetch the thread for receipts & notifications. (#13824)
Consider an event to be part of a thread if you can follow a chain of relations up to a thread root. Part of MSC3773 & MSC3771.
Diffstat (limited to 'synapse/push')
-rw-r--r-- | synapse/push/bulk_push_rule_evaluator.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/synapse/push/bulk_push_rule_evaluator.py b/synapse/push/bulk_push_rule_evaluator.py index 61d952742d..f8c4dd74f0 100644 --- a/synapse/push/bulk_push_rule_evaluator.py +++ b/synapse/push/bulk_push_rule_evaluator.py @@ -286,8 +286,13 @@ class BulkPushRuleEvaluator: relation.parent_id, itertools.chain(*(r.rules() for r in rules_by_user.values())), ) + # Recursively attempt to find the thread this event relates to. if relation.rel_type == RelationTypes.THREAD: thread_id = relation.parent_id + else: + # Since the event has not yet been persisted we check whether + # the parent is part of a thread. + thread_id = await self.store.get_thread_id(relation.parent_id) or "main" evaluator = PushRuleEvaluator( _flatten_dict(event), |