Await for room sync only for push notification invites (#3307)

This commit is contained in:
Mauro
2024-09-19 15:42:58 +02:00
committed by GitHub
parent 5d678abd26
commit 943f33b496
4 changed files with 27 additions and 4 deletions
@@ -112,6 +112,8 @@ class ClientProxy: ClientProxyProtocol {
verificationStateSubject.asCurrentValuePublisher()
}
var roomsToAwait: Set<String> = []
private let sendQueueStatusSubject = CurrentValueSubject<Bool, Never>(false)
init(client: ClientProtocol,
@@ -431,6 +433,8 @@ class ClientProxy: ClientProxyProtocol {
}
func roomForIdentifier(_ identifier: String) async -> RoomProxyType? {
let shouldAwait = roomsToAwait.remove(identifier) != nil
// Try fetching the room from the cold cache (if available) first
if let room = await buildRoomForIdentifier(identifier) {
return room
@@ -446,6 +450,10 @@ class ClientProxy: ClientProxyProtocol {
_ = await roomSummaryProvider.statePublisher.values.first(where: { $0.isLoaded })
}
if shouldAwait {
await waitForRoomToSync(roomID: identifier)
}
return await buildRoomForIdentifier(identifier)
}
@@ -836,9 +844,7 @@ class ClientProxy: ClientProxyProtocol {
MXLog.error("Failed retrieving room: \(roomID), room list service not set up")
return nil
}
await waitForRoomToSync(roomID: roomID)
do {
let roomListItem = try roomListService.room(roomId: roomID)