From da5c74acc3ad68aa57309f6f18b6ca44de29cad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20K=C3=B6sters?= Date: Thu, 18 Mar 2021 18:38:40 +0100 Subject: [PATCH] fix: event required power levels --- src/event_auth.rs | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/src/event_auth.rs b/src/event_auth.rs index 6c8ed951..e3b6df2e 100644 --- a/src/event_auth.rs +++ b/src/event_auth.rs @@ -747,28 +747,21 @@ pub fn get_send_level( power_lvl: Option<&Arc>, ) -> i64 { log::debug!("{:?} {:?}", e_type, state_key); - if let Some(ple) = power_lvl { - if let Ok(content) = + power_lvl + .and_then(|ple| { serde_json::from_value::(ple.content()) - { - let mut lvl: i64 = content - .events - .get(&e_type) - .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 { - 50 // default power level - } - } else { - 0 - } + .map(|content| { + content.events.get(&e_type).cloned().unwrap_or_else(|| { + if state_key.is_some() { + content.state_default + } else { + content.events_default + } + }) + }).ok() + }) + .map(|int| i64::from(int)) + .unwrap_or_else(|| if state_key.is_some() { 50 } else { 0 }) } /// Check user can send invite.