mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 00:44:49 -04:00
Use notification levels in power_levels
Rather than making the condition directly require a specific power level. This way the level require to notify a room can be configured per room.
This commit is contained in:
parent
c9f034b4ac
commit
0f1eb3e914
3 changed files with 22 additions and 12 deletions
|
@ -33,8 +33,15 @@ def _room_member_count(ev, condition, room_member_count):
|
|||
return _test_ineq_condition(condition, room_member_count)
|
||||
|
||||
|
||||
def _sender_power_level(ev, condition, power_level):
|
||||
return _test_ineq_condition(condition, power_level)
|
||||
def _sender_notification_permission(ev, condition, sender_power_level, power_levels):
|
||||
notif_level_key = condition.get('key')
|
||||
if notif_level_key is None:
|
||||
return False
|
||||
|
||||
notif_levels = power_levels.get('notifications', {})
|
||||
room_notif_level = notif_levels.get(notif_level_key, 50)
|
||||
|
||||
return sender_power_level >= room_notif_level;
|
||||
|
||||
|
||||
def _test_ineq_condition(condition, number):
|
||||
|
@ -74,10 +81,11 @@ def tweaks_for_actions(actions):
|
|||
|
||||
|
||||
class PushRuleEvaluatorForEvent(object):
|
||||
def __init__(self, event, room_member_count, sender_power_level):
|
||||
def __init__(self, event, room_member_count, sender_power_level, power_levels):
|
||||
self._event = event
|
||||
self._room_member_count = room_member_count
|
||||
self._sender_power_level = sender_power_level
|
||||
self._power_levels = power_levels
|
||||
|
||||
# Maps strings of e.g. 'content.body' -> event["content"]["body"]
|
||||
self._value_cache = _flatten_dict(event)
|
||||
|
@ -91,9 +99,9 @@ class PushRuleEvaluatorForEvent(object):
|
|||
return _room_member_count(
|
||||
self._event, condition, self._room_member_count
|
||||
)
|
||||
elif condition['kind'] == 'sender_power_level':
|
||||
return _sender_power_level(
|
||||
self._event, condition, self._sender_power_level
|
||||
elif condition['kind'] == 'sender_notification_permission':
|
||||
return _sender_notification_permission(
|
||||
self._event, condition, self._sender_power_level, self._power_levels,
|
||||
)
|
||||
else:
|
||||
return True
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue