From e5537378d368021f4e4c55b9728523d5a75e3580 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Thu, 23 Mar 2023 12:42:55 +0200 Subject: [PATCH] Prevent `configureViewsPostInitialSync` from being called before the `allRoomsView` is instantiated --- ElementX/Sources/Services/Client/ClientProxy.swift | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ElementX/Sources/Services/Client/ClientProxy.swift b/ElementX/Sources/Services/Client/ClientProxy.swift index 90a2f49e0..7951c0ae8 100644 --- a/ElementX/Sources/Services/Client/ClientProxy.swift +++ b/ElementX/Sources/Services/Client/ClientProxy.swift @@ -58,6 +58,7 @@ class ClientProxy: ClientProxyProtocol { var visibleRoomsSummaryProvider: RoomSummaryProviderProtocol? var allRoomsSlidingSyncView: SlidingSyncList? + var allRoomsViewProxy: SlidingSyncViewProxy? var allRoomsSummaryProvider: RoomSummaryProviderProtocol? private var loadCachedAvatarURLTask: Task? @@ -270,6 +271,7 @@ class ClientProxy: ClientProxyProtocol { // List observers need to be setup before calling build() on the SlidingSyncBuilder otherwise // cold cache state and count updates will be lost buildAndConfigureVisibleRoomsSlidingSyncView(visibleRoomsView: visibleRoomsView) + buildAndConfigureAllRoomsSlidingSyncView() let slidingSync = try slidingSyncBuilder .addList(v: visibleRoomsView) @@ -277,13 +279,13 @@ class ClientProxy: ClientProxyProtocol { .coldCache(name: "ElementX") .build() + // Don't forget to update the view proxies after building the slidingSync visibleRoomsViewProxy?.setSlidingSync(slidingSync: slidingSync) + allRoomsViewProxy?.setSlidingSync(slidingSync: slidingSync) slidingSync.setObserver(observer: WeakClientProxyWrapper(clientProxy: self)) self.slidingSync = slidingSync - - buildAndConfigureAllRoomsSlidingSyncView() } catch { MXLog.error("Failed building sliding sync with error: \(error)") } @@ -331,15 +333,13 @@ class ClientProxy: ClientProxyProtocol { let allRoomsViewProxy = SlidingSyncViewProxy(slidingSyncView: allRoomsView) - if let slidingSync { - allRoomsViewProxy.setSlidingSync(slidingSync: slidingSync) - } - allRoomsSummaryProvider = RoomSummaryProvider(slidingSyncViewProxy: allRoomsViewProxy, eventStringBuilder: RoomEventStringBuilder(stateEventStringBuilder: RoomStateEventStringBuilder(userID: userID))) allRoomsSlidingSyncView = allRoomsView + self.allRoomsViewProxy = allRoomsViewProxy + } catch { MXLog.error("Failed building the all rooms sliding sync view with error: \(error)") }