SP2: Adding Rooms to Spaces element-ios#5230

- Wait for the entire room upgrade before building the space graph
This commit is contained in:
Gil Eluard 2022-01-17 22:42:01 +01:00
parent 962abb6e79
commit 4ef27fabf3

View file

@ -225,6 +225,8 @@ class RoomAccessTypeChooserService: RoomAccessTypeChooserServiceProtocol {
} }
private func upgradeRoom(to restrictedVersionOverride: String, inviteUsers userIds: [String], completion: @escaping (Bool, String) -> Void) { private func upgradeRoom(to restrictedVersionOverride: String, inviteUsers userIds: [String], completion: @escaping (Bool, String) -> Void) {
// Need to disable graph update during this process as a lot of syncs will occure
session.spaceService.graphUpdateEnabled = false
currentOperation = session.matrixRestClient.upgradeRoom(withId: self.currentRoomId, to: restrictedVersionOverride) { [weak self] response in currentOperation = session.matrixRestClient.upgradeRoom(withId: self.currentRoomId, to: restrictedVersionOverride) { [weak self] response in
guard let self = self else { return } guard let self = self else { return }
@ -235,6 +237,7 @@ class RoomAccessTypeChooserService: RoomAccessTypeChooserServiceProtocol {
self.currentRoomId = replacementRoomId self.currentRoomId = replacementRoomId
let parentSpaces = self.session.spaceService.directParentIds(ofRoomWithId: oldRoomId) let parentSpaces = self.session.spaceService.directParentIds(ofRoomWithId: oldRoomId)
self.moveRoom(from: oldRoomId, to: replacementRoomId, within: Array(parentSpaces), at: 0) { self.moveRoom(from: oldRoomId, to: replacementRoomId, within: Array(parentSpaces), at: 0) {
self.session.spaceService.graphUpdateEnabled = true
self.didBuildSpaceGraphObserver = NotificationCenter.default.addObserver(forName: MXSpaceService.didBuildSpaceGraph, object: nil, queue: OperationQueue.main) { [weak self] notification in self.didBuildSpaceGraphObserver = NotificationCenter.default.addObserver(forName: MXSpaceService.didBuildSpaceGraph, object: nil, queue: OperationQueue.main) { [weak self] notification in
guard let self = self else { return } guard let self = self else { return }
@ -249,6 +252,7 @@ class RoomAccessTypeChooserService: RoomAccessTypeChooserServiceProtocol {
} }
} }
case .failure(let error): case .failure(let error):
self.session.spaceService.graphUpdateEnabled = true
self.waitingMessageSubject.send(nil) self.waitingMessageSubject.send(nil)
self.errorSubject.send(error) self.errorSubject.send(error)
} }