-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Don't error on unknown receipt types #12670
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| Implement [changes](https://github.com/matrix-org/matrix-spec-proposals/pull/2285/commits/4a77139249c2e830aec3c7d6bd5501a514d1cc27) to [MSC2285 (hidden read receipts)](https://github.com/matrix-org/matrix-spec-proposals/pull/2285). Contributed by @SimonBrandner. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,7 +16,6 @@ | |
| from typing import TYPE_CHECKING, Tuple | ||
|
|
||
| from synapse.api.constants import ReceiptTypes | ||
| from synapse.api.errors import SynapseError | ||
| from synapse.http.server import HttpServer | ||
| from synapse.http.servlet import RestServlet, parse_json_object_from_request | ||
| from synapse.http.site import SynapseRequest | ||
|
|
@@ -50,17 +49,21 @@ async def on_POST( | |
|
|
||
| body = parse_json_object_from_request(request) | ||
|
|
||
| valid_receipt_types = {ReceiptTypes.READ, ReceiptTypes.FULLY_READ} | ||
| if self.config.experimental.msc2285_enabled: | ||
| valid_receipt_types.add(ReceiptTypes.READ_PRIVATE) | ||
|
|
||
| if set(body.keys()) > valid_receipt_types: | ||
| raise SynapseError( | ||
| 400, | ||
| "Receipt type must be 'm.read', 'org.matrix.msc2285.read.private' or 'm.fully_read'" | ||
| if self.config.experimental.msc2285_enabled | ||
| else "Receipt type must be 'm.read' or 'm.fully_read'", | ||
| ) | ||
| valid_receipt_types = { | ||
| ReceiptTypes.READ, | ||
| ReceiptTypes.FULLY_READ, | ||
| ReceiptTypes.READ_PRIVATE, | ||
| } | ||
|
Comment on lines
+52
to
+56
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think you still want to consider
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See #12670 (comment). My understanding from what Erik said was that this only governs the warning we show, not the enforcement logic later(?)
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, but would still be a confusing/incorrect warning.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Although I guess the alternative is log spam...so maybe this is best. |
||
|
|
||
| unrecognized_types = set(body.keys()) - valid_receipt_types | ||
| if unrecognized_types: | ||
| # It's fine if there are unrecognized receipt types, but let's log | ||
| # it to help debug clients that have typoed the receipt type. | ||
| # | ||
| # We specifically *don't* error here, as a) it stops us processing | ||
| # the valid receipts, and b) we need to be extensible on receipt | ||
| # types. | ||
| logger.info("Ignoring unrecognized receipt types: %s", unrecognized_types) | ||
|
|
||
| read_event_id = body.get(ReceiptTypes.READ, None) | ||
| if read_event_id: | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.