diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index ff43659b40..9e77dcff4c 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -272,6 +272,8 @@ class RustMatrixClient( .filter(predicate) .first() .first() + // Ensure that the room is ready + .also { client.awaitRoomRemoteEcho(it.roomId.value) } } } @@ -311,16 +313,14 @@ class RustMatrixClient( avatar = createRoomParams.avatar, powerLevelContentOverride = defaultRoomCreationPowerLevels, ) - val roomId = client.createRoom(rustParams) + val roomId = RoomId(client.createRoom(rustParams)) // Wait to receive the room back from the sync but do not returns failure if it fails. try { - withTimeout(30.seconds) { - client.awaitRoomRemoteEcho(roomId) - } + awaitJoinedRoom(roomId.toRoomIdOrAlias(), 30.seconds) } catch (e: Exception) { Timber.e(e, "Timeout waiting for the room to be available in the room list") } - RoomId(roomId) + roomId } }