Cleanly handle invalid rooms on hierarchy endpoint

This commit is contained in:
Nyaaori 2022-10-15 14:29:20 +02:00
parent 833d8f1b70
commit 03c02133a2
No known key found for this signature in database
GPG key ID: E7819C3ED4D1F82E

View file

@ -117,7 +117,9 @@ pub async fn get_hierarchy_route(
if skip == 0 {
if rooms_chunk.len() < limit {
room_set.insert(room_id.clone());
rooms_chunk.push(get_room_chunk(room_id, suggested_only, pdus).await?);
if let Ok(chunk) = get_room_chunk(room_id, suggested_only, pdus).await {
rooms_chunk.push(chunk)
};
}
} else {
skip -= 1;
@ -144,7 +146,7 @@ pub async fn get_hierarchy_route(
async fn get_room_chunk(
room_id: OwnedRoomId,
suggested_only: bool,
phus: Vec<Arc<PduEvent>>,
pdus: Vec<Arc<PduEvent>>,
) -> Result<SpaceHierarchyRoomsChunk> {
Ok(SpaceHierarchyRoomsChunk {
canonical_alias: services()
@ -251,7 +253,7 @@ async fn get_room_chunk(
})
.ok()
.flatten(),
children_state: phus
children_state: pdus
.into_iter()
.flat_map(|pdu| {
Some(HierarchySpaceChildEvent {