From 8f06d0258a436ae98de5727e061b5285008eeaf8 Mon Sep 17 00:00:00 2001 From: Guillem Nieto Date: Fri, 19 Jun 2020 12:19:07 +0200 Subject: [PATCH] Remove `is_direct` flag from Join event When I was investigating the DM issue, I found that join event contained the `is_direct` flag. According to the spec, this flag should only be set on "invite" events, but not on join. Other homeservers do not have this flag on join. --- src/client_server.rs | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/src/client_server.rs b/src/client_server.rs index fac0286b..6a9ac772 100644 --- a/src/client_server.rs +++ b/src/client_server.rs @@ -1390,34 +1390,13 @@ pub fn join_room_by_id_route( // TODO: Ask a remote server if we don't have this room - let event = db - .rooms - .room_state_get(&body.room_id, &EventType::RoomMember, &user_id.to_string())? - .map_or_else( - || { - // There was no existing membership event - Ok::<_, Error>(member::MemberEventContent { - membership: member::MembershipState::Join, - displayname: db.users.displayname(&user_id)?, - avatar_url: db.users.avatar_url(&user_id)?, - is_direct: None, - third_party_invite: None, - }) - }, - |pdu| { - // We change the existing membership event - let mut event = serde_json::from_value::>( - pdu.content.clone(), - ) - .map_err(|_| Error::bad_database("Invalid member event in db."))? - .deserialize() - .map_err(|_| Error::bad_database("Invalid member event in db."))?; - event.membership = member::MembershipState::Join; - event.displayname = db.users.displayname(&user_id)?; - event.avatar_url = db.users.avatar_url(&user_id)?; - Ok(event) - }, - )?; + let event = member::MemberEventContent { + membership: member::MembershipState::Join, + displayname: db.users.displayname(&user_id)?, + avatar_url: db.users.avatar_url(&user_id)?, + is_direct: None, + third_party_invite: None, + }; db.rooms.append_pdu( body.room_id.clone(),