Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 4eb3ba8

Browse files
committed
Create experimental flag for future work, and use it to gate MSC3931
1 parent 266f5d6 commit 4eb3ba8

File tree

5 files changed

+20
-2
lines changed

5 files changed

+20
-2
lines changed

rust/src/push/evaluator.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ pub struct PushRuleEvaluator {
6464

6565
/// If MSC3931 is applicable, the feature flags for the room version.
6666
room_version_feature_flags: Vec<String>,
67+
68+
/// If MSC3931 (room version feature flags) is enabled. Usually controlled by the same
69+
/// flag as MSC1767 (extensible events core).
70+
msc3931_enabled: bool,
6771
}
6872

6973
#[pymethods]
@@ -78,6 +82,7 @@ impl PushRuleEvaluator {
7882
related_events_flattened: BTreeMap<String, BTreeMap<String, String>>,
7983
related_event_match_enabled: bool,
8084
room_version_feature_flags: Vec<String>,
85+
msc3931_enabled: bool,
8186
) -> Result<Self, Error> {
8287
let body = flattened_keys
8388
.get("content.body")
@@ -93,6 +98,7 @@ impl PushRuleEvaluator {
9398
related_events_flattened,
9499
related_event_match_enabled,
95100
room_version_feature_flags,
101+
msc3931_enabled,
96102
})
97103
}
98104

@@ -214,8 +220,13 @@ impl PushRuleEvaluator {
214220
}
215221
}
216222
KnownCondition::RoomVersionSupports { feature } => {
217-
let flag = feature.to_string();
218-
KNOWN_RVER_FLAGS.contains(&flag) && self.room_version_feature_flags.contains(&flag)
223+
if !self.msc3931_enabled {
224+
false
225+
} else {
226+
let flag = feature.to_string();
227+
KNOWN_RVER_FLAGS.contains(&flag)
228+
&& self.room_version_feature_flags.contains(&flag)
229+
}
219230
}
220231
};
221232

@@ -376,6 +387,7 @@ fn push_rule_evaluator() {
376387
BTreeMap::new(),
377388
true,
378389
vec![],
390+
true,
379391
)
380392
.unwrap();
381393

stubs/synapse/synapse_rust/push.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class PushRuleEvaluator:
4242
related_events_flattened: Mapping[str, Mapping[str, str]],
4343
related_event_match_enabled: bool,
4444
room_version_feature_flags: list[str],
45+
msc3931_enabled: bool,
4546
): ...
4647
def run(
4748
self,

synapse/config/experimental.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,6 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
131131

132132
# MSC3912: Relation-based redactions.
133133
self.msc3912_enabled: bool = experimental.get("msc3912_enabled", False)
134+
135+
# MSC1767 and friends: Extensible Events
136+
self.msc1767_enabled: bool = experimental.get("msc1767_enabled", False)

synapse/push/bulk_push_rule_evaluator.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ async def _action_for_event_by_user(
350350
related_events,
351351
self._related_event_match_enabled,
352352
room_version_features,
353+
self.hs.config.experimental.msc1767_enabled, # MSC3931 flag
353354
)
354355

355356
users = rules_by_user.keys()

tests/push/test_push_rule_evaluator.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def _get_evaluator(
6363
{} if related_events is None else related_events,
6464
True,
6565
event.room_version.msc3931_push_features,
66+
True,
6667
)
6768

6869
def test_display_name(self) -> None:

0 commit comments

Comments
 (0)