Fix revenue transactions loading

This commit is contained in:
Ilya Laktyushin 2024-03-28 19:57:42 +04:00
parent 364045f8cd
commit cd563d556b

View File

@ -220,34 +220,21 @@ private final class RevenueStatsTransactionsContextImpl {
let peerId = self.peerId let peerId = self.peerId
let lastOffset = self.lastOffset let lastOffset = self.lastOffset
self.disposable.set((self.account.postbox.transaction { transaction -> (Peer, Int32?)? in self.disposable.set((self.account.postbox.transaction { transaction -> Peer? in
let statsDatacenterId = (transaction.getPeerCachedData(peerId: peerId) as? CachedChannelData)?.statsDatacenterId
guard let peer = transaction.getPeer(peerId) else { guard let peer = transaction.getPeer(peerId) else {
return nil return nil
} }
return (peer, statsDatacenterId) return peer
} }
|> mapToSignal { data -> Signal<([RevenueStatsTransactionsContext.State.Transaction], Int32, Int32?), NoError> in |> mapToSignal { peer -> Signal<([RevenueStatsTransactionsContext.State.Transaction], Int32, Int32?), NoError> in
if let (peer, statsDatacenterId) = data { if let peer {
guard let inputChannel = apiInputChannel(peer) else { guard let inputChannel = apiInputChannel(peer) else {
return .complete() return .complete()
} }
let offset = lastOffset ?? 0 let offset = lastOffset ?? 0
let limit: Int32 = lastOffset == nil ? 25 : 50 let limit: Int32 = lastOffset == nil ? 25 : 50
let request = Api.functions.stats.getBroadcastRevenueTransactions(channel: inputChannel, offset: offset, limit: limit) return account.network.request(Api.functions.stats.getBroadcastRevenueTransactions(channel: inputChannel, offset: offset, limit: limit), automaticFloodWait: false)
let signal: Signal<Api.stats.BroadcastRevenueTransactions, MTRpcError>
if let statsDatacenterId = statsDatacenterId, account.network.datacenterId != statsDatacenterId {
signal = account.network.download(datacenterId: Int(statsDatacenterId), isMedia: false, tag: nil)
|> castError(MTRpcError.self)
|> mapToSignal { worker in
return worker.request(request)
}
} else {
signal = account.network.request(request, automaticFloodWait: false)
}
return signal
|> map(Optional.init) |> map(Optional.init)
|> `catch` { _ -> Signal<Api.stats.BroadcastRevenueTransactions?, NoError> in |> `catch` { _ -> Signal<Api.stats.BroadcastRevenueTransactions?, NoError> in
return .single(nil) return .single(nil)