fix: event required power levels

This commit is contained in:
Timo Kösters 2021-03-18 18:38:40 +01:00 committed by Devin Ragotzy
parent d34a78c5b6
commit da5c74acc3

View File

@ -747,28 +747,21 @@ pub fn get_send_level<E: Event>(
power_lvl: Option<&Arc<E>>, power_lvl: Option<&Arc<E>>,
) -> i64 { ) -> i64 {
log::debug!("{:?} {:?}", e_type, state_key); log::debug!("{:?} {:?}", e_type, state_key);
if let Some(ple) = power_lvl { power_lvl
if let Ok(content) = .and_then(|ple| {
serde_json::from_value::<room::power_levels::PowerLevelsEventContent>(ple.content()) serde_json::from_value::<room::power_levels::PowerLevelsEventContent>(ple.content())
{ .map(|content| {
let mut lvl: i64 = content content.events.get(&e_type).cloned().unwrap_or_else(|| {
.events if state_key.is_some() {
.get(&e_type) content.state_default
.cloned()
.unwrap_or_else(|| ruma::int!(50))
.into();
let state_def: i64 = content.state_default.into();
let event_def: i64 = content.events_default.into();
if (state_key.is_some() && state_def > lvl) || event_def > lvl {
lvl = event_def;
}
lvl
} else { } else {
50 // default power level content.events_default
}
} else {
0
} }
})
}).ok()
})
.map(|int| i64::from(int))
.unwrap_or_else(|| if state_key.is_some() { 50 } else { 0 })
} }
/// Check user can send invite. /// Check user can send invite.