mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Report native calls that end without us to CallKit
The call package now says why a call ended. Only our own hang-up is an end call action; a call the other side declined or left, that nobody answered, or that failed is reported to CallKit with that reason, so the call log no longer shows it as one we ended, and no end action comes back to hang up a call that is already over. Also adopts the package's other host changes: the voice call icon beside "Calling…", and the call's large avatar rendered at the 140 pt it is drawn at. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -5317,6 +5317,37 @@ nonisolated class ElementCallServiceMock: ElementCallServiceProtocol, @unchecked
|
||||
tearDownCallSessionRoomIDReceivedInvocationsLock.withLock { tearDownCallSessionRoomIDUnderlyingReceivedInvocations.append(roomID) }
|
||||
tearDownCallSessionRoomIDClosure?(roomID)
|
||||
}
|
||||
//MARK: - reportCallSessionEnded
|
||||
|
||||
private let reportCallSessionEndedRoomIDReasonCallsCountLock = NSLock()
|
||||
private nonisolated(unsafe) var reportCallSessionEndedRoomIDReasonUnderlyingCallsCount = 0
|
||||
var reportCallSessionEndedRoomIDReasonCallsCount: Int {
|
||||
get { reportCallSessionEndedRoomIDReasonCallsCountLock.withLock { reportCallSessionEndedRoomIDReasonUnderlyingCallsCount } }
|
||||
set { reportCallSessionEndedRoomIDReasonCallsCountLock.withLock { reportCallSessionEndedRoomIDReasonUnderlyingCallsCount = newValue } }
|
||||
}
|
||||
var reportCallSessionEndedRoomIDReasonCalled: Bool {
|
||||
return reportCallSessionEndedRoomIDReasonCallsCount > 0
|
||||
}
|
||||
private let reportCallSessionEndedRoomIDReasonReceivedArgumentsLock = NSLock()
|
||||
private nonisolated(unsafe) var reportCallSessionEndedRoomIDReasonUnderlyingReceivedArguments: (roomID: String, reason: CXCallEndedReason)?
|
||||
var reportCallSessionEndedRoomIDReasonReceivedArguments: (roomID: String, reason: CXCallEndedReason)? {
|
||||
get { reportCallSessionEndedRoomIDReasonReceivedArgumentsLock.withLock { reportCallSessionEndedRoomIDReasonUnderlyingReceivedArguments } }
|
||||
set { reportCallSessionEndedRoomIDReasonReceivedArgumentsLock.withLock { reportCallSessionEndedRoomIDReasonUnderlyingReceivedArguments = newValue } }
|
||||
}
|
||||
private let reportCallSessionEndedRoomIDReasonReceivedInvocationsLock = NSLock()
|
||||
private nonisolated(unsafe) var reportCallSessionEndedRoomIDReasonUnderlyingReceivedInvocations: [(roomID: String, reason: CXCallEndedReason)] = []
|
||||
var reportCallSessionEndedRoomIDReasonReceivedInvocations: [(roomID: String, reason: CXCallEndedReason)] {
|
||||
get { reportCallSessionEndedRoomIDReasonReceivedInvocationsLock.withLock { reportCallSessionEndedRoomIDReasonUnderlyingReceivedInvocations } }
|
||||
set { reportCallSessionEndedRoomIDReasonReceivedInvocationsLock.withLock { reportCallSessionEndedRoomIDReasonUnderlyingReceivedInvocations = newValue } }
|
||||
}
|
||||
nonisolated(unsafe) var reportCallSessionEndedRoomIDReasonClosure: ((String, CXCallEndedReason) -> Void)?
|
||||
|
||||
func reportCallSessionEnded(roomID: String, reason: CXCallEndedReason) {
|
||||
reportCallSessionEndedRoomIDReasonCallsCountLock.withLock { reportCallSessionEndedRoomIDReasonUnderlyingCallsCount += 1 }
|
||||
reportCallSessionEndedRoomIDReasonReceivedArguments = (roomID: roomID, reason: reason)
|
||||
reportCallSessionEndedRoomIDReasonReceivedInvocationsLock.withLock { reportCallSessionEndedRoomIDReasonUnderlyingReceivedInvocations.append((roomID: roomID, reason: reason)) }
|
||||
reportCallSessionEndedRoomIDReasonClosure?(roomID, reason)
|
||||
}
|
||||
//MARK: - setAudioEnabled
|
||||
|
||||
private let setAudioEnabledRoomIDCallsCountLock = NSLock()
|
||||
|
||||
Reference in New Issue
Block a user