Skip to content

Commit 5d3e19a

Browse files
committed
Merge remote-tracking branch 'maltee1/knock'
2 parents 89b5cae + e09d3cd commit 5d3e19a

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

mautrix/bridge/matrix.py

+51-1
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,26 @@ async def handle_unban(
243243
async def handle_join(self, room_id: RoomID, user_id: UserID, event_id: EventID) -> None:
244244
pass
245245

246+
async def handle_knock(
247+
self, room_id: RoomID, user_id: UserID, reason: str, event_id: EventID
248+
) -> None:
249+
pass
250+
251+
async def handle_retract_knock(
252+
self, room_id: RoomID, user_id: UserID, reason: str, event_id: EventID
253+
) -> None:
254+
pass
255+
256+
async def handle_reject_knock(
257+
self, room_id: RoomID, user_id: UserID, sender: UserID, reason: str, event_id: EventID
258+
) -> None:
259+
pass
260+
261+
async def handle_accept_knock(
262+
self, room_id: RoomID, user_id: UserID, sender: UserID, reason: str, event_id: EventID
263+
) -> None:
264+
pass
265+
246266
async def handle_member_info_change(
247267
self,
248268
room_id: RoomID,
@@ -817,7 +837,16 @@ async def int_handle_event(self, evt: Event, send_bridge_checkpoint: bool = True
817837
prev_content = unsigned.prev_content or MemberStateEventContent()
818838
prev_membership = prev_content.membership if prev_content else Membership.JOIN
819839
if evt.content.membership == Membership.INVITE:
820-
await self.int_handle_invite(evt)
840+
if prev_membership == Membership.KNOCK:
841+
await self.handle_accept_knock(
842+
evt.room_id,
843+
UserID(evt.state_key),
844+
evt.sender,
845+
evt.content.reason,
846+
evt.event_id,
847+
)
848+
else:
849+
await self.int_handle_invite(evt)
821850
elif evt.content.membership == Membership.LEAVE:
822851
if prev_membership == Membership.BAN:
823852
await self.handle_unban(
@@ -840,6 +869,20 @@ async def int_handle_event(self, evt: Event, send_bridge_checkpoint: bool = True
840869
evt.content.reason,
841870
evt.event_id,
842871
)
872+
elif prev_membership == Membership.KNOCK:
873+
if evt.sender == evt.state_key:
874+
await self.handle_retract_knock(
875+
evt.room_id, UserID(evt.state_key), evt.content.reason, evt.event_id
876+
)
877+
else:
878+
await self.handle_reject_knock(
879+
evt.room_id,
880+
UserID(evt.state_key),
881+
evt.sender,
882+
evt.content.reason,
883+
evt.event_id,
884+
)
885+
843886
elif evt.sender == evt.state_key:
844887
await self.handle_leave(evt.room_id, UserID(evt.state_key), evt.event_id)
845888
else:
@@ -865,6 +908,13 @@ async def int_handle_event(self, evt: Event, send_bridge_checkpoint: bool = True
865908
await self.handle_member_info_change(
866909
evt.room_id, UserID(evt.state_key), evt.content, prev_content, evt.event_id
867910
)
911+
elif evt.content.membership == Membership.KNOCK:
912+
await self.handle_knock(
913+
evt.room_id,
914+
UserID(evt.state_key),
915+
evt.content.reason,
916+
evt.event_id,
917+
)
868918
elif evt.type in (EventType.ROOM_MESSAGE, EventType.STICKER):
869919
evt: MessageEvent
870920
if evt.type != EventType.ROOM_MESSAGE:

0 commit comments

Comments
 (0)