From c90e8ab4835203b9dab4f4ce1ccce477095eab6f Mon Sep 17 00:00:00 2001 From: Austin Ray Date: Fri, 21 May 2021 14:51:59 -0400 Subject: [PATCH] base: use correct bound in naming algorithm Step 3.ii of the name calculation algorithm[0] specifies the conditional as `heroes < invited + joined - 1 AND invited + joined > 1`. However, current implementation uses `invited + joined - 1 > 1` in the conditional, which can trigger the conditional if the user is alone. Correct this by using two variables representing `invited + joined` and `invited_joined - 1` and updating the conditional. `invited + joined` is kept as a variable since step 3.iii uses it for its conditional. [0] https://matrix.org/docs/spec/client_server/latest#calculating-the-display-name-for-a-room --- matrix_sdk_base/src/rooms/mod.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/matrix_sdk_base/src/rooms/mod.rs b/matrix_sdk_base/src/rooms/mod.rs index 39121d80..30d7bc2e 100644 --- a/matrix_sdk_base/src/rooms/mod.rs +++ b/matrix_sdk_base/src/rooms/mod.rs @@ -63,14 +63,15 @@ impl BaseRoomInfo { heroes: Vec, ) -> String { let heroes_count = heroes.len() as u64; - let invited_joined = (invited_member_count + joined_member_count).saturating_sub(1); + let invited_joined = invited_member_count + joined_member_count; + let invited_joined_minus_one = invited_joined.saturating_sub(1); - if heroes_count >= invited_joined { + if heroes_count >= invited_joined_minus_one { let mut names = heroes.iter().take(3).map(|mem| mem.name()).collect::>(); // stabilize ordering names.sort_unstable(); names.join(", ") - } else if heroes_count < invited_joined && invited_joined > 1 { + } else if heroes_count < invited_joined_minus_one && invited_joined > 1 { let mut names = heroes.iter().take(3).map(|mem| mem.name()).collect::>(); names.sort_unstable();