From 4ef27fabf3d2824ea6d7c6376b25a450fcb6a730 Mon Sep 17 00:00:00 2001 From: Gil Eluard Date: Mon, 17 Jan 2022 22:42:01 +0100 Subject: [PATCH] SP2: Adding Rooms to Spaces element-ios#5230 - Wait for the entire room upgrade before building the space graph --- .../Service/MatrixSDK/RoomAccessTypeChooserService.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/RiotSwiftUI/Modules/Room/RoomAccess/RoomAccessTypeChooser/Service/MatrixSDK/RoomAccessTypeChooserService.swift b/RiotSwiftUI/Modules/Room/RoomAccess/RoomAccessTypeChooser/Service/MatrixSDK/RoomAccessTypeChooserService.swift index 5fd73f2ce..b0828baba 100644 --- a/RiotSwiftUI/Modules/Room/RoomAccess/RoomAccessTypeChooser/Service/MatrixSDK/RoomAccessTypeChooserService.swift +++ b/RiotSwiftUI/Modules/Room/RoomAccess/RoomAccessTypeChooser/Service/MatrixSDK/RoomAccessTypeChooserService.swift @@ -225,6 +225,8 @@ class RoomAccessTypeChooserService: RoomAccessTypeChooserServiceProtocol { } 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 guard let self = self else { return } @@ -235,6 +237,7 @@ class RoomAccessTypeChooserService: RoomAccessTypeChooserServiceProtocol { self.currentRoomId = replacementRoomId let parentSpaces = self.session.spaceService.directParentIds(ofRoomWithId: oldRoomId) 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 guard let self = self else { return } @@ -249,6 +252,7 @@ class RoomAccessTypeChooserService: RoomAccessTypeChooserServiceProtocol { } } case .failure(let error): + self.session.spaceService.graphUpdateEnabled = true self.waitingMessageSubject.send(nil) self.errorSubject.send(error) }