fix: don't show removed rooms in space

This commit is contained in:
Timo Kösters 2023-08-09 22:21:21 +02:00
parent c028e0553c
commit 183558150d
No known key found for this signature in database
GPG Key ID: 0B25E636FBA7E4CB
1 changed files with 17 additions and 3 deletions

View File

@ -19,6 +19,7 @@ use ruma::{
join_rules::{self, AllowRule, JoinRule, RoomJoinRulesEventContent},
topic::RoomTopicEventContent,
},
space::child::SpaceChildEventContent,
StateEventType,
},
space::SpaceRoomJoinRule,
@ -124,11 +125,24 @@ impl Service {
if event_type != StateEventType::SpaceChild {
continue;
}
let pdu = services()
.rooms
.timeline
.get_pdu(&id)?
.ok_or_else(|| Error::bad_database("Event in space state not found"))?;
if serde_json::from_str::<SpaceChildEventContent>(pdu.content.get())
.ok()
.and_then(|c| c.via)
.map_or(true, |v| v.is_empty())
{
continue;
}
if let Ok(room_id) = OwnedRoomId::try_from(state_key) {
children_ids.push(room_id);
children_pdus.push(services().rooms.timeline.get_pdu(&id)?.ok_or_else(
|| Error::bad_database("Event in space state not found"),
)?);
children_pdus.push(pdu);
}
}