Postbox -> TelegramEngine wave 106 (pivot: engine data() incremental facade + 1-site drain)

Original wave 106 pure import-drop sweep abandoned: 576 candidate files
all genuinely reference Postbox-tier tokens; wave 93's pattern exhausted
at file granularity (no single-file orphans remain).

Pivot: extend engine.resources.data(resource:) facade with
`incremental: Bool = false` parameter (wires to ResourceDataRequestOption).
Drain the 1 live consumer site (ChatInterfaceStateContextMenus:1327)
plus consumer-side `data.complete` -> `data.isComplete` rename.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
isaac 2026-04-26 22:49:53 +04:00
parent 40e1a5c7e5
commit 1b85d8ccb0
2 changed files with 7 additions and 3 deletions

View file

@ -454,12 +454,16 @@ public extension TelegramEngine {
resource: EngineMediaResource,
pathExtension: String? = nil,
waitUntilFetchStatus: Bool = false,
incremental: Bool = false,
attemptSynchronously: Bool = false
) -> Signal<EngineMediaResource.ResourceData, NoError> {
let option: ResourceDataRequestOption = incremental
? .incremental(waitUntilFetchStatus: waitUntilFetchStatus)
: .complete(waitUntilFetchStatus: waitUntilFetchStatus)
return self.account.postbox.mediaBox.resourceData(
resource._asResource(),
pathExtension: pathExtension,
option: .complete(waitUntilFetchStatus: waitUntilFetchStatus),
option: option,
attemptSynchronously: attemptSynchronously
)
|> map { EngineMediaResource.ResourceData($0) }

View file

@ -1324,10 +1324,10 @@ func contextMenuForChatPresentationInterfaceState(chatPresentationInterfaceState
if resourceAvailable {
for media in message.media {
if let image = media as? TelegramMediaImage, let largest = largestImageRepresentation(image.representations) {
let _ = (context.account.postbox.mediaBox.resourceData(largest.resource, option: .incremental(waitUntilFetchStatus: false))
let _ = (context.engine.resources.data(resource: EngineMediaResource(largest.resource), incremental: true)
|> take(1)
|> deliverOnMainQueue).startStandalone(next: { data in
if data.complete, let imageData = try? Data(contentsOf: URL(fileURLWithPath: data.path)) {
if data.isComplete, let imageData = try? Data(contentsOf: URL(fileURLWithPath: data.path)) {
if let image = UIImage(data: imageData) {
if !messageText.isEmpty {
copyTextWithEntities()