mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-06 04:18:31 +00:00
Begin a background task when receiving a call in order to get state updates for longer.
This commit is contained in:
@@ -148,6 +148,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
|
|||||||
switch action {
|
switch action {
|
||||||
case .startCall(let roomID):
|
case .startCall(let roomID):
|
||||||
self?.handleAppRoute(.call(roomID: roomID))
|
self?.handleAppRoute(.call(roomID: roomID))
|
||||||
|
case .receivedIncomingCallRequest:
|
||||||
|
self?.scheduleDelayedSyncStop()
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -912,6 +914,11 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
|
|||||||
private func applicationWillResignActive() {
|
private func applicationWillResignActive() {
|
||||||
MXLog.info("Application will resign active")
|
MXLog.info("Application will resign active")
|
||||||
|
|
||||||
|
scheduleDelayedSyncStop()
|
||||||
|
scheduleBackgroundAppRefresh()
|
||||||
|
}
|
||||||
|
|
||||||
|
private func scheduleDelayedSyncStop() {
|
||||||
guard backgroundTask == nil else {
|
guard backgroundTask == nil else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -926,10 +933,6 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
|
|||||||
self.backgroundTask = nil
|
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
|
@objc
|
||||||
|
|||||||
@@ -170,11 +170,13 @@ class ElementCallService: NSObject, ElementCallServiceProtocol, PKPushRegistryDe
|
|||||||
// https://stackoverflow.com/a/41230020/730924
|
// https://stackoverflow.com/a/41230020/730924
|
||||||
update.remoteHandle = .init(type: .generic, value: roomID)
|
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 {
|
if let error {
|
||||||
MXLog.error("Failed reporting new incoming call with error: \(error)")
|
MXLog.error("Failed reporting new incoming call with error: \(error)")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self?.actionsSubject.send(.receivedIncomingCallRequest)
|
||||||
|
|
||||||
completion()
|
completion()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
import Combine
|
import Combine
|
||||||
|
|
||||||
enum ElementCallServiceAction {
|
enum ElementCallServiceAction {
|
||||||
|
case receivedIncomingCallRequest
|
||||||
case startCall(roomID: String)
|
case startCall(roomID: String)
|
||||||
case endCall(roomID: String)
|
case endCall(roomID: String)
|
||||||
case setAudioEnabled(_ enabled: Bool, roomID: String)
|
case setAudioEnabled(_ enabled: Bool, roomID: String)
|
||||||
|
|||||||
Reference in New Issue
Block a user