mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
Simplify how to we handle background task expirations. (#3670)
This commit is contained in:
@@ -965,30 +965,33 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
backgroundTask = appMediator.beginBackgroundTask { [weak self] in
|
backgroundTask = appMediator.beginBackgroundTask {
|
||||||
guard let self else { return }
|
|
||||||
|
|
||||||
MXLog.info("Background task is about to expire.")
|
MXLog.info("Background task is about to expire.")
|
||||||
stopSync(isBackgroundTask: true) { [weak self] in
|
|
||||||
guard let self, let backgroundTask else { return }
|
// We're intentionally strongly retaining self here to an EXC_BAD_ACCESS
|
||||||
|
// `backgroundTask` will be eventually released in `endActiveBackgroundTask`
|
||||||
MXLog.info("Ending background task.")
|
// https://sentry.tools.element.io/organizations/element/issues/4477794/events/9cfd04e4d045440f87498809cf718de5/
|
||||||
appMediator.endBackgroundTask(backgroundTask)
|
self.stopSync(isBackgroundTask: true) {
|
||||||
self.backgroundTask = nil
|
self.endActiveBackgroundTask()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc
|
@objc
|
||||||
private func applicationDidBecomeActive() {
|
private func applicationDidBecomeActive() {
|
||||||
MXLog.info("Application did become active")
|
MXLog.info("Application did become active")
|
||||||
|
endActiveBackgroundTask()
|
||||||
if let backgroundTask {
|
startSync()
|
||||||
appMediator.endBackgroundTask(backgroundTask)
|
}
|
||||||
self.backgroundTask = nil
|
|
||||||
|
private func endActiveBackgroundTask() {
|
||||||
|
guard let backgroundTask else {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
startSync()
|
MXLog.info("Ending background task.")
|
||||||
|
appMediator.endBackgroundTask(backgroundTask)
|
||||||
|
self.backgroundTask = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Background app refresh
|
// MARK: Background app refresh
|
||||||
|
|||||||
Reference in New Issue
Block a user