From 2f5ebbb83aea049a7564288e1df0c28778057ee6 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Wed, 3 Aug 2022 00:00:38 +0400 Subject: [PATCH 1/2] Fix album art loading --- .../Resources/TelegramEngineResources.swift | 73 ++++++++++--------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift b/submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift index 90038abd12..b1bb486d8d 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift @@ -289,41 +289,48 @@ public extension TelegramEngine { let resource = AlbumCoverResource(datacenterId: datacenterId, file: file, title: title, performer: performer) - return bufferedFetch(multipartFetch(postbox: self.account.postbox, network: self.account.network, mediaReferenceRevalidationContext: self.account.mediaReferenceRevalidationContext, resource: resource, datacenterId: datacenterId, size: nil, intervals: .single([(0 ..< Int64.max, .default)]), parameters: MediaResourceFetchParameters( - tag: nil, - info: TelegramCloudMediaResourceFetchInfo( - reference: MediaResourceReference.standalone(resource: resource), - preferBackgroundReferenceRevalidation: false, - continueInBackground: false - ), - isRandomAccessAllowed: true - )) - |> map { result -> EngineMediaResource.Fetch.Result in - switch result { - case let .dataPart(resourceOffset, data, range, complete): - return .dataPart(resourceOffset: resourceOffset, data: data, range: range, complete: complete) - case let .resourceSizeUpdated(size): - return .resourceSizeUpdated(size) - case let .progressUpdated(value): - return .progressUpdated(value) - case let .replaceHeader(data, range): - return .replaceHeader(data: data, range: range) - case let .moveLocalFile(path): - return .moveLocalFile(path: path) - case let .moveTempFile(file): - return .moveTempFile(file: file) - case let .copyLocalItem(item): - return .copyLocalItem(item) - case .reset: - return .reset + let signal = currentWebDocumentsHostDatacenterId(postbox: self.account.postbox, isTestingEnvironment: self.account.testingEnvironment) + |> castError(EngineMediaResource.Fetch.Error.self) + |> take(1) + |> mapToSignal { datacenterId -> Signal in + return multipartFetch(postbox: self.account.postbox, network: self.account.network, mediaReferenceRevalidationContext: self.account.mediaReferenceRevalidationContext, resource: resource, datacenterId: Int(datacenterId), size: nil, intervals: .single([(0 ..< Int64.max, .default)]), parameters: MediaResourceFetchParameters( + tag: nil, + info: TelegramCloudMediaResourceFetchInfo( + reference: MediaResourceReference.standalone(resource: resource), + preferBackgroundReferenceRevalidation: false, + continueInBackground: false + ), + isRandomAccessAllowed: true + )) + |> map { result -> EngineMediaResource.Fetch.Result in + switch result { + case let .dataPart(resourceOffset, data, range, complete): + return .dataPart(resourceOffset: resourceOffset, data: data, range: range, complete: complete) + case let .resourceSizeUpdated(size): + return .resourceSizeUpdated(size) + case let .progressUpdated(value): + return .progressUpdated(value) + case let .replaceHeader(data, range): + return .replaceHeader(data: data, range: range) + case let .moveLocalFile(path): + return .moveLocalFile(path: path) + case let .moveTempFile(file): + return .moveTempFile(file: file) + case let .copyLocalItem(item): + return .copyLocalItem(item) + case .reset: + return .reset + } + } + |> mapError { error -> EngineMediaResource.Fetch.Error in + switch error { + case .generic: + return .generic + } } } - |> mapError { error -> EngineMediaResource.Fetch.Error in - switch error { - case .generic: - return .generic - } - }) + + return bufferedFetch(signal) } public func cancelAllFetches(id: String) { From ee891ece209bc64d00d034e5eab5a8e4ec70e802 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Wed, 3 Aug 2022 00:03:45 +0400 Subject: [PATCH 2/2] Cleanup --- .../Resources/TelegramEngineResources.swift | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift b/submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift index b1bb486d8d..67138b5e64 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift @@ -280,19 +280,12 @@ public extension TelegramEngine { } public func fetchAlbumCover(file: FileMediaReference?, title: String, performer: String) -> Signal { - let datacenterId: Int - if let resource = file?.media.resource as? CloudDocumentMediaResource { - datacenterId = resource.datacenterId - } else { - datacenterId = self.account.network.datacenterId - } - - let resource = AlbumCoverResource(datacenterId: datacenterId, file: file, title: title, performer: performer) - let signal = currentWebDocumentsHostDatacenterId(postbox: self.account.postbox, isTestingEnvironment: self.account.testingEnvironment) |> castError(EngineMediaResource.Fetch.Error.self) |> take(1) |> mapToSignal { datacenterId -> Signal in + let resource = AlbumCoverResource(datacenterId: Int(datacenterId), file: file, title: title, performer: performer) + return multipartFetch(postbox: self.account.postbox, network: self.account.network, mediaReferenceRevalidationContext: self.account.mediaReferenceRevalidationContext, resource: resource, datacenterId: Int(datacenterId), size: nil, intervals: .single([(0 ..< Int64.max, .default)]), parameters: MediaResourceFetchParameters( tag: nil, info: TelegramCloudMediaResourceFetchInfo(