diff --git a/matrix_sdk/src/models/message.rs b/matrix_sdk/src/models/message.rs index ec531b8c..d1526662 100644 --- a/matrix_sdk/src/models/message.rs +++ b/matrix_sdk/src/models/message.rs @@ -27,9 +27,6 @@ impl Deref for MessageWrapper { impl PartialEq for MessageWrapper { fn eq(&self, other: &MessageWrapper) -> bool { self.0.event_id == other.0.event_id - && self.0.room_id == other.0.room_id - && self.0.origin_server_ts == other.0.origin_server_ts - && self.0.sender == other.0.sender } } @@ -113,14 +110,15 @@ pub(crate) mod ser_deser { where D: de::Deserializer<'de>, { + use serde::de::Error; + let messages: Vec> = de::Deserialize::deserialize(deserializer)?; - // TODO this should probably bail out if deserialization fails not skip the message - let msgs: Vec = messages - .into_iter() - .flat_map(|json| json.deserialize()) - .map(MessageWrapper) - .collect(); + let mut msgs = vec![]; + for json in messages { + let msg = json.deserialize().map_err(D::Error::custom)?; + msgs.push(MessageWrapper(msg)); + } Ok(MessageQueue { msgs }) }