|
|
@ -362,17 +362,14 @@ pub fn get_pushrules_all_route(
|
|
|
|
"PushRules event not found.",
|
|
|
|
"PushRules event not found.",
|
|
|
|
))?
|
|
|
|
))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadRequest(
|
|
|
|
.map_err(|_| Error::BadRequest(ErrorKind::NotFound, "PushRules event in db is invalid."))?
|
|
|
|
ErrorKind::NotFound,
|
|
|
|
|
|
|
|
"PushRules event in db is invalid.",
|
|
|
|
|
|
|
|
))?
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Ok(get_pushrules_all::Response {
|
|
|
|
Ok(get_pushrules_all::Response {
|
|
|
|
global: pushrules.content.global,
|
|
|
|
global: pushrules.content.global,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.into())
|
|
|
|
.into())
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
Err(Error::BadDatabase("Pushrules event has wrong content."))
|
|
|
|
Err(Error::bad_database("Pushrules event has wrong content."))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -507,15 +504,17 @@ pub fn set_displayname_route(
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.room_state(&room_id)?
|
|
|
|
.room_state(&room_id)?
|
|
|
|
.get(&(EventType::RoomMember, user_id.to_string()))
|
|
|
|
.get(&(EventType::RoomMember, user_id.to_string()))
|
|
|
|
.ok_or(Error::BadDatabase(
|
|
|
|
.ok_or_else(|| {
|
|
|
|
"Tried to send displayname update for user not in the room.",
|
|
|
|
Error::bad_database(
|
|
|
|
))?
|
|
|
|
"Tried to send displayname update for user not in the room.",
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
})?
|
|
|
|
.content
|
|
|
|
.content
|
|
|
|
.clone(),
|
|
|
|
.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Database contains invalid PDU."))?
|
|
|
|
.map_err(|_| Error::bad_database("Database contains invalid PDU."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Database contains invalid PDU."))?
|
|
|
|
.map_err(|_| Error::bad_database("Database contains invalid PDU."))?
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.expect("event is valid, we just created it"),
|
|
|
|
.expect("event is valid, we just created it"),
|
|
|
|
None,
|
|
|
|
None,
|
|
|
@ -596,15 +595,17 @@ pub fn set_avatar_url_route(
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.room_state(&room_id)?
|
|
|
|
.room_state(&room_id)?
|
|
|
|
.get(&(EventType::RoomMember, user_id.to_string()))
|
|
|
|
.get(&(EventType::RoomMember, user_id.to_string()))
|
|
|
|
.ok_or(Error::BadDatabase(
|
|
|
|
.ok_or_else(|| {
|
|
|
|
"Tried to send avatar url update for user not in the room.",
|
|
|
|
Error::bad_database(
|
|
|
|
))?
|
|
|
|
"Tried to send avatar url update for user not in the room.",
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
})?
|
|
|
|
.content
|
|
|
|
.content
|
|
|
|
.clone(),
|
|
|
|
.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Database contains invalid PDU."))?
|
|
|
|
.map_err(|_| Error::bad_database("Database contains invalid PDU."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Database contains invalid PDU."))?
|
|
|
|
.map_err(|_| Error::bad_database("Database contains invalid PDU."))?
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.expect("event is valid, we just created it"),
|
|
|
|
.expect("event is valid, we just created it"),
|
|
|
|
None,
|
|
|
|
None,
|
|
|
@ -744,9 +745,12 @@ pub fn get_keys_route(
|
|
|
|
for result in db.users.all_device_keys(&user_id.clone()) {
|
|
|
|
for result in db.users.all_device_keys(&user_id.clone()) {
|
|
|
|
let (device_id, mut keys) = result?;
|
|
|
|
let (device_id, mut keys) = result?;
|
|
|
|
|
|
|
|
|
|
|
|
let metadata = db.users.get_device_metadata(user_id, &device_id)?.ok_or(
|
|
|
|
let metadata = db
|
|
|
|
Error::BadDatabase("all_device_keys contained nonexistent device."),
|
|
|
|
.users
|
|
|
|
)?;
|
|
|
|
.get_device_metadata(user_id, &device_id)?
|
|
|
|
|
|
|
|
.ok_or_else(|| {
|
|
|
|
|
|
|
|
Error::bad_database("all_device_keys contained nonexistent device.")
|
|
|
|
|
|
|
|
})?;
|
|
|
|
|
|
|
|
|
|
|
|
keys.unsigned = Some(keys::UnsignedDeviceInfo {
|
|
|
|
keys.unsigned = Some(keys::UnsignedDeviceInfo {
|
|
|
|
device_display_name: metadata.display_name,
|
|
|
|
device_display_name: metadata.display_name,
|
|
|
@ -912,7 +916,7 @@ pub fn create_room_route(
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
let room_id = RoomId::new(db.globals.server_name())
|
|
|
|
let room_id = RoomId::new(db.globals.server_name())
|
|
|
|
.map_err(|_| Error::BadDatabase("Server name is invalid."))?;
|
|
|
|
.map_err(|_| Error::bad_database("Server name is invalid."))?;
|
|
|
|
|
|
|
|
|
|
|
|
let alias = body
|
|
|
|
let alias = body
|
|
|
|
.room_alias_name
|
|
|
|
.room_alias_name
|
|
|
@ -1281,9 +1285,9 @@ pub fn join_room_by_id_route(
|
|
|
|
let mut event = serde_json::from_value::<EventJson<member::MemberEventContent>>(
|
|
|
|
let mut event = serde_json::from_value::<EventJson<member::MemberEventContent>>(
|
|
|
|
pdu.content.clone(),
|
|
|
|
pdu.content.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in db."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in db."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in db."))?;
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in db."))?;
|
|
|
|
event.membership = member::MembershipState::Join;
|
|
|
|
event.membership = member::MembershipState::Join;
|
|
|
|
event.displayname = db.users.displayname(&user_id)?;
|
|
|
|
event.displayname = db.users.displayname(&user_id)?;
|
|
|
|
event.avatar_url = db.users.avatar_url(&user_id)?;
|
|
|
|
event.avatar_url = db.users.avatar_url(&user_id)?;
|
|
|
@ -1356,9 +1360,9 @@ pub fn leave_room_route(
|
|
|
|
.content
|
|
|
|
.content
|
|
|
|
.clone(),
|
|
|
|
.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?;
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?;
|
|
|
|
|
|
|
|
|
|
|
|
event.membership = member::MembershipState::Leave;
|
|
|
|
event.membership = member::MembershipState::Leave;
|
|
|
|
|
|
|
|
|
|
|
@ -1396,9 +1400,9 @@ pub fn kick_user_route(
|
|
|
|
.content
|
|
|
|
.content
|
|
|
|
.clone(),
|
|
|
|
.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?;
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?;
|
|
|
|
|
|
|
|
|
|
|
|
event.membership = ruma::events::room::member::MembershipState::Leave;
|
|
|
|
event.membership = ruma::events::room::member::MembershipState::Leave;
|
|
|
|
// TODO: reason
|
|
|
|
// TODO: reason
|
|
|
@ -1442,9 +1446,9 @@ pub fn ban_user_route(
|
|
|
|
let mut event = serde_json::from_value::<EventJson<member::MemberEventContent>>(
|
|
|
|
let mut event = serde_json::from_value::<EventJson<member::MemberEventContent>>(
|
|
|
|
event.content.clone(),
|
|
|
|
event.content.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?;
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?;
|
|
|
|
event.membership = ruma::events::room::member::MembershipState::Ban;
|
|
|
|
event.membership = ruma::events::room::member::MembershipState::Ban;
|
|
|
|
Ok(event)
|
|
|
|
Ok(event)
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -1484,9 +1488,9 @@ pub fn unban_user_route(
|
|
|
|
.content
|
|
|
|
.content
|
|
|
|
.clone(),
|
|
|
|
.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?;
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?;
|
|
|
|
|
|
|
|
|
|
|
|
event.membership = ruma::events::room::member::MembershipState::Leave;
|
|
|
|
event.membership = ruma::events::room::member::MembershipState::Leave;
|
|
|
|
|
|
|
|
|
|
|
@ -1646,18 +1650,18 @@ pub async fn get_public_rooms_filtered_route(
|
|
|
|
Ok(serde_json::from_value::<
|
|
|
|
Ok(serde_json::from_value::<
|
|
|
|
EventJson<ruma::events::room::canonical_alias::CanonicalAliasEventContent>,
|
|
|
|
EventJson<ruma::events::room::canonical_alias::CanonicalAliasEventContent>,
|
|
|
|
>(s.content.clone())
|
|
|
|
>(s.content.clone())
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid canonical alias event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid canonical alias event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid canonical alias event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid canonical alias event in database."))?
|
|
|
|
.alias)
|
|
|
|
.alias)
|
|
|
|
})?,
|
|
|
|
})?,
|
|
|
|
name: state.get(&(EventType::RoomName, "".to_owned())).map_or(Ok::<_, Error>(None), |s| {
|
|
|
|
name: state.get(&(EventType::RoomName, "".to_owned())).map_or(Ok::<_, Error>(None), |s| {
|
|
|
|
Ok(serde_json::from_value::<EventJson<ruma::events::room::name::NameEventContent>>(
|
|
|
|
Ok(serde_json::from_value::<EventJson<ruma::events::room::name::NameEventContent>>(
|
|
|
|
s.content.clone(),
|
|
|
|
s.content.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room name event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room name event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room name event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room name event in database."))?
|
|
|
|
.name()
|
|
|
|
.name()
|
|
|
|
.map(|n| n.to_owned()))
|
|
|
|
.map(|n| n.to_owned()))
|
|
|
|
})?,
|
|
|
|
})?,
|
|
|
@ -1667,36 +1671,36 @@ pub async fn get_public_rooms_filtered_route(
|
|
|
|
Ok(Some(serde_json::from_value::<
|
|
|
|
Ok(Some(serde_json::from_value::<
|
|
|
|
EventJson<ruma::events::room::topic::TopicEventContent>,
|
|
|
|
EventJson<ruma::events::room::topic::TopicEventContent>,
|
|
|
|
>(s.content.clone())
|
|
|
|
>(s.content.clone())
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room topic event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room topic event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room topic event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room topic event in database."))?
|
|
|
|
.topic))
|
|
|
|
.topic))
|
|
|
|
})?,
|
|
|
|
})?,
|
|
|
|
world_readable: state.get(&(EventType::RoomHistoryVisibility, "".to_owned())).map_or(Ok::<_, Error>(false), |s| {
|
|
|
|
world_readable: state.get(&(EventType::RoomHistoryVisibility, "".to_owned())).map_or(Ok::<_, Error>(false), |s| {
|
|
|
|
Ok(serde_json::from_value::<
|
|
|
|
Ok(serde_json::from_value::<
|
|
|
|
EventJson<ruma::events::room::history_visibility::HistoryVisibilityEventContent>,
|
|
|
|
EventJson<ruma::events::room::history_visibility::HistoryVisibilityEventContent>,
|
|
|
|
>(s.content.clone())
|
|
|
|
>(s.content.clone())
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room history visibility event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room history visibility event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room history visibility event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room history visibility event in database."))?
|
|
|
|
.history_visibility == history_visibility::HistoryVisibility::WorldReadable)
|
|
|
|
.history_visibility == history_visibility::HistoryVisibility::WorldReadable)
|
|
|
|
})?,
|
|
|
|
})?,
|
|
|
|
guest_can_join: state.get(&(EventType::RoomGuestAccess, "".to_owned())).map_or(Ok::<_, Error>(false), |s| {
|
|
|
|
guest_can_join: state.get(&(EventType::RoomGuestAccess, "".to_owned())).map_or(Ok::<_, Error>(false), |s| {
|
|
|
|
Ok(serde_json::from_value::<
|
|
|
|
Ok(serde_json::from_value::<
|
|
|
|
EventJson<ruma::events::room::guest_access::GuestAccessEventContent>,
|
|
|
|
EventJson<ruma::events::room::guest_access::GuestAccessEventContent>,
|
|
|
|
>(s.content.clone())
|
|
|
|
>(s.content.clone())
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room guest access event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room guest access event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room guest access event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room guest access event in database."))?
|
|
|
|
.guest_access == guest_access::GuestAccess::CanJoin)
|
|
|
|
.guest_access == guest_access::GuestAccess::CanJoin)
|
|
|
|
})?,
|
|
|
|
})?,
|
|
|
|
avatar_url: state.get(&(EventType::RoomAvatar, "".to_owned())).map_or( Ok::<_, Error>(None),|s| {
|
|
|
|
avatar_url: state.get(&(EventType::RoomAvatar, "".to_owned())).map_or( Ok::<_, Error>(None),|s| {
|
|
|
|
Ok(Some(serde_json::from_value::<
|
|
|
|
Ok(Some(serde_json::from_value::<
|
|
|
|
EventJson<ruma::events::room::avatar::AvatarEventContent>,
|
|
|
|
EventJson<ruma::events::room::avatar::AvatarEventContent>,
|
|
|
|
>(s.content.clone())
|
|
|
|
>(s.content.clone())
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room avatar event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room avatar event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid room avatar event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid room avatar event in database."))?
|
|
|
|
.url))
|
|
|
|
.url))
|
|
|
|
})?,
|
|
|
|
})?,
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -1986,7 +1990,7 @@ pub fn get_state_events_for_key_route(
|
|
|
|
|
|
|
|
|
|
|
|
Ok(get_state_events_for_key::Response {
|
|
|
|
Ok(get_state_events_for_key::Response {
|
|
|
|
content: serde_json::value::to_raw_value(&event.content)
|
|
|
|
content: serde_json::value::to_raw_value(&event.content)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid event content in database"))?,
|
|
|
|
.map_err(|_| Error::bad_database("Invalid event content in database"))?,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.into())
|
|
|
|
.into())
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -2021,7 +2025,7 @@ pub fn get_state_events_for_empty_key_route(
|
|
|
|
|
|
|
|
|
|
|
|
Ok(get_state_events_for_empty_key::Response {
|
|
|
|
Ok(get_state_events_for_empty_key::Response {
|
|
|
|
content: serde_json::value::to_raw_value(event)
|
|
|
|
content: serde_json::value::to_raw_value(event)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid event content in database"))?,
|
|
|
|
.map_err(|_| Error::bad_database("Invalid event content in database"))?,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.into())
|
|
|
|
.into())
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -2064,9 +2068,9 @@ pub fn sync_route(
|
|
|
|
let content = serde_json::from_value::<
|
|
|
|
let content = serde_json::from_value::<
|
|
|
|
EventJson<ruma::events::room::member::MemberEventContent>,
|
|
|
|
EventJson<ruma::events::room::member::MemberEventContent>,
|
|
|
|
>(pdu.content.clone())
|
|
|
|
>(pdu.content.clone())
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid PDU in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid PDU in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid PDU in database."))?;
|
|
|
|
.map_err(|_| Error::bad_database("Invalid PDU in database."))?;
|
|
|
|
if content.membership == ruma::events::room::member::MembershipState::Join {
|
|
|
|
if content.membership == ruma::events::room::member::MembershipState::Join {
|
|
|
|
joined_since_last_sync = true;
|
|
|
|
joined_since_last_sync = true;
|
|
|
|
// Both send_member_count and joined_since_last_sync are set. There's nothing more
|
|
|
|
// Both send_member_count and joined_since_last_sync are set. There's nothing more
|
|
|
@ -2099,9 +2103,9 @@ pub fn sync_route(
|
|
|
|
let content = serde_json::from_value::<
|
|
|
|
let content = serde_json::from_value::<
|
|
|
|
EventJson<ruma::events::room::member::MemberEventContent>,
|
|
|
|
EventJson<ruma::events::room::member::MemberEventContent>,
|
|
|
|
>(pdu.content.clone())
|
|
|
|
>(pdu.content.clone())
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?;
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(state_key) = &pdu.state_key {
|
|
|
|
if let Some(state_key) = &pdu.state_key {
|
|
|
|
let current_content = serde_json::from_value::<
|
|
|
|
let current_content = serde_json::from_value::<
|
|
|
@ -2109,15 +2113,19 @@ pub fn sync_route(
|
|
|
|
>(
|
|
|
|
>(
|
|
|
|
state
|
|
|
|
state
|
|
|
|
.get(&(EventType::RoomMember, state_key.clone()))
|
|
|
|
.get(&(EventType::RoomMember, state_key.clone()))
|
|
|
|
.ok_or(Error::BadDatabase(
|
|
|
|
.ok_or_else(|| {
|
|
|
|
"A user that joined once has no member event anymore.",
|
|
|
|
Error::bad_database(
|
|
|
|
))?
|
|
|
|
"A user that joined once has no member event anymore.",
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
})?
|
|
|
|
.content
|
|
|
|
.content
|
|
|
|
.clone(),
|
|
|
|
.clone(),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?
|
|
|
|
.map_err(|_| Error::bad_database("Invalid member event in database."))?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("Invalid member event in database."))?;
|
|
|
|
.map_err(|_| {
|
|
|
|
|
|
|
|
Error::bad_database("Invalid member event in database.")
|
|
|
|
|
|
|
|
})?;
|
|
|
|
|
|
|
|
|
|
|
|
// The membership was and still is invite or join
|
|
|
|
// The membership was and still is invite or join
|
|
|
|
if matches!(
|
|
|
|
if matches!(
|
|
|
@ -2192,7 +2200,7 @@ pub fn sync_route(
|
|
|
|
Ok(Some(
|
|
|
|
Ok(Some(
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.ok_or(Error::BadDatabase("Can't find count from event in db."))?
|
|
|
|
.ok_or_else(|| Error::bad_database("Can't find count from event in db."))?
|
|
|
|
.to_string(),
|
|
|
|
.to_string(),
|
|
|
|
))
|
|
|
|
))
|
|
|
|
})?;
|
|
|
|
})?;
|
|
|
@ -2355,7 +2363,7 @@ pub fn sync_route(
|
|
|
|
.map(|edu| {
|
|
|
|
.map(|edu| {
|
|
|
|
let mut edu = edu?
|
|
|
|
let mut edu = edu?
|
|
|
|
.deserialize()
|
|
|
|
.deserialize()
|
|
|
|
.map_err(|_| Error::BadDatabase("EDU in database is invalid."))?;
|
|
|
|
.map_err(|_| Error::bad_database("EDU in database is invalid."))?;
|
|
|
|
if let Some(timestamp) = edu.content.last_active_ago {
|
|
|
|
if let Some(timestamp) = edu.content.last_active_ago {
|
|
|
|
let last_active_ago =
|
|
|
|
let last_active_ago =
|
|
|
|
js_int::UInt::try_from(utils::millis_since_unix_epoch())
|
|
|
|
js_int::UInt::try_from(utils::millis_since_unix_epoch())
|
|
|
@ -2444,7 +2452,7 @@ pub fn get_context_route(
|
|
|
|
Ok::<_, Error>(Some(
|
|
|
|
Ok::<_, Error>(Some(
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.ok_or(Error::BadDatabase("Can't find count from event in db."))?
|
|
|
|
.ok_or_else(|| Error::bad_database("Can't find count from event in db."))?
|
|
|
|
.to_string(),
|
|
|
|
.to_string(),
|
|
|
|
))
|
|
|
|
))
|
|
|
|
})?;
|
|
|
|
})?;
|
|
|
@ -2470,7 +2478,7 @@ pub fn get_context_route(
|
|
|
|
Ok::<_, Error>(Some(
|
|
|
|
Ok::<_, Error>(Some(
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.ok_or(Error::BadDatabase("Can't find count from event in db."))?
|
|
|
|
.ok_or_else(|| Error::bad_database("Can't find count from event in db."))?
|
|
|
|
.to_string(),
|
|
|
|
.to_string(),
|
|
|
|
))
|
|
|
|
))
|
|
|
|
})?;
|
|
|
|
})?;
|
|
|
@ -2534,7 +2542,7 @@ pub fn get_message_events_route(
|
|
|
|
Ok(Some(
|
|
|
|
Ok(Some(
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.ok_or(Error::BadDatabase("Can't find count from event in db."))?
|
|
|
|
.ok_or_else(|| Error::bad_database("Can't find count from event in db."))?
|
|
|
|
.to_string(),
|
|
|
|
.to_string(),
|
|
|
|
))
|
|
|
|
))
|
|
|
|
})?;
|
|
|
|
})?;
|
|
|
@ -2569,7 +2577,7 @@ pub fn get_message_events_route(
|
|
|
|
Ok(Some(
|
|
|
|
Ok(Some(
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.get_pdu_count(&e.event_id)?
|
|
|
|
.ok_or(Error::BadDatabase("Can't find count from event in db."))?
|
|
|
|
.ok_or_else(|| Error::bad_database("Can't find count from event in db."))?
|
|
|
|
.to_string(),
|
|
|
|
.to_string(),
|
|
|
|
))
|
|
|
|
))
|
|
|
|
})?;
|
|
|
|
})?;
|
|
|
|