mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 12:07:55 +00:00
Various tweaks (#1129)
* Fixes #1121 - Hide the loading indicator after the logout task finishes * Manually restart the sync only when entering the `error` state * Use stopSync instead of the roomListService directly on client deinit * Replace WeakClientProxyWrapper with callback based delegate * Fix homescreen user avatar not automatically updating * Replace default Build SDK profile with reldbg, which is fast but also doesn't crash * Always show the loading indicator when the room list is not in a `running` state * Implement delayed user indicator presentations through the normal API * Fix the unit tests * Replace UserIndicatorController delayedIndicators dictionary with a plain set
This commit is contained in:
@@ -52,8 +52,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationCoordinatorDelegate,
|
||||
|
||||
private var appDelegateObserver: AnyCancellable?
|
||||
private var userSessionObserver: AnyCancellable?
|
||||
private var clientProxyObserver: AnyCancellable?
|
||||
private var networkMonitorObserver: AnyCancellable?
|
||||
private var initialSyncObserver: AnyCancellable?
|
||||
private var backgroundRefreshSyncObserver: AnyCancellable?
|
||||
|
||||
let notificationManager: NotificationManagerProtocol
|
||||
@@ -355,15 +355,12 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationCoordinatorDelegate,
|
||||
|
||||
showLoadingIndicator()
|
||||
|
||||
defer {
|
||||
hideLoadingIndicator()
|
||||
}
|
||||
|
||||
stopSync()
|
||||
userSessionFlowCoordinator?.stop()
|
||||
|
||||
guard !isSoft else {
|
||||
stateMachine.processEvent(.completedSigningOut(isSoft: isSoft))
|
||||
hideLoadingIndicator()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -380,6 +377,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationCoordinatorDelegate,
|
||||
ServiceLocator.shared.analytics.resetConsentState()
|
||||
|
||||
stateMachine.processEvent(.completedSigningOut(isSoft: isSoft))
|
||||
|
||||
hideLoadingIndicator()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -519,6 +518,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationCoordinatorDelegate,
|
||||
|
||||
backgroundAppRefreshTask?.setTaskCompleted(success: true)
|
||||
backgroundAppRefreshTask = nil
|
||||
|
||||
clientProxyObserver = nil
|
||||
}
|
||||
|
||||
private func startSync() {
|
||||
@@ -532,15 +533,18 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationCoordinatorDelegate,
|
||||
|
||||
let identifier = "StaleDataIndicator"
|
||||
|
||||
ServiceLocator.shared.userIndicatorController.submitIndicator(.init(id: identifier, type: .toast(progress: .indeterminate), title: L10n.commonSyncing, persistent: true))
|
||||
|
||||
initialSyncObserver = userSession.clientProxy
|
||||
clientProxyObserver = userSession.clientProxy
|
||||
.callbacks
|
||||
.receive(on: DispatchQueue.main)
|
||||
.filter(\.isSyncUpdate)
|
||||
.sink { [weak self] _ in
|
||||
ServiceLocator.shared.userIndicatorController.retractIndicatorWithId(identifier)
|
||||
self?.initialSyncObserver?.cancel()
|
||||
.sink { action in
|
||||
switch action {
|
||||
case .startedUpdating:
|
||||
ServiceLocator.shared.userIndicatorController.submitIndicator(.init(id: identifier, type: .toast(progress: .indeterminate), title: L10n.commonSyncing, persistent: true))
|
||||
case .receivedSyncUpdate:
|
||||
ServiceLocator.shared.userIndicatorController.retractIndicatorWithId(identifier)
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user