Favour network over homeserver reachability when computing the offline indicator. (#4805)

For a whole host of reasons we don't support air-gapped operation anyway and as the SDK is super slow to tell us about the homeserver's reachability the indicator wasn't really working.
This commit is contained in:
Doug
2025-12-02 11:21:47 +00:00
committed by GitHub
parent 3b42a784c8
commit 5f05a457e4
3 changed files with 16 additions and 14 deletions
@@ -1077,7 +1077,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
switch state {
case .loading:
if self?.userSession?.clientProxy.homeserverReachabilityPublisher.value == .reachable {
if self?.userSession?.clientProxy.homeserverReachabilityPublisher.value == .reachable,
self?.appMediator.networkMonitor.reachabilityPublisher.value == .reachable {
ServiceLocator.shared.userIndicatorController.submitIndicator(.init(id: toastIdentifier, type: .toast(progress: .indeterminate), title: L10n.commonSyncing, persistent: true))
}
case .notLoading:
@@ -246,17 +246,17 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol {
MXLog.info("Homeserver reachability: \(homeserverReachability)")
guard let self else { return }
switch (homeserverReachability, networkReachability) {
case (.reachable, _):
switch (networkReachability, homeserverReachability) {
case (.reachable, .reachable):
flowParameters.userIndicatorController.retractIndicatorWithId(reachabilityNotificationID)
case (.unreachable, .unreachable):
flowParameters.userIndicatorController.submitIndicator(.init(id: reachabilityNotificationID,
title: L10n.commonOffline,
persistent: true))
case (.unreachable, .reachable):
case (.reachable, .unreachable):
flowParameters.userIndicatorController.submitIndicator(.init(id: reachabilityNotificationID,
title: L10n.commonServerUnreachable,
persistent: true))
case (.unreachable, _):
flowParameters.userIndicatorController.submitIndicator(.init(id: reachabilityNotificationID,
title: L10n.commonOffline,
persistent: true))
}
}
.store(in: &cancellables)