Begin a background task when receiving a call in order to get state updates for longer.

This commit is contained in:
Stefan Ceriu
2024-11-06 13:00:11 +02:00
parent b9d05fe7f3
commit 10966ab620
3 changed files with 11 additions and 5 deletions
@@ -148,6 +148,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
switch action {
case .startCall(let roomID):
self?.handleAppRoute(.call(roomID: roomID))
case .receivedIncomingCallRequest:
self?.scheduleDelayedSyncStop()
default:
break
}
@@ -912,6 +914,11 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
private func applicationWillResignActive() {
MXLog.info("Application will resign active")
scheduleDelayedSyncStop()
scheduleBackgroundAppRefresh()
}
private func scheduleDelayedSyncStop() {
guard backgroundTask == nil else {
return
}
@@ -926,10 +933,6 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
self.backgroundTask = nil
}
}
// This does seem to work if scheduled from the background task above
// Schedule it here instead but with an earliest being date of 30 seconds
scheduleBackgroundAppRefresh()
}
@objc
@@ -170,11 +170,13 @@ class ElementCallService: NSObject, ElementCallServiceProtocol, PKPushRegistryDe
// https://stackoverflow.com/a/41230020/730924
update.remoteHandle = .init(type: .generic, value: roomID)
callProvider.reportNewIncomingCall(with: callID.callKitID, update: update) { error in
callProvider.reportNewIncomingCall(with: callID.callKitID, update: update) { [weak self] error in
if let error {
MXLog.error("Failed reporting new incoming call with error: \(error)")
}
self?.actionsSubject.send(.receivedIncomingCallRequest)
completion()
}
@@ -8,6 +8,7 @@
import Combine
enum ElementCallServiceAction {
case receivedIncomingCallRequest
case startCall(roomID: String)
case endCall(roomID: String)
case setAudioEnabled(_ enabled: Bool, roomID: String)