|
|
|
@ -40,7 +40,7 @@ from synapse.events.validator import EventValidator |
|
|
|
|
from synapse.storage.roommember import RoomsForUser |
|
|
|
|
from synapse.types import JsonDict, Requester, RoomAlias, RoomID, StateMap, UserID |
|
|
|
|
from synapse.util.async_helpers import Linearizer |
|
|
|
|
from synapse.util.distributor import user_joined_room, user_left_room |
|
|
|
|
from synapse.util.distributor import user_left_room |
|
|
|
|
|
|
|
|
|
from ._base import BaseHandler |
|
|
|
|
|
|
|
|
@ -148,17 +148,6 @@ class RoomMemberHandler: |
|
|
|
|
""" |
|
|
|
|
raise NotImplementedError() |
|
|
|
|
|
|
|
|
|
@abc.abstractmethod |
|
|
|
|
async def _user_joined_room(self, target: UserID, room_id: str) -> None: |
|
|
|
|
"""Notifies distributor on master process that the user has joined the |
|
|
|
|
room. |
|
|
|
|
|
|
|
|
|
Args: |
|
|
|
|
target |
|
|
|
|
room_id |
|
|
|
|
""" |
|
|
|
|
raise NotImplementedError() |
|
|
|
|
|
|
|
|
|
@abc.abstractmethod |
|
|
|
|
async def _user_left_room(self, target: UserID, room_id: str) -> None: |
|
|
|
|
"""Notifies distributor on master process that the user has left the |
|
|
|
@ -221,7 +210,6 @@ class RoomMemberHandler: |
|
|
|
|
|
|
|
|
|
prev_member_event_id = prev_state_ids.get((EventTypes.Member, user_id), None) |
|
|
|
|
|
|
|
|
|
newly_joined = False |
|
|
|
|
if event.membership == Membership.JOIN: |
|
|
|
|
newly_joined = True |
|
|
|
|
if prev_member_event_id: |
|
|
|
@ -246,12 +234,7 @@ class RoomMemberHandler: |
|
|
|
|
requester, event, context, extra_users=[target], ratelimit=ratelimit, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
if event.membership == Membership.JOIN and newly_joined: |
|
|
|
|
# Only fire user_joined_room if the user has actually joined the |
|
|
|
|
# room. Don't bother if the user is just changing their profile |
|
|
|
|
# info. |
|
|
|
|
await self._user_joined_room(target, room_id) |
|
|
|
|
elif event.membership == Membership.LEAVE: |
|
|
|
|
if event.membership == Membership.LEAVE: |
|
|
|
|
if prev_member_event_id: |
|
|
|
|
prev_member_event = await self.store.get_event(prev_member_event_id) |
|
|
|
|
if prev_member_event.membership == Membership.JOIN: |
|
|
|
@ -726,17 +709,7 @@ class RoomMemberHandler: |
|
|
|
|
(EventTypes.Member, event.state_key), None |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
if event.membership == Membership.JOIN: |
|
|
|
|
# Only fire user_joined_room if the user has actually joined the |
|
|
|
|
# room. Don't bother if the user is just changing their profile |
|
|
|
|
# info. |
|
|
|
|
newly_joined = True |
|
|
|
|
if prev_member_event_id: |
|
|
|
|
prev_member_event = await self.store.get_event(prev_member_event_id) |
|
|
|
|
newly_joined = prev_member_event.membership != Membership.JOIN |
|
|
|
|
if newly_joined: |
|
|
|
|
await self._user_joined_room(target_user, room_id) |
|
|
|
|
elif event.membership == Membership.LEAVE: |
|
|
|
|
if event.membership == Membership.LEAVE: |
|
|
|
|
if prev_member_event_id: |
|
|
|
|
prev_member_event = await self.store.get_event(prev_member_event_id) |
|
|
|
|
if prev_member_event.membership == Membership.JOIN: |
|
|
|
@ -1002,10 +975,9 @@ class RoomMemberHandler: |
|
|
|
|
|
|
|
|
|
class RoomMemberMasterHandler(RoomMemberHandler): |
|
|
|
|
def __init__(self, hs): |
|
|
|
|
super(RoomMemberMasterHandler, self).__init__(hs) |
|
|
|
|
super().__init__(hs) |
|
|
|
|
|
|
|
|
|
self.distributor = hs.get_distributor() |
|
|
|
|
self.distributor.declare("user_joined_room") |
|
|
|
|
self.distributor.declare("user_left_room") |
|
|
|
|
|
|
|
|
|
async def _is_remote_room_too_complex( |
|
|
|
@ -1085,7 +1057,6 @@ class RoomMemberMasterHandler(RoomMemberHandler): |
|
|
|
|
event_id, stream_id = await self.federation_handler.do_invite_join( |
|
|
|
|
remote_room_hosts, room_id, user.to_string(), content |
|
|
|
|
) |
|
|
|
|
await self._user_joined_room(user, room_id) |
|
|
|
|
|
|
|
|
|
# Check the room we just joined wasn't too large, if we didn't fetch the |
|
|
|
|
# complexity of it before. |
|
|
|
@ -1228,11 +1199,6 @@ class RoomMemberMasterHandler(RoomMemberHandler): |
|
|
|
|
) |
|
|
|
|
return event.event_id, stream_id |
|
|
|
|
|
|
|
|
|
async def _user_joined_room(self, target: UserID, room_id: str) -> None: |
|
|
|
|
"""Implements RoomMemberHandler._user_joined_room |
|
|
|
|
""" |
|
|
|
|
user_joined_room(self.distributor, target, room_id) |
|
|
|
|
|
|
|
|
|
async def _user_left_room(self, target: UserID, room_id: str) -> None: |
|
|
|
|
"""Implements RoomMemberHandler._user_left_room |
|
|
|
|
""" |
|
|
|
|