Add ClientEvent.state

This commit is contained in:
Erik Johnston
2026-03-18 14:47:10 +00:00
parent 7a3ef3986c
commit 299a7f92cd
7 changed files with 23 additions and 21 deletions
+11
View File
@@ -429,6 +429,17 @@ class ClientEvent:
event: "EventBase"
membership: str | None
@classmethod
def state(cls, event: "EventBase") -> "ClientEvent":
"""Wrap a state event with no per-user membership annotation.
The event must be a state event (i.e. have a state_key).
"""
assert event.is_state(), (
f"ClientEvent.state() called with non-state event {event.event_id}"
)
return cls(event=event, membership=None)
@attr.s(slots=True, frozen=True, auto_attribs=True)
class SerializeEventConfig:
+3 -9
View File
@@ -252,10 +252,7 @@ class InitialSyncHandler:
}
d["state"] = await self._event_serializer.serialize_events(
[
ClientEvent(event=e, membership=None)
for e in current_state.values()
],
[ClientEvent.state(e) for e in current_state.values()],
time_now=time_now,
config=serializer_options,
)
@@ -418,10 +415,7 @@ class InitialSyncHandler:
"state": (
# Don't bundle aggregations as this is a deprecated API.
await self._event_serializer.serialize_events(
[
ClientEvent(event=e, membership=None)
for e in room_state.values()
],
[ClientEvent.state(e) for e in room_state.values()],
time_now,
config=serialize_options,
)
@@ -447,7 +441,7 @@ class InitialSyncHandler:
serialize_options = SerializeEventConfig(requester=requester)
# Don't bundle aggregations as this is a deprecated API.
state = await self._event_serializer.serialize_events(
[ClientEvent(event=e, membership=None) for e in current_state.values()],
[ClientEvent.state(e) for e in current_state.values()],
time_now,
config=serialize_options,
)
+1 -1
View File
@@ -265,7 +265,7 @@ class MessageHandler:
room_state = room_state_events[membership_event_id]
events = await self._event_serializer.serialize_events(
[ClientEvent(event=e, membership=None) for e in room_state.values()],
[ClientEvent.state(e) for e in room_state.values()],
self.clock.time_msec(),
config=SerializeEventConfig(requester=requester),
)
+1 -1
View File
@@ -416,7 +416,7 @@ class SearchHandler:
if state_results:
rooms_cat_res["state"] = {
room_id: await self._event_serializer.serialize_events(
[ClientEvent(event=e, membership=None) for e in state_events],
[ClientEvent.state(e) for e in state_events],
time_now,
config=serialize_options,
)
+2 -2
View File
@@ -531,7 +531,7 @@ class RoomStateRestServlet(RestServlet):
events = await self.store.get_events(event_ids.values())
now = self.clock.time_msec()
room_state = await self._event_serializer.serialize_events(
[ClientEvent(event=e, membership=None) for e in events.values()], now
[ClientEvent.state(e) for e in events.values()], now
)
ret = {"state": room_state}
@@ -900,7 +900,7 @@ class RoomEventContextServlet(RestServlet):
bundle_aggregations=event_context.aggregations,
),
"state": await self._event_serializer.serialize_events(
[ClientEvent(event=e, membership=None) for e in event_context.state],
[ClientEvent.state(e) for e in event_context.state],
time_now,
),
"start": event_context.start,
+3 -3
View File
@@ -287,7 +287,7 @@ class RoomStateEventRestServlet(RestServlet):
if format == "event":
event = await self._event_serializer.serialize_event(
ClientEvent(event=data, membership=None),
ClientEvent.state(data),
self.clock.time_msec(),
config=SerializeEventConfig(
event_format=format_event_for_client_v2,
@@ -867,7 +867,7 @@ async def encode_messages_response(
serialized_result[
"state"
] = await serialize_deps.event_serializer.serialize_events(
[ClientEvent(event=e, membership=None) for e in get_messages_result.state],
[ClientEvent.state(e) for e in get_messages_result.state],
time_now,
config=serialize_options,
)
@@ -1175,7 +1175,7 @@ class RoomEventContextServlet(RestServlet):
config=serializer_options,
),
"state": await self._event_serializer.serialize_events(
[ClientEvent(event=e, membership=None) for e in event_context.state],
[ClientEvent.state(e) for e in event_context.state],
time_now,
config=serializer_options,
),
+2 -5
View File
@@ -600,7 +600,7 @@ class SyncRestServlet(RestServlet):
)
serialized_state = await self._event_serializer.serialize_events(
[ClientEvent(event=e, membership=None) for e in state_events],
[ClientEvent.state(e) for e in state_events],
time_now,
config=serialize_options,
)
@@ -990,10 +990,7 @@ class SlidingSyncRestServlet(RestServlet):
):
serialized_required_state = (
await self.event_serializer.serialize_events(
[
ClientEvent(event=e, membership=None)
for e in room_result.required_state
],
[ClientEvent.state(e) for e in room_result.required_state],
time_now,
config=serialize_options,
)