diff --git a/matrix_sdk_base/src/client.rs b/matrix_sdk_base/src/client.rs index e12197b4..0aaf3465 100644 --- a/matrix_sdk_base/src/client.rs +++ b/matrix_sdk_base/src/client.rs @@ -788,7 +788,7 @@ impl BaseClient { self.handle_account_data(account_data.events, &mut changes) .await; - let push_rules = self.get_push_rules(&changes).await; + let push_rules = self.get_push_rules(&changes).await?; let mut new_rooms = Rooms::default(); @@ -1387,23 +1387,22 @@ impl BaseClient { /// Get the push rules. /// /// Gets the push rules from `changes` if they have been updated, otherwise get them from the - /// store. As a fallback, uses `Ruleset::server_default`. - pub async fn get_push_rules(&self, changes: &StateChanges) -> Ruleset { + /// store. As a fallback, uses `Ruleset::server_default` if the user is logged in. + pub async fn get_push_rules(&self, changes: &StateChanges) -> Result { if let Some(AnyBasicEvent::PushRules(event)) = changes.account_data.get(&EventType::PushRules.to_string()) { - event.content.global.clone() + Ok(event.content.global.clone()) } else if let Some(AnyBasicEvent::PushRules(event)) = self .store .get_account_data_event(EventType::PushRules) - .await - .unwrap() + .await? { - event.content.global + Ok(event.content.global) + } else if let Some(session) = self.get_session().await { + Ok(Ruleset::server_default(&session.user_id)) } else { - // FIXME don't panic if the user is not logged in? - let session = self.get_session().await.unwrap(); - Ruleset::server_default(&session.user_id) + Ok(Ruleset::new()) } }