Allow custom content in read receipts

This commit is contained in:
Tulir Asokan 2023-02-12 15:02:13 +02:00
parent 4eddcf6653
commit 7dbc917769
4 changed files with 18 additions and 5 deletions

View file

@ -70,12 +70,16 @@ class ReadMarkerRestServlet(RestServlet):
# TODO Add validation to reject non-string event IDs.
if not event_id:
continue
extra_content = body.get(
receipt_type.replace("m.", "com.beeper.") + ".extra", None
)
if receipt_type == ReceiptTypes.FULLY_READ:
await self.read_marker_handler.received_client_read_marker(
room_id,
user_id=requester.user.to_string(),
event_id=event_id,
extra_content=extra_content,
)
else:
await self.receipts_handler.received_client_receipt(
@ -85,6 +89,7 @@ class ReadMarkerRestServlet(RestServlet):
event_id=event_id,
# Setting the thread ID is not possible with the /read_markers endpoint.
thread_id=None,
extra_content=extra_content,
)
return 200, {}

View file

@ -65,7 +65,7 @@ class ReceiptRestServlet(RestServlet):
f"Receipt type must be {', '.join(self._known_receipt_types)}",
)
body = parse_json_object_from_request(request)
body = parse_json_object_from_request(request, allow_empty_body=False)
# Pull the thread ID, if one exists.
thread_id = None
@ -100,6 +100,7 @@ class ReceiptRestServlet(RestServlet):
room_id,
user_id=requester.user.to_string(),
event_id=event_id,
extra_content=body,
)
else:
await self.receipts_handler.received_client_receipt(
@ -108,6 +109,7 @@ class ReceiptRestServlet(RestServlet):
user_id=requester.user.to_string(),
event_id=event_id,
thread_id=thread_id,
extra_content=body,
)
return 200, {}