Delete notifications for redacted events
2 files changed, 19 insertions, 0 deletions
diff --git a/synapse/push/action_generator.py b/synapse/push/action_generator.py
index bcd40798f9..4cf94f6c61 100644
--- a/synapse/push/action_generator.py
+++ b/synapse/push/action_generator.py
@@ -19,6 +19,8 @@ import bulk_push_rule_evaluator
import logging
+from synapse.api.constants import EventTypes
+
logger = logging.getLogger(__name__)
@@ -34,6 +36,11 @@ class ActionGenerator:
@defer.inlineCallbacks
def handle_push_actions_for_event(self, event, handler):
+ if event.type == EventTypes.Redaction and event.redacts is not None:
+ yield self.store.remove_push_actions_for_event_id(
+ event.room_id, event.redacts
+ )
+
bulk_evaluator = yield bulk_push_rule_evaluator.evaluator_for_room_id(
event.room_id, self.store
)
diff --git a/synapse/storage/event_push_actions.py b/synapse/storage/event_push_actions.py
index 0634af6b62..5b44431ab9 100644
--- a/synapse/storage/event_push_actions.py
+++ b/synapse/storage/event_push_actions.py
@@ -93,6 +93,18 @@ class EventPushActionsStore(SQLBaseStore):
)
defer.returnValue(ret)
+ @defer.inlineCallbacks
+ def remove_push_actions_for_event_id(self, room_id, event_id):
+ def f(txn):
+ txn.execute(
+ "DELETE FROM event_push_actions WHERE room_id = ? AND event_id = ?",
+ (room_id, event_id)
+ )
+ yield self.runInteraction(
+ "remove_push_actions_for_event_id",
+ f
+ )
+
class EventPushActionsTable(object):
table_name = "event_push_actions"
|