Skip to content
Snippets Groups Projects
Commit b9c442c8 authored by Mark Haines's avatar Mark Haines
Browse files

Include transaction ids in unsigned section of events in the sync results for...

Include transaction ids in unsigned section of events in the sync results for the clients that made those requests
parent 1b4a164c
Branches
Tags
No related merge requests found
......@@ -103,7 +103,7 @@ def format_event_for_client_v1(d):
drop_keys = (
"auth_events", "prev_events", "hashes", "signatures", "depth",
"unsigned", "origin"
"unsigned", "origin", "prev_state"
)
for key in drop_keys:
d.pop(key, None)
......@@ -112,7 +112,8 @@ def format_event_for_client_v1(d):
def format_event_for_client_v2(d):
drop_keys = (
"auth_events", "prev_events", "hashes", "signatures", "depth", "origin"
"auth_events", "prev_events", "hashes", "signatures", "depth",
"origin", "prev_state",
)
for key in drop_keys:
d.pop(key, None)
......@@ -140,7 +141,7 @@ def serialize_event(e, time_now_ms, as_client_event=True,
if "age_ts" in d["unsigned"]:
d["unsigned"]["age"] = time_now_ms - d["unsigned"]["age_ts"]
d["unsigned"]["age_ts"]
del d["unsigned"]["age_ts"]
if "redacted_because" in e.unsigned:
d["unsigned"]["redacted_because"] = serialize_event(
......@@ -148,8 +149,8 @@ def serialize_event(e, time_now_ms, as_client_event=True,
)
if token_id is not None:
if token_id == e.internal_metadata["token_id"]:
txn_id = e.internal_metadata.get("txn_id", None)
if token_id == getattr(e.internal_metadata, "token_id", None):
txn_id = getattr(e.internal_metadata, "txn_id", None)
if txn_id is not None:
d["unsigned"]["transaction_id"] = txn_id
......
......@@ -18,7 +18,9 @@ from twisted.internet import defer
from synapse.http.servlet import RestServlet
from synapse.handlers.sync import SyncConfig
from synapse.types import StreamToken
from synapse.events.utils import serialize_event
from synapse.events.utils import (
serialize_event, format_event_for_client_v2_without_event_id,
)
from ._base import client_v2_pattern
import logging
......@@ -139,7 +141,9 @@ class SyncRestServlet(RestServlet):
"private_user_data": self.encode_events(
sync_result.private_user_data, filter, time_now
),
"rooms": self.encode_rooms(sync_result.rooms, filter, time_now),
"rooms": self.encode_rooms(
sync_result.rooms, filter, time_now, client.token_id
),
"next_batch": sync_result.next_batch.to_string(),
}
......@@ -153,25 +157,30 @@ class SyncRestServlet(RestServlet):
# TODO(mjark): Respect formatting requirements in the filter.
return serialize_event(event, time_now)
def encode_rooms(self, rooms, filter, time_now):
return [self.encode_room(room, filter, time_now) for room in rooms]
def encode_rooms(self, rooms, filter, time_now, token_id):
return [
self.encode_room(room, filter, time_now, token_id)
for room in rooms
]
@staticmethod
def encode_room(room, filter, time_now):
def encode_room(room, filter, time_now, token_id):
event_map = {}
state_event_ids = []
recent_event_ids = []
for event in room.state:
# TODO(mjark): Respect formatting requirements in the filter.
event_map[event.event_id] = serialize_event(
event, time_now, strip_ids=True
event, time_now, token_id=token_id,
event_format=format_event_for_client_v2_without_event_id,
)
state_event_ids.append(event.event_id)
for event in room.events:
# TODO(mjark): Respect formatting requirements in the filter.
event_map[event.event_id] = serialize_event(
event, time_now, strip_ids=True
event, time_now, token_id=token_id,
event_format=format_event_for_client_v2_without_event_id,
)
recent_event_ids.append(event.event_id)
return {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment