base_client: only swap prev_content if outer is None

master
Devin R 2020-05-22 21:29:51 -04:00
parent 86a01a0ca6
commit ac4698f0d6
1 changed files with 7 additions and 14 deletions

View File

@ -85,23 +85,16 @@ fn deserialize_prev_content(event: &EventJson<RoomEvent>) -> Option<EventJson<Ro
.map(|more_unsigned| more_unsigned.unsigned) .map(|more_unsigned| more_unsigned.unsigned)
.map(|additional| additional.prev_content) .map(|additional| additional.prev_content)
.ok() .ok()
.flatten(); .flatten()?;
if let Ok(mut ev) = event.deserialize() { let mut ev = event.deserialize().ok()?;
if let Some(prev) = prev_content {
match &mut ev { match &mut ev {
RoomEvent::RoomMember(ref mut member) => { RoomEvent::RoomMember(ref mut member) if member.prev_content.is_none() => {
member.prev_content = prev.deserialize().ok(); member.prev_content = prev_content.deserialize().ok();
Some(EventJson::from(ev)) Some(EventJson::from(ev))
} }
_ => None, _ => None,
} }
} else {
None
}
} else {
None
}
} }
fn stripped_deserialize_prev_content( fn stripped_deserialize_prev_content(