|
|
|
@ -285,6 +285,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
allow_no_prev_events: bool = False, |
|
|
|
|
prev_event_ids: Optional[List[str]] = None, |
|
|
|
|
state_event_ids: Optional[List[str]] = None, |
|
|
|
|
depth: Optional[int] = None, |
|
|
|
|
txn_id: Optional[str] = None, |
|
|
|
|
ratelimit: bool = True, |
|
|
|
|
content: Optional[dict] = None, |
|
|
|
@ -315,6 +316,9 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
prev_events are set so we need to set them ourself via this argument. |
|
|
|
|
This should normally be left as None, which will cause the auth_event_ids |
|
|
|
|
to be calculated based on the room state at the prev_events. |
|
|
|
|
depth: Override the depth used to order the event in the DAG. |
|
|
|
|
Should normally be set to None, which will cause the depth to be calculated |
|
|
|
|
based on the prev_events. |
|
|
|
|
|
|
|
|
|
txn_id: |
|
|
|
|
ratelimit: |
|
|
|
@ -370,6 +374,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
allow_no_prev_events=allow_no_prev_events, |
|
|
|
|
prev_event_ids=prev_event_ids, |
|
|
|
|
state_event_ids=state_event_ids, |
|
|
|
|
depth=depth, |
|
|
|
|
require_consent=require_consent, |
|
|
|
|
outlier=outlier, |
|
|
|
|
historical=historical, |
|
|
|
@ -466,6 +471,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
allow_no_prev_events: bool = False, |
|
|
|
|
prev_event_ids: Optional[List[str]] = None, |
|
|
|
|
state_event_ids: Optional[List[str]] = None, |
|
|
|
|
depth: Optional[int] = None, |
|
|
|
|
) -> Tuple[str, int]: |
|
|
|
|
"""Update a user's membership in a room. |
|
|
|
|
|
|
|
|
@ -501,6 +507,9 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
prev_events are set so we need to set them ourself via this argument. |
|
|
|
|
This should normally be left as None, which will cause the auth_event_ids |
|
|
|
|
to be calculated based on the room state at the prev_events. |
|
|
|
|
depth: Override the depth used to order the event in the DAG. |
|
|
|
|
Should normally be set to None, which will cause the depth to be calculated |
|
|
|
|
based on the prev_events. |
|
|
|
|
|
|
|
|
|
Returns: |
|
|
|
|
A tuple of the new event ID and stream ID. |
|
|
|
@ -540,6 +549,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
allow_no_prev_events=allow_no_prev_events, |
|
|
|
|
prev_event_ids=prev_event_ids, |
|
|
|
|
state_event_ids=state_event_ids, |
|
|
|
|
depth=depth, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
return result |
|
|
|
@ -562,6 +572,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
allow_no_prev_events: bool = False, |
|
|
|
|
prev_event_ids: Optional[List[str]] = None, |
|
|
|
|
state_event_ids: Optional[List[str]] = None, |
|
|
|
|
depth: Optional[int] = None, |
|
|
|
|
) -> Tuple[str, int]: |
|
|
|
|
"""Helper for update_membership. |
|
|
|
|
|
|
|
|
@ -599,6 +610,9 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
prev_events are set so we need to set them ourself via this argument. |
|
|
|
|
This should normally be left as None, which will cause the auth_event_ids |
|
|
|
|
to be calculated based on the room state at the prev_events. |
|
|
|
|
depth: Override the depth used to order the event in the DAG. |
|
|
|
|
Should normally be set to None, which will cause the depth to be calculated |
|
|
|
|
based on the prev_events. |
|
|
|
|
|
|
|
|
|
Returns: |
|
|
|
|
A tuple of the new event ID and stream ID. |
|
|
|
@ -732,6 +746,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
allow_no_prev_events=allow_no_prev_events, |
|
|
|
|
prev_event_ids=prev_event_ids, |
|
|
|
|
state_event_ids=state_event_ids, |
|
|
|
|
depth=depth, |
|
|
|
|
content=content, |
|
|
|
|
require_consent=require_consent, |
|
|
|
|
outlier=outlier, |
|
|
|
@ -967,6 +982,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
ratelimit=ratelimit, |
|
|
|
|
prev_event_ids=latest_event_ids, |
|
|
|
|
state_event_ids=state_event_ids, |
|
|
|
|
depth=depth, |
|
|
|
|
content=content, |
|
|
|
|
require_consent=require_consent, |
|
|
|
|
outlier=outlier, |
|
|
|
@ -1322,7 +1338,9 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
requester: Requester, |
|
|
|
|
txn_id: Optional[str], |
|
|
|
|
id_access_token: Optional[str] = None, |
|
|
|
|
) -> int: |
|
|
|
|
prev_event_ids: Optional[List[str]] = None, |
|
|
|
|
depth: Optional[int] = None, |
|
|
|
|
) -> Tuple[str, int]: |
|
|
|
|
"""Invite a 3PID to a room. |
|
|
|
|
|
|
|
|
|
Args: |
|
|
|
@ -1335,9 +1353,13 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
txn_id: The transaction ID this is part of, or None if this is not |
|
|
|
|
part of a transaction. |
|
|
|
|
id_access_token: The optional identity server access token. |
|
|
|
|
depth: Override the depth used to order the event in the DAG. |
|
|
|
|
prev_event_ids: The event IDs to use as the prev events |
|
|
|
|
Should normally be set to None, which will cause the depth to be calculated |
|
|
|
|
based on the prev_events. |
|
|
|
|
|
|
|
|
|
Returns: |
|
|
|
|
The new stream ID. |
|
|
|
|
Tuple of event ID and stream ordering position |
|
|
|
|
|
|
|
|
|
Raises: |
|
|
|
|
ShadowBanError if the requester has been shadow-banned. |
|
|
|
@ -1383,7 +1405,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
# We don't check the invite against the spamchecker(s) here (through |
|
|
|
|
# user_may_invite) because we'll do it further down the line anyway (in |
|
|
|
|
# update_membership_locked). |
|
|
|
|
_, stream_id = await self.update_membership( |
|
|
|
|
event_id, stream_id = await self.update_membership( |
|
|
|
|
requester, UserID.from_string(invitee), room_id, "invite", txn_id=txn_id |
|
|
|
|
) |
|
|
|
|
else: |
|
|
|
@ -1402,7 +1424,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
additional_fields=spam_check[1], |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
stream_id = await self._make_and_store_3pid_invite( |
|
|
|
|
event, stream_id = await self._make_and_store_3pid_invite( |
|
|
|
|
requester, |
|
|
|
|
id_server, |
|
|
|
|
medium, |
|
|
|
@ -1411,9 +1433,12 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
inviter, |
|
|
|
|
txn_id=txn_id, |
|
|
|
|
id_access_token=id_access_token, |
|
|
|
|
prev_event_ids=prev_event_ids, |
|
|
|
|
depth=depth, |
|
|
|
|
) |
|
|
|
|
event_id = event.event_id |
|
|
|
|
|
|
|
|
|
return stream_id |
|
|
|
|
return event_id, stream_id |
|
|
|
|
|
|
|
|
|
async def _make_and_store_3pid_invite( |
|
|
|
|
self, |
|
|
|
@ -1425,7 +1450,9 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
user: UserID, |
|
|
|
|
txn_id: Optional[str], |
|
|
|
|
id_access_token: Optional[str] = None, |
|
|
|
|
) -> int: |
|
|
|
|
prev_event_ids: Optional[List[str]] = None, |
|
|
|
|
depth: Optional[int] = None, |
|
|
|
|
) -> Tuple[EventBase, int]: |
|
|
|
|
room_state = await self._storage_controllers.state.get_current_state( |
|
|
|
|
room_id, |
|
|
|
|
StateFilter.from_types( |
|
|
|
@ -1518,8 +1545,10 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
}, |
|
|
|
|
ratelimit=False, |
|
|
|
|
txn_id=txn_id, |
|
|
|
|
prev_event_ids=prev_event_ids, |
|
|
|
|
depth=depth, |
|
|
|
|
) |
|
|
|
|
return stream_id |
|
|
|
|
return event, stream_id |
|
|
|
|
|
|
|
|
|
async def _is_host_in_room(self, current_state_ids: StateMap[str]) -> bool: |
|
|
|
|
# Have we just created the room, and is this about to be the very |
|
|
|
|