Try to sync up to 4 times after joining a room

It seems like sometimes one sync isn't enough after sending the join
request.
This commit is contained in:
2025-07-30 01:56:17 -07:00
parent 001a0214d8
commit 214e1de972

View File

@@ -23,6 +23,7 @@ use matrix_sdk::{
BaseRoom, Client, BaseRoom, Client,
}; };
use serde::de; use serde::de;
use tokio::time::sleep;
use crate::config::Config; use crate::config::Config;
@@ -81,17 +82,26 @@ pub async fn ensure_room_joined(matrix_client: &Client, room_id: &OwnedRoomOrAli
.iter() .iter()
.find(|a_room| room_matches(a_room, room_id)) .find(|a_room| room_matches(a_room, room_id))
{ {
info!("Accepting invitation to room {room_id}");
invited.join().await?; invited.join().await?;
} else { } else {
info!("Joining room {room_id}");
matrix_client.join_room_by_id_or_alias(room_id, &[]).await?; matrix_client.join_room_by_id_or_alias(room_id, &[]).await?;
} }
let settings = build_sync_settings().await;
matrix_client.sync_once(settings).await?; for _ in 0..4 {
room = matrix_client let settings = build_sync_settings().await;
.joined_rooms() matrix_client.sync_once(settings).await?;
.iter() room = matrix_client
.find(|a_room| room_matches(a_room, room_id)) .joined_rooms()
.cloned(); .iter()
.find(|a_room| room_matches(a_room, room_id))
.cloned();
if room.is_some() {
break;
}
sleep(Duration::from_millis(500)).await;
}
} }
room.ok_or_else(|| anyhow!("Unable to join room {}", room_id)) room.ok_or_else(|| anyhow!("Unable to join room {}", room_id))