chore: Put the power level normalization logic into a separate function

This commit is contained in:
Damir Jelić
2025-09-08 10:32:59 +02:00
parent 91c5f8a01a
commit 80262f2f36
+14 -9
View File
@@ -20,7 +20,7 @@ use std::{
use bitflags::bitflags;
use ruma::{
MxcUri, OwnedUserId, UserId,
Int, MxcUri, OwnedUserId, UserId,
events::{
MessageLikeEventType, StateEventType,
ignored_user_list::IgnoredUserListEventContent,
@@ -277,15 +277,13 @@ impl RoomMember {
return UserPowerLevel::Infinite;
};
let mut power_level = i64::from(power_level);
let normalized_power_level = if self.max_power_level > 0 {
normalize_power_level(power_level, self.max_power_level)
} else {
power_level
};
if self.max_power_level > 0 {
power_level = (power_level * 100) / self.max_power_level;
}
UserPowerLevel::Int(
power_level.try_into().expect("normalized power level should fit in Int"),
)
UserPowerLevel::Int(normalized_power_level)
}
/// Get the power level of this member.
@@ -468,3 +466,10 @@ impl RoomMemberships {
memberships
}
}
/// Scale the given `power_level` to a range between 0-100.
pub fn normalize_power_level(power_level: Int, max_power_level: i64) -> Int {
let mut power_level = i64::from(power_level);
power_level = (power_level * 100) / max_power_level;
power_level.try_into().expect("normalized power level should fit in Int")
}