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

Commit 6302753

Browse files
authored
Deduplicate is_server_notices_room. (#13780)
1 parent cf65433 commit 6302753

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

changelog.d/13780.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Deduplicate `is_server_notices_room`.

synapse/handlers/message.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -752,20 +752,12 @@ async def _is_exempt_from_privacy_policy(
752752
if builder.type == EventTypes.Member:
753753
membership = builder.content.get("membership", None)
754754
if membership == Membership.JOIN:
755-
return await self._is_server_notices_room(builder.room_id)
755+
return await self.store.is_server_notice_room(builder.room_id)
756756
elif membership == Membership.LEAVE:
757757
# the user is always allowed to leave (but not kick people)
758758
return builder.state_key == requester.user.to_string()
759759
return False
760760

761-
async def _is_server_notices_room(self, room_id: str) -> bool:
762-
if self.config.servernotices.server_notices_mxid is None:
763-
return False
764-
is_server_notices_room = await self.store.check_local_user_in_room(
765-
user_id=self.config.servernotices.server_notices_mxid, room_id=room_id
766-
)
767-
return is_server_notices_room
768-
769761
async def assert_accepted_privacy_policy(self, requester: Requester) -> None:
770762
"""Check if a user has accepted the privacy policy
771763

synapse/handlers/room_member.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -837,7 +837,7 @@ async def update_membership_locked(
837837
old_membership == Membership.INVITE
838838
and effective_membership_state == Membership.LEAVE
839839
):
840-
is_blocked = await self._is_server_notice_room(room_id)
840+
is_blocked = await self.store.is_server_notice_room(room_id)
841841
if is_blocked:
842842
raise SynapseError(
843843
HTTPStatus.FORBIDDEN,
@@ -1617,14 +1617,6 @@ async def _is_host_in_room(self, current_state_ids: StateMap[str]) -> bool:
16171617

16181618
return False
16191619

1620-
async def _is_server_notice_room(self, room_id: str) -> bool:
1621-
if self._server_notices_mxid is None:
1622-
return False
1623-
is_server_notices_room = await self.store.check_local_user_in_room(
1624-
user_id=self._server_notices_mxid, room_id=room_id
1625-
)
1626-
return is_server_notices_room
1627-
16281620

16291621
class RoomMemberMasterHandler(RoomMemberHandler):
16301622
def __init__(self, hs: "HomeServer"):

synapse/storage/databases/main/roommember.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ def __init__(
8888
# at a time. Keyed by room_id.
8989
self._joined_host_linearizer = Linearizer("_JoinedHostsCache")
9090

91+
self._server_notices_mxid = hs.config.servernotices.server_notices_mxid
92+
9193
if (
9294
self.hs.config.worker.run_background_tasks
9395
and self.hs.config.metrics.metrics_flags.known_servers
@@ -504,6 +506,21 @@ async def check_local_user_in_room(self, user_id: str, room_id: str) -> bool:
504506

505507
return membership == Membership.JOIN
506508

509+
async def is_server_notice_room(self, room_id: str) -> bool:
510+
"""
511+
Determines whether the given room is a 'Server Notices' room, used for
512+
sending server notices to a user.
513+
514+
This is determined by seeing whether the server notices user is present
515+
in the room.
516+
"""
517+
if self._server_notices_mxid is None:
518+
return False
519+
is_server_notices_room = await self.check_local_user_in_room(
520+
user_id=self._server_notices_mxid, room_id=room_id
521+
)
522+
return is_server_notices_room
523+
507524
async def get_local_current_membership_for_user_in_room(
508525
self, user_id: str, room_id: str
509526
) -> Tuple[Optional[str], Optional[str]]:

0 commit comments

Comments
 (0)