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

Commit ad6b10b

Browse files
committed
Fix com.beeper.suppress_auto_invite rule by handling bools in content
1 parent 7bae0d6 commit ad6b10b

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

rust/src/push/base_rules.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ pub const BASE_APPEND_OVERRIDE_RULES: &[PushRule] = &[
8787
})),
8888
Condition::Known(KnownCondition::EventMatch(EventMatchCondition {
8989
key: Cow::Borrowed("content.fi.mau.will_auto_accept"),
90-
pattern: Some(Cow::Borrowed("true")),
90+
pattern: Some(Cow::Borrowed("*")),
9191
pattern_type: None,
9292
})),
9393
]),

synapse/push/bulk_push_rule_evaluator.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,8 @@ def _flatten_dict(
444444
for key, value in d.items():
445445
if isinstance(value, str):
446446
result[".".join(prefix + [key])] = value.lower()
447+
elif isinstance(value, bool):
448+
result[".".join(prefix + [key])] = str(value).lower()
447449
elif isinstance(value, Mapping):
448450
_flatten_dict(value, prefix=(prefix + [key]), result=result)
449451

tests/push/test_push_rule_evaluator.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from synapse.rest.client import login, register, room
3030
from synapse.server import HomeServer
3131
from synapse.storage.databases.main.appservice import _make_exclusive_regex
32-
from synapse.synapse_rust.push import PushRuleEvaluator
32+
from synapse.synapse_rust.push import FilteredPushRules, PushRuleEvaluator, PushRules
3333
from synapse.types import JsonDict, UserID
3434
from synapse.util import Clock
3535

@@ -656,3 +656,38 @@ def test_delayed_message(self) -> None:
656656

657657
# user2 should not be notified about it, because they can't see it.
658658
self.assertEqual(self.get_notif_count(self.user_id2), 0)
659+
660+
class PushRuleEvaluatorBaseRulesTestCase(unittest.TestCase):
661+
def test_supress_auto_accept_invite(self) -> None:
662+
event = FrozenEvent(
663+
{
664+
"event_id": "$event_id",
665+
"room_id":"!wFyjEwanOaElpGOaLW:beeper.com",
666+
"content":{
667+
"displayname":"Brad Murray",
668+
"fi.mau.will_auto_accept": True,
669+
"is_direct": True,
670+
"membership":"invite"
671+
},
672+
"sender":"@_brad_imessagecloud_83372:beeper.com",
673+
"state_key":"@brad:beeper.com",
674+
"type":"m.room.member",
675+
},
676+
RoomVersions.V1,
677+
)
678+
room_member_count = 0
679+
sender_power_level = 0
680+
power_levels: Dict[str, Union[int, Dict[str, int]]] = {}
681+
682+
evaluator = PushRuleEvaluator(
683+
_flatten_dict(event),
684+
room_member_count,
685+
sender_power_level,
686+
power_levels.get("notifications", {}),
687+
{},
688+
True,
689+
)
690+
691+
actions = evaluator.run(FilteredPushRules(PushRules([]), {}, True), "@brad:beeper.com", "Brad Murray")
692+
self.assertEqual(actions, [])
693+

0 commit comments

Comments
 (0)