From 8550eaeed02e53c6703727f53d8a3e3598da037b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Wed, 1 Mar 2023 18:38:50 +0100 Subject: [PATCH] Make sure that syncing members is only happening if they aren't already synced --- crates/matrix-sdk/src/room/common.rs | 15 ++++++++------- crates/matrix-sdk/src/room/joined.rs | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/crates/matrix-sdk/src/room/common.rs b/crates/matrix-sdk/src/room/common.rs index eeb7a27da..035fd62f2 100644 --- a/crates/matrix-sdk/src/room/common.rs +++ b/crates/matrix-sdk/src/room/common.rs @@ -391,16 +391,16 @@ impl Common { } } - pub(crate) async fn ensure_members(&self) -> Result<()> { + pub(crate) async fn ensure_members(&self) -> Result> { if !self.are_events_visible() { - return Ok(()); + return Ok(None); } if !self.are_members_synced() { - self.request_members().await?; + self.request_members().await + } else { + Ok(None) } - - Ok(()) } fn are_events_visible(&self) -> bool { @@ -417,9 +417,10 @@ impl Common { /// Sync the member list with the server. /// /// This method will de-duplicate requests if it is called multiple times in - /// quick succession, in that case the return value will be `None`. + /// quick succession, in that case the return value will be `None`. This + /// method does nothing if the members are already synced. pub async fn sync_members(&self) -> Result> { - self.request_members().await + self.ensure_members().await } /// Get active members for this room, includes invited, joined members. diff --git a/crates/matrix-sdk/src/room/joined.rs b/crates/matrix-sdk/src/room/joined.rs index b3c2af503..8fdd6d171 100644 --- a/crates/matrix-sdk/src/room/joined.rs +++ b/crates/matrix-sdk/src/room/joined.rs @@ -621,7 +621,7 @@ impl Joined { ); if !self.are_members_synced() { - self.request_members().await?; + self.ensure_members().await?; // TODO query keys here? }