Fix syncing not restaring because of relying on the roomList service state instead of the sync service one

This commit is contained in:
Stefan Ceriu
2023-07-17 14:05:49 +03:00
committed by Stefan Ceriu
parent 2baeb13ebc
commit 870cefe316
@@ -32,7 +32,10 @@ class ClientProxy: ClientProxyProtocol {
private var roomListStateUpdateTaskHandle: TaskHandle? private var roomListStateUpdateTaskHandle: TaskHandle?
private var appService: App? private var appService: App?
private var appServiceUpdateTaskHandle: TaskHandle? private var appServiceStateUpdateTaskHandle: TaskHandle?
#warning("This is a workaround until the RustSDK provides a sync service state getter")
private var appServiceStateUpdateCurrentValueSubject = CurrentValueSubject<AppState, Never>(.terminated)
var roomSummaryProvider: RoomSummaryProviderProtocol? var roomSummaryProvider: RoomSummaryProviderProtocol?
var inviteSummaryProvider: RoomSummaryProviderProtocol? var inviteSummaryProvider: RoomSummaryProviderProtocol?
@@ -110,7 +113,7 @@ class ClientProxy: ClientProxyProtocol {
} }
var isSyncing: Bool { var isSyncing: Bool {
isStartingSync || roomListService?.isSyncing() ?? false isStartingSync || appServiceStateUpdateCurrentValueSubject.value == .running
} }
/// Ensure we don't call start sync whilst awaiting a previous call. /// Ensure we don't call start sync whilst awaiting a previous call.
@@ -423,7 +426,7 @@ class ClientProxy: ClientProxyProtocol {
self.appService = appService self.appService = appService
self.roomListService = roomListService self.roomListService = roomListService
appServiceUpdateTaskHandle = createAppServiceObserver(appService) appServiceStateUpdateTaskHandle = createAppServiceObserver(appService)
roomListStateUpdateTaskHandle = createRoomListServiceObserver(roomListService) roomListStateUpdateTaskHandle = createRoomListServiceObserver(roomListService)
} catch { } catch {
@@ -434,7 +437,11 @@ class ClientProxy: ClientProxyProtocol {
private func createAppServiceObserver(_ appService: App) -> TaskHandle { private func createAppServiceObserver(_ appService: App) -> TaskHandle {
appService.state(listener: AppStateObserverProxy { [weak self] state in appService.state(listener: AppStateObserverProxy { [weak self] state in
guard let self else { return } guard let self else { return }
MXLog.info("Received app service update: \(state)") MXLog.info("Received app service update: \(state)")
appServiceStateUpdateCurrentValueSubject.send(state)
switch state { switch state {
case .running, .terminated: case .running, .terminated:
break break