Cleanup how we setup the CallKit provider and have it be used for outgoing calls as well (#2967)

- tear down ElementCall screens when ending the call from the CXCallController
- make the call UI available in the task manager and lock screen
- Fix broken hang up widget message format
This commit is contained in:
Stefan Ceriu
2024-06-27 14:07:44 +03:00
committed by GitHub
parent 152ecc6f9c
commit 41d40d8de0
11 changed files with 182 additions and 97 deletions
@@ -102,7 +102,7 @@ class CallScreenViewModel: CallScreenViewModelType, CallScreenViewModelProtocol
return
}
await elementCallService.setupCallSession(title: roomProxy.roomTitle)
await elementCallService.setupCallSession(roomID: roomProxy.id, roomDisplayName: roomProxy.roomTitle)
let _ = await roomProxy.sendCallNotificationIfNeeeded()
}
@@ -128,15 +128,15 @@ class CallScreenViewModel: CallScreenViewModelType, CallScreenViewModelProtocol
private func hangUp() async {
let hangUpMessage = """
"api":"toWidget",
{"api":"fromWidget",
"widgetId":"\(widgetDriver.widgetID)",
"requestId":"widgetapi-\(UUID())",
"action":"im.vector.hangup",
"data":{}
"data":{}}
"""
let result = await widgetDriver.sendMessage(hangUpMessage)
MXLog.error("Result yo: \(result)")
MXLog.info("Sent hangUp message with result: \(result)")
}
private static let eventHandlerName = "elementx"
@@ -181,7 +181,7 @@ struct CallScreen_Previews: PreviewProvider {
roomProxy.elementCallWidgetDriverReturnValue = widgetDriver
return CallScreenViewModel(elementCallService: ElementCallServiceMock(),
return CallScreenViewModel(elementCallService: ElementCallServiceMock(.init()),
roomProxy: roomProxy,
callBaseURL: "https://call.element.io",
clientID: "io.element.elementx")