From 39ebfb356e566bd8d635005f4938f290b38a18a0 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Sun, 27 Feb 2022 02:47:25 +0400 Subject: [PATCH] Fix request stream channels --- .../TelegramEngine/Calls/GroupCalls.swift | 2 +- .../Calls/TelegramEngineCalls.swift | 4 ++-- .../Sources/GroupCallContext.swift | 23 ++++++++++++++++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Calls/GroupCalls.swift b/submodules/TelegramCore/Sources/TelegramEngine/Calls/GroupCalls.swift index 4b07cdd187..8720e9feb6 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Calls/GroupCalls.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Calls/GroupCalls.swift @@ -2414,7 +2414,7 @@ private func mergeAndSortParticipants(current currentParticipants: [GroupCallPar } public final class AudioBroadcastDataSource { - fileprivate let download: Download + let download: Download fileprivate init(download: Download) { self.download = download diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Calls/TelegramEngineCalls.swift b/submodules/TelegramCore/Sources/TelegramEngine/Calls/TelegramEngineCalls.swift index 59e40078a3..dd5b309556 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Calls/TelegramEngineCalls.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Calls/TelegramEngineCalls.swift @@ -132,8 +132,8 @@ public extension TelegramEngine { |> take(1) } - public func requestStreamState(callId: Int64, accessHash: Int64) -> Signal { - return self.account.network.request(Api.functions.phone.getGroupCallStreamChannels(call: .inputGroupCall(id: callId, accessHash: accessHash))) + public func requestStreamState(dataSource: AudioBroadcastDataSource, callId: Int64, accessHash: Int64) -> Signal { + return dataSource.download.request(Api.functions.phone.getGroupCallStreamChannels(call: .inputGroupCall(id: callId, accessHash: accessHash))) |> mapToSignal { result -> Signal in switch result { case let .groupCallStreamChannels(channels): diff --git a/submodules/TelegramVoip/Sources/GroupCallContext.swift b/submodules/TelegramVoip/Sources/GroupCallContext.swift index 32209dcc3b..1d534dd233 100644 --- a/submodules/TelegramVoip/Sources/GroupCallContext.swift +++ b/submodules/TelegramVoip/Sources/GroupCallContext.swift @@ -55,7 +55,28 @@ private final class NetworkBroadcastPartSource: BroadcastPartSource { func requestTime(completion: @escaping (Int64) -> Void) -> Disposable { if self.isExternalStream { - return self.engine.calls.requestStreamState(callId: self.callId, accessHash: self.accessHash).start(next: { result in + let dataSource: Signal + if let dataSourceValue = self.dataSource { + dataSource = .single(dataSourceValue) + } else { + dataSource = self.engine.calls.getAudioBroadcastDataSource(callId: self.callId, accessHash: self.accessHash) + } + + let engine = self.engine + let callId = self.callId + let accessHash = self.accessHash + + return (dataSource + |> deliverOn(self.queue) + |> mapToSignal { [weak self] dataSource -> Signal in + if let dataSource = dataSource { + self?.dataSource = dataSource + return engine.calls.requestStreamState(dataSource: dataSource, callId: callId, accessHash: accessHash) + } else { + return .single(nil) + } + } + |> deliverOn(self.queue)).start(next: { result in if let channel = result?.channels.first { completion(channel.latestTimestamp) } else {