From e36e44ed720c7c3bb3ea548b17b559f75f7895ee Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Tue, 24 Feb 2026 11:11:50 +0100 Subject: [PATCH] Temp --- .../Sources/State/PendingMessageManager.swift | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/submodules/TelegramCore/Sources/State/PendingMessageManager.swift b/submodules/TelegramCore/Sources/State/PendingMessageManager.swift index df76f5ddd8..aad4703d2d 100644 --- a/submodules/TelegramCore/Sources/State/PendingMessageManager.swift +++ b/submodules/TelegramCore/Sources/State/PendingMessageManager.swift @@ -223,6 +223,10 @@ public final class PendingMessageManager { public var pendingMessageCount: Signal<[PeerId: Int], NoError> { return self._pendingMessageCount.get() } + private let _pendingMediaUploads = ValuePromise<[MessageId: Float]>([:], ignoreRepeated: true) + public var pendingMediaUploads: Signal<[MessageId: Float], NoError> { + return self._pendingMediaUploads.get() + } private var messageContexts: [MessageId: PendingMessageContext] = [:] private var pendingMessageIds = Set() @@ -255,6 +259,28 @@ public final class PendingMessageManager { } } + private func updatePendingMediaUploads() { + assert(self.queue.isCurrent()) + + var pendingMediaUploads: [MessageId: Float] = [:] + for (id, context) in self.messageContexts { + guard case .media? = context.contentType else { + continue + } + + switch context.state { + case .waitingForUploadToStart: + pendingMediaUploads[id] = context.status?.progress.progress ?? 0.0 + case .uploading: + pendingMediaUploads[id] = context.status?.progress.progress ?? 0.0 + default: + break + } + } + + self._pendingMediaUploads.set(pendingMediaUploads) + } + func updatePendingMessageIds(_ messageIds: Set) { Logger.shared.log("PendingMessageManager", "update on postboxQueue: \(messageIds)") @@ -356,6 +382,7 @@ public final class PendingMessageManager { Logger.shared.log("PendingMessageManager", "pending messages: \(self.pendingMessageIds)") self._pendingMessageCount.set(pendingMessageCount) + self.updatePendingMediaUploads() } } @@ -628,6 +655,7 @@ public final class PendingMessageManager { messageContext.state = .waitingForUploadToStart(groupId: message.groupingKey, upload: contentUploadSignal) } } + strongSelf.updatePendingMediaUploads() Logger.shared.log("PendingMessageManager", "beginSendingMessages messagesToForward.count: \(messagesToForward.count)") @@ -713,6 +741,7 @@ public final class PendingMessageManager { } else { self.commitSendingSingleMessage(messageContext: messageContext, messageId: messageId, content: content) } + self.updatePendingMediaUploads() } private func beginSendingGroupIfPossible(groupId: Int64) { @@ -849,6 +878,7 @@ public final class PendingMessageManager { activityCategory = .global } self.addContextActivityIfNeeded(messageContext, peerId: PeerActivitySpace(peerId: id.peerId, category: activityCategory)) + self.updatePendingMediaUploads() let queue = self.queue @@ -884,6 +914,7 @@ public final class PendingMessageManager { for subscriber in current.statusSubscribers.copyItems() { subscriber(current.status, current.error) } + strongSelf.updatePendingMediaUploads() } case let .content(content): if let current = strongSelf.messageContexts[id] { @@ -927,6 +958,7 @@ public final class PendingMessageManager { } self.addContextActivityIfNeeded(context, peerId: PeerActivitySpace(peerId: peerId, category: activityCategory)) + self.updatePendingMediaUploads() context.uploadDisposable.set((uploadSignal |> deliverOn(self.queue)).start(next: { [weak self] next in if let strongSelf = self { @@ -940,6 +972,7 @@ public final class PendingMessageManager { for subscriber in current.statusSubscribers.copyItems() { subscriber(context.status, context.error) } + strongSelf.updatePendingMediaUploads() } case let .content(content): if let current = strongSelf.messageContexts[contextId] {