diff --git a/src/api/client/directory.rs b/src/api/client/directory.rs
index 9ce4ffd79..ef475a680 100644
--- a/src/api/client/directory.rs
+++ b/src/api/client/directory.rs
@@ -13,7 +13,6 @@
avatar::RoomAvatarEventContent,
create::RoomCreateEventContent,
join_rules::{JoinRule, RoomJoinRulesEventContent},
- topic::RoomTopicEventContent,
},
StateEventType,
},
@@ -243,15 +242,7 @@ pub(crate) async fn get_public_rooms_filtered_helper(
topic: services()
.rooms
.state_accessor
- .room_state_get(&room_id, &StateEventType::RoomTopic, "")?
- .map_or(Ok(None), |s| {
- serde_json::from_str(s.content.get())
- .map(|c: RoomTopicEventContent| Some(c.topic))
- .map_err(|e| {
- error!("Invalid room topic event in database for room {room_id}: {e}");
- Error::bad_database("Invalid room topic event in database.")
- })
- })
+ .get_room_topic(&room_id)
.unwrap_or(None),
world_readable: services().rooms.state_accessor.is_world_readable(&room_id)?,
guest_can_join: services()
diff --git a/src/service/rooms/spaces/mod.rs b/src/service/rooms/spaces/mod.rs
index c96ab7a05..ffe1935dc 100644
--- a/src/service/rooms/spaces/mod.rs
+++ b/src/service/rooms/spaces/mod.rs
@@ -17,7 +17,6 @@
avatar::RoomAvatarEventContent,
create::RoomCreateEventContent,
join_rules::{AllowRule, JoinRule, RoomJoinRulesEventContent, RoomMembership},
- topic::RoomTopicEventContent,
},
space::child::{HierarchySpaceChildEvent, SpaceChildEventContent},
StateEventType,
@@ -573,15 +572,7 @@ fn get_room_summary(
topic: services()
.rooms
.state_accessor
- .room_state_get(room_id, &StateEventType::RoomTopic, "")?
- .map_or(Ok(None), |s| {
- serde_json::from_str(s.content.get())
- .map(|c: RoomTopicEventContent| Some(c.topic))
- .map_err(|_| {
- error!("Invalid room topic event in database for room {}", room_id);
- Error::bad_database("Invalid room topic event in database.")
- })
- })
+ .get_room_topic(room_id)
.unwrap_or(None),
world_readable: services().rooms.state_accessor.is_world_readable(room_id)?,
guest_can_join: services().rooms.state_accessor.guest_can_join(room_id)?,
diff --git a/src/service/rooms/state_accessor/mod.rs b/src/service/rooms/state_accessor/mod.rs
index 62c8c224b..d3dc92eff 100644
--- a/src/service/rooms/state_accessor/mod.rs
+++ b/src/service/rooms/state_accessor/mod.rs
@@ -15,6 +15,7 @@
history_visibility::{HistoryVisibility, RoomHistoryVisibilityEventContent},
member::{MembershipState, RoomMemberEventContent},
name::RoomNameEventContent,
+ topic::RoomTopicEventContent,
},
StateEventType,
},
@@ -341,4 +342,17 @@ pub fn get_canonical_alias(&self, room_id: &RoomId) -> Result