mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
call: Support voice only incoming call
This commit is contained in:
@@ -25,6 +25,7 @@ class ElementCallService: NSObject, ElementCallServiceProtocol, PKPushRegistryDe
|
||||
let callKitID: UUID
|
||||
let roomID: String
|
||||
let rtcNotificationID: String?
|
||||
let isVoiceCall: Bool
|
||||
}
|
||||
|
||||
private let pushRegistry: PKPushRegistry
|
||||
@@ -111,7 +112,7 @@ class ElementCallService: NSObject, ElementCallServiceProtocol, PKPushRegistryDe
|
||||
let callID = if let incomingCallID, incomingCallID.roomID == roomID {
|
||||
incomingCallID
|
||||
} else {
|
||||
CallID(callKitID: UUID(), roomID: roomID, rtcNotificationID: nil)
|
||||
CallID(callKitID: UUID(), roomID: roomID, rtcNotificationID: nil, isVoiceCall: false)
|
||||
}
|
||||
|
||||
incomingCallID = nil
|
||||
@@ -177,7 +178,9 @@ class ElementCallService: NSObject, ElementCallServiceProtocol, PKPushRegistryDe
|
||||
return
|
||||
}
|
||||
|
||||
let callID = CallID(callKitID: UUID(), roomID: roomID, rtcNotificationID: rtcNotificationID)
|
||||
let isVoiceCall = payload.dictionaryPayload[ElementCallServiceNotificationKey.isVoiceCall.rawValue] as? Bool ?? false
|
||||
|
||||
let callID = CallID(callKitID: UUID(), roomID: roomID, rtcNotificationID: rtcNotificationID, isVoiceCall: isVoiceCall)
|
||||
incomingCallID = callID
|
||||
|
||||
guard let expirationDate = (payload.dictionaryPayload[ElementCallServiceNotificationKey.expirationDate.rawValue] as? Date) else {
|
||||
@@ -199,7 +202,7 @@ class ElementCallService: NSObject, ElementCallServiceProtocol, PKPushRegistryDe
|
||||
let roomDisplayName = payload.dictionaryPayload[ElementCallServiceNotificationKey.roomDisplayName.rawValue] as? String
|
||||
|
||||
let update = CXCallUpdate()
|
||||
update.hasVideo = true
|
||||
update.hasVideo = !isVoiceCall
|
||||
update.localizedCallerName = roomDisplayName
|
||||
// https://stackoverflow.com/a/41230020/730924
|
||||
update.remoteHandle = .init(type: .generic, value: roomID)
|
||||
@@ -271,7 +274,7 @@ class ElementCallService: NSObject, ElementCallServiceProtocol, PKPushRegistryDe
|
||||
// Then end the and call rely on `setupCallSession` to create a new one
|
||||
provider.reportCall(with: incomingCallID.callKitID, endedAt: nil, reason: .remoteEnded)
|
||||
|
||||
self.actionsSubject.send(.startCall(roomID: incomingCallID.roomID))
|
||||
self.actionsSubject.send(.startCall(roomID: incomingCallID.roomID, isVoiceCall: incomingCallID.isVoiceCall))
|
||||
self.endUnansweredCallTask?.cancel()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user