Skip to content

Commit 10afead

Browse files
committed
Merge branch 'read-marker-puppet-indicator' into 'master'
Allow sending custom data in /read_markers too See merge request beeper/synapse!13
2 parents ff4dbe1 + b726254 commit 10afead

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

synapse/handlers/read_marker.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
# limitations under the License.
1414

1515
import logging
16-
from typing import TYPE_CHECKING
16+
from typing import TYPE_CHECKING, Optional
1717

1818
from synapse.util.async_helpers import Linearizer
19+
from synapse.types import JsonDict
1920

2021
if TYPE_CHECKING:
2122
from synapse.server import HomeServer
@@ -31,7 +32,7 @@ def __init__(self, hs: "HomeServer"):
3132
self.read_marker_linearizer = Linearizer(name="read_marker")
3233

3334
async def received_client_read_marker(
34-
self, room_id: str, user_id: str, event_id: str
35+
self, room_id: str, user_id: str, event_id: str, extra_content: Optional[JsonDict] = None
3536
) -> None:
3637
"""Updates the read marker for a given user in a given room if the event ID given
3738
is ahead in the stream relative to the current read marker.
@@ -54,7 +55,7 @@ async def received_client_read_marker(
5455
)
5556

5657
if should_update:
57-
content = {"event_id": event_id}
58+
content = {"event_id": event_id, **(extra_content or {})}
5859
await self.account_data_handler.add_account_data_to_room(
5960
user_id, room_id, "m.fully_read", content
6061
)

synapse/rest/client/read_marker.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ async def on_POST(
4949

5050
body = parse_json_object_from_request(request)
5151
read_event_id = body.get("m.read", None)
52+
read_extra = body.get("com.beeper.read.extra", None)
5253
hidden = body.get(ReadReceiptEventFields.MSC2285_HIDDEN, False)
5354

5455
if not isinstance(hidden, bool):
@@ -66,14 +67,17 @@ async def on_POST(
6667
user_id=requester.user.to_string(),
6768
event_id=read_event_id,
6869
hidden=hidden,
70+
extra_content=read_extra,
6971
)
7072

7173
read_marker_event_id = body.get("m.fully_read", None)
74+
read_marker_extra = body.get("com.beeper.fully_read.extra", None)
7275
if read_marker_event_id:
7376
await self.read_marker_handler.received_client_read_marker(
7477
room_id,
7578
user_id=requester.user.to_string(),
7679
event_id=read_marker_event_id,
80+
extra_content=read_marker_extra,
7781
)
7882

7983
return 200, {}

0 commit comments

Comments
 (0)