diff --git a/changelog.d/12436.feature b/changelog.d/12436.feature new file mode 100644 index 000000000..883ac1557 --- /dev/null +++ b/changelog.d/12436.feature @@ -0,0 +1,2 @@ +Include bundled aggregations in search results +([MSC3666](https://github.com/matrix-org/matrix-spec-proposals/pull/3666)). diff --git a/synapse/config/experimental.py b/synapse/config/experimental.py index 0dd4c5958..447476fbf 100644 --- a/synapse/config/experimental.py +++ b/synapse/config/experimental.py @@ -28,8 +28,6 @@ class ExperimentalConfig(Config): # MSC3440 (thread relation) self.msc3440_enabled: bool = experimental.get("msc3440_enabled", False) - # MSC3666: including bundled relations in /search. - self.msc3666_enabled: bool = experimental.get("msc3666_enabled", False) # MSC3026 (busy presence state) self.msc3026_enabled: bool = experimental.get("msc3026_enabled", False) diff --git a/synapse/handlers/search.py b/synapse/handlers/search.py index 30eddda65..102dd4b57 100644 --- a/synapse/handlers/search.py +++ b/synapse/handlers/search.py @@ -59,8 +59,6 @@ class SearchHandler: self.state_store = self.storage.state self.auth = hs.get_auth() - self._msc3666_enabled = hs.config.experimental.msc3666_enabled - async def get_old_rooms_from_upgraded_room(self, room_id: str) -> Iterable[str]: """Retrieves room IDs of old rooms in the history of an upgraded room. @@ -353,22 +351,20 @@ class SearchHandler: state = await self.state_handler.get_current_state(room_id) state_results[room_id] = list(state.values()) - aggregations = None - if self._msc3666_enabled: - aggregations = await self._relations_handler.get_bundled_aggregations( - # Generate an iterable of EventBase for all the events that will be - # returned, including contextual events. - itertools.chain( - # The events_before and events_after for each context. - itertools.chain.from_iterable( - itertools.chain(context["events_before"], context["events_after"]) # type: ignore[arg-type] - for context in contexts.values() - ), - # The returned events. - search_result.allowed_events, + aggregations = await self._relations_handler.get_bundled_aggregations( + # Generate an iterable of EventBase for all the events that will be + # returned, including contextual events. + itertools.chain( + # The events_before and events_after for each context. + itertools.chain.from_iterable( + itertools.chain(context["events_before"], context["events_after"]) # type: ignore[arg-type] + for context in contexts.values() ), - user.to_string(), - ) + # The returned events. + search_result.allowed_events, + ), + user.to_string(), + ) # We're now about to serialize the events. We should not make any # blocking calls after this. Otherwise, the 'age' will be wrong.