From ed52cfc43c7d876ee91f08244a653f3d80a3d0bf Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Fri, 25 Mar 2022 14:48:43 +0100 Subject: [PATCH] fix(base): Propagate push rules deserialization errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … from BaseClient::get_push_rules. --- crates/matrix-sdk-base/src/client.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/matrix-sdk-base/src/client.rs b/crates/matrix-sdk-base/src/client.rs index 5d7e3516c..c42029688 100644 --- a/crates/matrix-sdk-base/src/client.rs +++ b/crates/matrix-sdk-base/src/client.rs @@ -52,9 +52,9 @@ use ruma::{ use ruma::{ api::client::{self as api, push::get_notifications::v3::Notification}, events::{ - room::member::MembershipState, AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent, - AnyStrippedStateEvent, AnySyncEphemeralRoomEvent, AnySyncRoomEvent, AnySyncStateEvent, - GlobalAccountDataEventType, StateEventType, + push_rules::PushRulesEvent, room::member::MembershipState, AnyGlobalAccountDataEvent, + AnyRoomAccountDataEvent, AnyStrippedStateEvent, AnySyncEphemeralRoomEvent, + AnySyncRoomEvent, AnySyncStateEvent, GlobalAccountDataEventType, StateEventType, }, push::{Action, PushConditionRoomCtx, Ruleset}, serde::Raw, @@ -1160,11 +1160,12 @@ impl BaseClient { .and_then(|e| e.deserialize().ok()) { Ok(event.content.global) - } else if let Some(AnyGlobalAccountDataEvent::PushRules(event)) = self + } else if let Some(event) = self .store .get_account_data_event(GlobalAccountDataEventType::PushRules) .await? - .and_then(|e| e.deserialize().ok()) + .map(|e| e.deserialize_as::()) + .transpose()? { Ok(event.content.global) } else if let Some(session) = self.get_session().await {