mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-07 12:44:58 -04:00
Accept & store thread IDs for receipts (implement MSC3771). (#13782)
Updates the `/receipts` endpoint and receipt EDU handler to parse a `thread_id` from the body and insert it in the database.
This commit is contained in:
parent
03c2bfb7f8
commit
efd108b45d
17 changed files with 173 additions and 41 deletions
|
@ -49,6 +49,7 @@ class ReceiptRestServlet(RestServlet):
|
|||
ReceiptTypes.READ_PRIVATE,
|
||||
ReceiptTypes.FULLY_READ,
|
||||
}
|
||||
self._msc3771_enabled = hs.config.experimental.msc3771_enabled
|
||||
|
||||
async def on_POST(
|
||||
self, request: SynapseRequest, room_id: str, receipt_type: str, event_id: str
|
||||
|
@ -61,7 +62,17 @@ class ReceiptRestServlet(RestServlet):
|
|||
f"Receipt type must be {', '.join(self._known_receipt_types)}",
|
||||
)
|
||||
|
||||
parse_json_object_from_request(request, allow_empty_body=False)
|
||||
body = parse_json_object_from_request(request)
|
||||
|
||||
# Pull the thread ID, if one exists.
|
||||
thread_id = None
|
||||
if self._msc3771_enabled:
|
||||
if "thread_id" in body:
|
||||
thread_id = body.get("thread_id")
|
||||
if not thread_id or not isinstance(thread_id, str):
|
||||
raise SynapseError(
|
||||
400, "thread_id field must be a non-empty string"
|
||||
)
|
||||
|
||||
await self.presence_handler.bump_presence_active_time(requester.user)
|
||||
|
||||
|
@ -77,6 +88,7 @@ class ReceiptRestServlet(RestServlet):
|
|||
receipt_type,
|
||||
user_id=requester.user.to_string(),
|
||||
event_id=event_id,
|
||||
thread_id=thread_id,
|
||||
)
|
||||
|
||||
return 200, {}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue