fix(sync): handle wildcard state keys in sliding sync required_state

This commit is contained in:
Ellie
2026-02-15 15:35:29 +00:00
committed by Jade Ellis
parent f3f82831b4
commit e3b874d336
+7 -1
View File
@@ -685,8 +685,15 @@ async fn collect_required_state(
required_state_request: &BTreeSet<TypeStateKey>, required_state_request: &BTreeSet<TypeStateKey>,
) -> Vec<Raw<AnySyncStateEvent>> { ) -> Vec<Raw<AnySyncStateEvent>> {
let mut required_state = Vec::new(); let mut required_state = Vec::new();
let mut wildcard_types: BTreeSet<&StateEventType> = BTreeSet::new();
for (event_type, state_key) in required_state_request { for (event_type, state_key) in required_state_request {
if wildcard_types.contains(event_type) {
continue;
}
if state_key.as_str() == "*" { if state_key.as_str() == "*" {
wildcard_types.insert(event_type);
if let Ok(keys) = services if let Ok(keys) = services
.rooms .rooms
.state_accessor .state_accessor
@@ -703,7 +710,6 @@ async fn collect_required_state(
required_state.push(Event::into_format(event)); required_state.push(Event::into_format(event));
} }
} }
break;
} }
} else if let Ok(event) = services } else if let Ok(event) = services
.rooms .rooms