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