diff --git a/Telegram/Telegram-iOS/Resources/voip_group_connecting.mp3 b/Telegram/Telegram-iOS/Resources/voip_group_connecting.mp3 new file mode 100644 index 0000000000..b1ace8c7f1 Binary files /dev/null and b/Telegram/Telegram-iOS/Resources/voip_group_connecting.mp3 differ diff --git a/Telegram/Telegram-iOS/Resources/voip_group_joined.mp3 b/Telegram/Telegram-iOS/Resources/voip_group_joined.mp3 new file mode 100644 index 0000000000..314b1b16fe Binary files /dev/null and b/Telegram/Telegram-iOS/Resources/voip_group_joined.mp3 differ diff --git a/Telegram/Telegram-iOS/Resources/voip_group_joined.wav b/Telegram/Telegram-iOS/Resources/voip_group_joined.wav deleted file mode 100644 index 684cb47f75..0000000000 Binary files a/Telegram/Telegram-iOS/Resources/voip_group_joined.wav and /dev/null differ diff --git a/Telegram/Telegram-iOS/Resources/voip_group_left.mp3 b/Telegram/Telegram-iOS/Resources/voip_group_left.mp3 new file mode 100644 index 0000000000..a8d79f0aa1 Binary files /dev/null and b/Telegram/Telegram-iOS/Resources/voip_group_left.mp3 differ diff --git a/Telegram/Telegram-iOS/Resources/voip_group_left.wav b/Telegram/Telegram-iOS/Resources/voip_group_left.wav deleted file mode 100644 index 845b507c15..0000000000 Binary files a/Telegram/Telegram-iOS/Resources/voip_group_left.wav and /dev/null differ diff --git a/submodules/TelegramCallsUI/Sources/PresentationCallToneData.swift b/submodules/TelegramCallsUI/Sources/PresentationCallToneData.swift index 1b42a67fd6..32197dfe60 100644 --- a/submodules/TelegramCallsUI/Sources/PresentationCallToneData.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationCallToneData.swift @@ -73,6 +73,7 @@ enum PresentationCallTone { case ended case groupJoined case groupLeft + case groupConnecting var loopCount: Int? { switch self { @@ -84,6 +85,8 @@ enum PresentationCallTone { return 1 case .groupJoined, .groupLeft: return 1 + case .groupConnecting: + return nil default: return nil } @@ -103,8 +106,10 @@ func presentationCallToneData(_ tone: PresentationCallTone) -> Data? { case .ended: return loadToneData(name: "voip_end.caf") case .groupJoined: - return loadToneData(name: "voip_group_joined.wav") + return loadToneData(name: "voip_group_joined.mp3") case .groupLeft: - return loadToneData(name: "voip_group_left.wav") + return loadToneData(name: "voip_group_left.mp3") + case .groupConnecting: + return loadToneData(name: "voip_group_connecting.mp3") } } diff --git a/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift b/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift index 37d8d1bd28..092be11130 100644 --- a/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift @@ -831,10 +831,10 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { case .connected: mappedState = .connected } + let wasConnecting = strongSelf.stateValue.networkState == .connecting if strongSelf.stateValue.networkState != mappedState { strongSelf.stateValue.networkState = mappedState } - let isConnecting = mappedState == .connecting if strongSelf.isCurrentlyConnecting != isConnecting { @@ -847,12 +847,24 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { } } - if case .connected = state, !strongSelf.didConnectOnce { - strongSelf.didConnectOnce = true - - let toneRenderer = PresentationCallToneRenderer(tone: .groupJoined) - strongSelf.toneRenderer = toneRenderer - toneRenderer.setAudioSessionActive(strongSelf.isAudioSessionActive) + if wasConnecting != isConnecting && strongSelf.didConnectOnce { + if isConnecting { + let toneRenderer = PresentationCallToneRenderer(tone: .groupConnecting) + strongSelf.toneRenderer = toneRenderer + toneRenderer.setAudioSessionActive(strongSelf.isAudioSessionActive) + } else { + strongSelf.toneRenderer = nil + } + } + + if case .connected = state { + if !strongSelf.didConnectOnce { + strongSelf.didConnectOnce = true + + let toneRenderer = PresentationCallToneRenderer(tone: .groupJoined) + strongSelf.toneRenderer = toneRenderer + toneRenderer.setAudioSessionActive(strongSelf.isAudioSessionActive) + } } })) @@ -1099,7 +1111,6 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { private func markAsCanBeRemoved() { self.callContext?.stop() - self.callContext = nil self._canBeRemoved.set(.single(true)) if self.didConnectOnce { @@ -1107,7 +1118,7 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { self.toneRenderer = toneRenderer toneRenderer.setAudioSessionActive(self.isAudioSessionActive) - Queue.mainQueue().after(0.5, { + Queue.mainQueue().after(1.0, { self.wasRemoved.set(.single(true)) }) } diff --git a/submodules/TgVoipWebrtc/tgcalls b/submodules/TgVoipWebrtc/tgcalls index 0184a4bf26..20191e3a08 160000 --- a/submodules/TgVoipWebrtc/tgcalls +++ b/submodules/TgVoipWebrtc/tgcalls @@ -1 +1 @@ -Subproject commit 0184a4bf26ed749bf59543c70ff413d4f3579c2b +Subproject commit 20191e3a0828095ea14c6790f756c72f437fae32