diff --git a/synapse/storage/databases/main/push_rule.py b/synapse/storage/databases/main/push_rule.py
index 0e2855fb44..ad67901cc1 100644
--- a/synapse/storage/databases/main/push_rule.py
+++ b/synapse/storage/databases/main/push_rule.py
@@ -243,57 +243,6 @@ class PushRulesWorkerStore(
return results
- async def copy_push_rule_from_room_to_room(
- self, new_room_id: str, user_id: str, rule: dict
- ) -> None:
- """Copy a single push rule from one room to another for a specific user.
-
- Args:
- new_room_id: ID of the new room.
- user_id : ID of user the push rule belongs to.
- rule: A push rule.
- """
- # Create new rule id
- rule_id_scope = "/".join(rule["rule_id"].split("/")[:-1])
- new_rule_id = rule_id_scope + "/" + new_room_id
-
- # Change room id in each condition
- for condition in rule.get("conditions", []):
- if condition.get("key") == "room_id":
- condition["pattern"] = new_room_id
-
- # Add the rule for the new room
- await self.add_push_rule( # type: ignore[attr-defined]
- user_id=user_id,
- rule_id=new_rule_id,
- priority_class=rule["priority_class"],
- conditions=rule["conditions"],
- actions=rule["actions"],
- )
-
- async def copy_push_rules_from_room_to_room_for_user(
- self, old_room_id: str, new_room_id: str, user_id: str
- ) -> None:
- """Copy all of the push rules from one room to another for a specific
- user.
-
- Args:
- old_room_id: ID of the old room.
- new_room_id: ID of the new room.
- user_id: ID of user to copy push rules for.
- """
- # Retrieve push rules for this user
- user_push_rules = await self.get_push_rules_for_user(user_id)
-
- # Get rules relating to the old room and copy them to the new room
- for rule in user_push_rules:
- conditions = rule.get("conditions", [])
- if any(
- (c.get("key") == "room_id" and c.get("pattern") == old_room_id)
- for c in conditions
- ):
- await self.copy_push_rule_from_room_to_room(new_room_id, user_id, rule)
-
@cachedList(
cached_method_name="get_push_rules_enabled_for_user",
list_name="user_ids",
@@ -866,3 +815,54 @@ class PushRuleStore(PushRulesWorkerStore):
def get_max_push_rules_stream_id(self) -> int:
return self._push_rules_stream_id_gen.get_current_token()
+
+ async def copy_push_rule_from_room_to_room(
+ self, new_room_id: str, user_id: str, rule: dict
+ ) -> None:
+ """Copy a single push rule from one room to another for a specific user.
+
+ Args:
+ new_room_id: ID of the new room.
+ user_id : ID of user the push rule belongs to.
+ rule: A push rule.
+ """
+ # Create new rule id
+ rule_id_scope = "/".join(rule["rule_id"].split("/")[:-1])
+ new_rule_id = rule_id_scope + "/" + new_room_id
+
+ # Change room id in each condition
+ for condition in rule.get("conditions", []):
+ if condition.get("key") == "room_id":
+ condition["pattern"] = new_room_id
+
+ # Add the rule for the new room
+ await self.add_push_rule(
+ user_id=user_id,
+ rule_id=new_rule_id,
+ priority_class=rule["priority_class"],
+ conditions=rule["conditions"],
+ actions=rule["actions"],
+ )
+
+ async def copy_push_rules_from_room_to_room_for_user(
+ self, old_room_id: str, new_room_id: str, user_id: str
+ ) -> None:
+ """Copy all of the push rules from one room to another for a specific
+ user.
+
+ Args:
+ old_room_id: ID of the old room.
+ new_room_id: ID of the new room.
+ user_id: ID of user to copy push rules for.
+ """
+ # Retrieve push rules for this user
+ user_push_rules = await self.get_push_rules_for_user(user_id)
+
+ # Get rules relating to the old room and copy them to the new room
+ for rule in user_push_rules:
+ conditions = rule.get("conditions", [])
+ if any(
+ (c.get("key") == "room_id" and c.get("pattern") == old_room_id)
+ for c in conditions
+ ):
+ await self.copy_push_rule_from_room_to_room(new_room_id, user_id, rule)
|