diff --git a/ElementX/Sources/Application/AppCoordinator.swift b/ElementX/Sources/Application/AppCoordinator.swift index 41e130978b45f4cf578b34f5f3027ebd87cefd7c..78eb6d9ddb433c3e351aed04cd9447c65e189f76 100644 --- a/ElementX/Sources/Application/AppCoordinator.swift +++ b/ElementX/Sources/Application/AppCoordinator.swift @@ -893,11 +893,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg // Attempt to stop the background task sync loop cleanly, only if the app not already running return } - - MainActor.assumeIsolated { - userSession?.clientProxy.stopSync(completion: completion) - clientProxyObserver = nil - } + userSession?.clientProxy.stopSync(completion: completion) + clientProxyObserver = nil } private func startSync() { @@ -1039,13 +1036,7 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg // This is important for the app to keep refreshing in the background scheduleBackgroundAppRefresh() - /// We have a lot of crashes stemming here which we previously believed are caused by stopSync not being async - /// on the client proxy side (see the comment on that method). We have now realised that will likely not fix anything but - /// we also noticed this does not crash on the main thread, even though the whole AppCoordinator is on the Main actor. - /// As such, we introduced a MainActor conformance on the expirationHandler but we are also assuming main actor - /// isolated in the `stopSync` method above. - /// https://sentry.tools.element.io/organizations/element/issues/4477794/ - task.expirationHandler = { @MainActor [weak self] in + task.expirationHandler = { [weak self] in MXLog.info("Background app refresh task is about to expire.") self?.stopSync(isBackgroundTask: true) {