state-res: Replace map_or_else with simpler alternatives

This commit is contained in:
Jonas Platte 2021-09-04 01:28:18 +02:00
parent 4d0064330a
commit d8637d3b30
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67

View File

@ -289,14 +289,12 @@ where
// Allow if and only if sender's current power level is greater than // Allow if and only if sender's current power level is greater than
// or equal to the invite level // or equal to the invite level
if incoming_event.event_type() == EventType::RoomThirdPartyInvite { if incoming_event.event_type() == EventType::RoomThirdPartyInvite {
let invite_level = power_levels_event.as_ref().map_or_else( let invite_level = match &power_levels_event {
|| Ok::<_, Error>(int!(50)), Some(power_levels) => {
|power_levels| { serde_json::from_value::<PowerLevelsEventContent>(power_levels.content())?.invite
serde_json::from_value::<PowerLevelsEventContent>(power_levels.content()) }
.map(|pl| pl.invite) None => int!(50),
.map_err(Into::into) };
},
)?;
if sender_power_level < invite_level { if sender_power_level < invite_level {
warn!("sender's cannot send invites in this room"); warn!("sender's cannot send invites in this room");
@ -417,24 +415,17 @@ fn valid_membership_change<E: Event>(
)?) )?)
})?; })?;
let power_levels = power_levels_event.map_or_else( let power_levels: PowerLevelsEventContent = match power_levels_event {
|| Ok::<_, Error>(PowerLevelsEventContent::default()), Some(ev) => serde_json::from_value(ev.content())?,
|power_levels| { None => PowerLevelsEventContent::default(),
serde_json::from_value::<PowerLevelsEventContent>(power_levels.content()) };
.map_err(Into::into)
},
)?;
let sender_power = power_levels.users.get(sender).map_or_else( let sender_power = power_levels.users.get(sender).or_else(|| {
|| (sender_membership == MembershipState::Join).then(|| &power_levels.users_default), (sender_membership == MembershipState::Join).then(|| &power_levels.users_default)
// If it's okay, wrap with Some(_) });
Some, let target_power = power_levels.users.get(target_user).or_else(|| {
); (target_membership == MembershipState::Join).then(|| &power_levels.users_default)
let target_power = power_levels.users.get(target_user).map_or_else( });
|| (target_membership == MembershipState::Join).then(|| &power_levels.users_default),
// If it's okay, wrap with Some(_)
Some,
);
let mut join_rules = JoinRule::Invite; let mut join_rules = JoinRule::Invite;
if let Some(jr) = join_rules_event { if let Some(jr) = join_rules_event {