improvement: bug fixes and refactors

- power level content override adds to the default event instead of
replacing it
- sending code refactored to make edus possible
- remove presence events when restarting conduit
- remove room_id field from read receipts over /sync
- handle incoming read receipts
- fix array bounds bug in server_server.rs
This commit is contained in:
Timo Kösters 2021-05-12 20:04:28 +02:00
parent ad5e51dc25
commit f62258ba35
No known key found for this signature in database
GPG key ID: 24DA7517711A2BA4
9 changed files with 356 additions and 277 deletions

View file

@ -111,11 +111,7 @@ pub async fn create_room_route(
}
}
let power_levels_content = if let Some(power_levels) = &body.power_level_content_override {
serde_json::from_str(power_levels.json().get()).map_err(|_| {
Error::BadRequest(ErrorKind::BadJson, "Invalid power_level_content_override.")
})?
} else {
let mut power_levels_content =
serde_json::to_value(ruma::events::room::power_levels::PowerLevelsEventContent {
ban: 50.into(),
events: BTreeMap::new(),
@ -130,8 +126,21 @@ pub async fn create_room_route(
room: 50.into(),
},
})
.expect("event is valid, we just created it")
};
.expect("event is valid, we just created it");
if let Some(power_level_content_override) = &body.power_level_content_override {
let json = serde_json::from_str::<serde_json::Map<String, serde_json::Value>>(
power_level_content_override.json().get(),
)
.map_err(|_| {
Error::BadRequest(ErrorKind::BadJson, "Invalid power_level_content_override.")
})?;
for (key, value) in json {
power_levels_content[key] = value;
}
}
db.rooms.build_and_append_pdu(
PduBuilder {
event_type: EventType::RoomPowerLevels,