diff --git a/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift index 3132ae4f80..0f8f16c9c3 100644 --- a/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift +++ b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift @@ -118,7 +118,7 @@ public struct InstantPageGalleryEntry: Equatable { var representations: [TelegramMediaImageRepresentation] = [] representations.append(contentsOf: file.previewRepresentations) if let dimensions = file.dimensions { - representations.append(TelegramMediaImageRepresentation(dimensions: dimensions, resource: file.resource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: dimensions, resource: file.resource, progressiveSizes: [], immediateThumbnailData: nil)) } let image = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: representations, immediateThumbnailData: file.immediateThumbnailData, reference: nil, partialReference: nil, flags: []) return InstantImageGalleryItem(context: context, presentationData: presentationData, itemId: self.index, imageReference: .webPage(webPage: WebpageReference(webPage), media: image), caption: caption, credit: credit, location: self.location, openUrl: openUrl, openUrlOptions: openUrlOptions) diff --git a/submodules/ItemListStickerPackItem/Sources/ItemListStickerPackItem.swift b/submodules/ItemListStickerPackItem/Sources/ItemListStickerPackItem.swift index d7462bab91..85ad2f2bc4 100644 --- a/submodules/ItemListStickerPackItem/Sources/ItemListStickerPackItem.swift +++ b/submodules/ItemListStickerPackItem/Sources/ItemListStickerPackItem.swift @@ -451,7 +451,7 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { thumbnailItem = .animated(item.file.resource) resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: item.file.resource) } else if let dimensions = item.file.dimensions, let resource = chatMessageStickerResource(file: item.file, small: true) as? TelegramMediaResource { - thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource, progressiveSizes: [])) + thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: resource) } } diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift b/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift index 56a36a4265..bc1fc47954 100644 --- a/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift +++ b/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickers.swift @@ -265,7 +265,7 @@ public func legacyEnqueueGifMessage(account: Account, data: Data) -> Signal Signal String? { return nil } -private let legacyImageUriExpr = try? NSRegularExpression(pattern: "telegram-peer-photo-size-([-\\d]+)-([-\\d]+)-([-\\d]+)-([-\\d]+)", options: []) +private let legacyImageUriExpr = try? NSRegularExpression(pattern: "telegram-peer-photo-size-([-\\d]+)-([-\\d]+)-([-\\d]+)-([-\\d]+)-([-\\d]+)", options: []) public func resourceFromLegacyImageUri(_ uri: String) -> MediaResource? { guard let legacyImageUriExpr = legacyImageUriExpr else { @@ -21,13 +21,17 @@ public func resourceFromLegacyImageUri(_ uri: String) -> MediaResource? { if let match = matches.first { let nsString = uri as NSString let datacenterId = nsString.substring(with: match.range(at: 1)) - let size = nsString.substring(with: match.range(at: 2)) - let volumeId = nsString.substring(with: match.range(at: 3)) - let localId = nsString.substring(with: match.range(at: 4)) + let photoId = nsString.substring(with: match.range(at: 2)) + let size = nsString.substring(with: match.range(at: 3)) + let volumeId = nsString.substring(with: match.range(at: 4)) + let localId = nsString.substring(with: match.range(at: 5)) guard let nDatacenterId = Int32(datacenterId) else { return nil } + guard let nPhotoId = Int64(photoId) else { + return nil + } guard let nSizeSpec = Int32(size), let sizeSpec = CloudPeerPhotoSizeSpec(rawValue: nSizeSpec) else { return nil } @@ -38,7 +42,7 @@ public func resourceFromLegacyImageUri(_ uri: String) -> MediaResource? { return nil } - return CloudPeerPhotoSizeMediaResource(datacenterId: nDatacenterId, sizeSpec: sizeSpec, volumeId: nVolumeId, localId: nLocalId) + return CloudPeerPhotoSizeMediaResource(datacenterId: nDatacenterId, photoId: nPhotoId, sizeSpec: sizeSpec, volumeId: nVolumeId, localId: nLocalId) } return nil } diff --git a/submodules/PeerInfoUI/Sources/ChannelInfoController.swift b/submodules/PeerInfoUI/Sources/ChannelInfoController.swift index ae74d55458..1243fed2f9 100644 --- a/submodules/PeerInfoUI/Sources/ChannelInfoController.swift +++ b/submodules/PeerInfoUI/Sources/ChannelInfoController.swift @@ -734,7 +734,7 @@ public func channelInfoController(context: AccountContext, peerId: PeerId) -> Vi if let data = image.jpegData(compressionQuality: 0.6) { let resource = LocalFileMediaResource(fileId: arc4random64()) context.account.postbox.mediaBox.storeResourceData(resource.id, data: data) - let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: []) + let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: [], immediateThumbnailData: nil) updateState { $0.withUpdatedUpdatingAvatar(.image(representation, true)) } diff --git a/submodules/SettingsUI/Sources/Themes/CustomWallpaperPicker.swift b/submodules/SettingsUI/Sources/Themes/CustomWallpaperPicker.swift index 940dc2ce69..ef219f330b 100644 --- a/submodules/SettingsUI/Sources/Themes/CustomWallpaperPicker.swift +++ b/submodules/SettingsUI/Sources/Themes/CustomWallpaperPicker.swift @@ -175,7 +175,7 @@ func uploadCustomWallpaper(context: AccountContext, wallpaper: WallpaperGalleryE let apply: () -> Void = { let settings = WallpaperSettings(blur: mode.contains(.blur), motion: mode.contains(.motion), color: nil, intensity: nil) - let wallpaper: TelegramWallpaper = .image([TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: []), TelegramMediaImageRepresentation(dimensions: PixelDimensions(croppedImage.size), resource: resource, progressiveSizes: [])], settings) + let wallpaper: TelegramWallpaper = .image([TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil), TelegramMediaImageRepresentation(dimensions: PixelDimensions(croppedImage.size), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)], settings) updateWallpaper(wallpaper) DispatchQueue.main.async { completion() diff --git a/submodules/SettingsUI/Sources/Themes/EditThemeController.swift b/submodules/SettingsUI/Sources/Themes/EditThemeController.swift index 14713d7a87..063e9c92c4 100644 --- a/submodules/SettingsUI/Sources/Themes/EditThemeController.swift +++ b/submodules/SettingsUI/Sources/Themes/EditThemeController.swift @@ -359,7 +359,7 @@ public func editThemeController(context: AccountContext, mode: EditThemeControll |> mapToSignal { wallpaper -> Signal in if let wallpaper = wallpaper, case let .file(file) = wallpaper.wallpaper { var convertedRepresentations: [ImageRepresentationWithReference] = [] - convertedRepresentations.append(ImageRepresentationWithReference(representation: TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 100, height: 100), resource: file.file.resource, progressiveSizes: []), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) + convertedRepresentations.append(ImageRepresentationWithReference(representation: TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 100, height: 100), resource: file.file.resource, progressiveSizes: [], immediateThumbnailData: nil), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) return wallpaperDatas(account: context.account, accountManager: context.sharedContext.accountManager, fileReference: .standalone(media: file.file), representations: convertedRepresentations, alwaysShowThumbnailFirst: false, thumbnail: false, onlyFullSize: true, autoFetchFullSize: true, synchronousLoad: false) |> mapToSignal { _, fullSizeData, complete -> Signal in guard complete, let fullSizeData = fullSizeData else { diff --git a/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift index 6cec21d302..40495d30bd 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift @@ -456,7 +456,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate for representation in file.file.previewRepresentations { convertedRepresentations.append(ImageRepresentationWithReference(representation: representation, reference: .wallpaper(wallpaper: .slug(file.slug), resource: representation.resource))) } - convertedRepresentations.append(ImageRepresentationWithReference(representation: .init(dimensions: dimensions, resource: file.file.resource, progressiveSizes: []), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) + convertedRepresentations.append(ImageRepresentationWithReference(representation: .init(dimensions: dimensions, resource: file.file.resource, progressiveSizes: [], immediateThumbnailData: nil), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) wallpaperSignal = patternWallpaperImage(account: context.account, accountManager: context.sharedContext.accountManager, representations: convertedRepresentations, mode: .screen, autoFetchFullSize: true) } else if let bottomColor = backgroundColors.1 { diff --git a/submodules/SettingsUI/Sources/Themes/ThemeGridSearchItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchItem.swift index 04d8256dce..4d4383553f 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeGridSearchItem.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeGridSearchItem.swift @@ -109,10 +109,10 @@ final class ThemeGridSearchItemNode: GridItemNode { var representations: [TelegramMediaImageRepresentation] = [] if let thumbnailResource = thumbnailResource, let thumbnailDimensions = thumbnailDimensions { - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)) } if let imageResource = imageResource, let imageDimensions = imageDimensions { - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(imageDimensions), resource: imageResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(imageDimensions), resource: imageResource, progressiveSizes: [], immediateThumbnailData: nil)) } if !representations.isEmpty { let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: representations, immediateThumbnailData: immediateThumbnailData, reference: nil, partialReference: nil, flags: []) diff --git a/submodules/SettingsUI/Sources/Themes/ThemePreviewControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemePreviewControllerNode.swift index ec0bfc8a78..430610ebe6 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemePreviewControllerNode.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemePreviewControllerNode.swift @@ -231,7 +231,7 @@ final class ThemePreviewControllerNode: ASDisplayNode, UIScrollViewDelegate { for representation in file.file.previewRepresentations { convertedRepresentations.append(ImageRepresentationWithReference(representation: representation, reference: .wallpaper(wallpaper: .slug(file.slug), resource: representation.resource))) } - convertedRepresentations.append(ImageRepresentationWithReference(representation: .init(dimensions: dimensions, resource: file.file.resource, progressiveSizes: []), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) + convertedRepresentations.append(ImageRepresentationWithReference(representation: .init(dimensions: dimensions, resource: file.file.resource, progressiveSizes: [], immediateThumbnailData: nil), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) let signal: Signal<(TransformImageArguments) -> DrawingContext?, NoError> let fileReference = FileMediaReference.standalone(media: file.file) diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift index c9b506636b..44376bb5dc 100644 --- a/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift +++ b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift @@ -273,7 +273,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { for representation in file.file.previewRepresentations { convertedRepresentations.append(ImageRepresentationWithReference(representation: representation, reference: reference(for: representation.resource, media: file.file, message: message))) } - convertedRepresentations.append(ImageRepresentationWithReference(representation: .init(dimensions: dimensions, resource: file.file.resource, progressiveSizes: []), reference: reference(for: file.file.resource, media: file.file, message: message))) + convertedRepresentations.append(ImageRepresentationWithReference(representation: .init(dimensions: dimensions, resource: file.file.resource, progressiveSizes: [], immediateThumbnailData: nil), reference: reference(for: file.file.resource, media: file.file, message: message))) if wallpaper.isPattern { var patternColors: [UIColor] = [] @@ -448,9 +448,9 @@ final class WallpaperGalleryItemNode: GalleryItemNode { var representations: [TelegramMediaImageRepresentation] = [] if let thumbnailResource = thumbnailResource, let thumbnailDimensions = thumbnailDimensions { - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)) } - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(imageDimensions), resource: imageResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(imageDimensions), resource: imageResource, progressiveSizes: [], immediateThumbnailData: nil)) let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: representations, immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) signal = chatMessagePhoto(postbox: context.account.postbox, photoReference: .standalone(media: tmpImage)) diff --git a/submodules/SyncCore/Sources/CloudFileMediaResource.swift b/submodules/SyncCore/Sources/CloudFileMediaResource.swift index adbc601e56..c8d4e0c806 100644 --- a/submodules/SyncCore/Sources/CloudFileMediaResource.swift +++ b/submodules/SyncCore/Sources/CloudFileMediaResource.swift @@ -120,8 +120,6 @@ public final class CloudPhotoSizeMediaResource: TelegramMediaResource { public let photoId: Int64 public let accessHash: Int64 public let sizeSpec: String - public let volumeId: Int64 - public let localId: Int32 public let size: Int? public let fileReference: Data? @@ -129,13 +127,11 @@ public final class CloudPhotoSizeMediaResource: TelegramMediaResource { return CloudPhotoSizeMediaResourceId(datacenterId: Int32(self.datacenterId), photoId: self.photoId, sizeSpec: self.sizeSpec) } - public init(datacenterId: Int32, photoId: Int64, accessHash: Int64, sizeSpec: String, volumeId: Int64, localId: Int32, size: Int?, fileReference: Data?) { + public init(datacenterId: Int32, photoId: Int64, accessHash: Int64, sizeSpec: String, size: Int?, fileReference: Data?) { self.datacenterId = Int(datacenterId) self.photoId = photoId self.accessHash = accessHash self.sizeSpec = sizeSpec - self.volumeId = volumeId - self.localId = localId self.size = size self.fileReference = fileReference } @@ -145,8 +141,6 @@ public final class CloudPhotoSizeMediaResource: TelegramMediaResource { self.photoId = decoder.decodeInt64ForKey("i", orElse: 0) self.accessHash = decoder.decodeInt64ForKey("h", orElse: 0) self.sizeSpec = decoder.decodeStringForKey("s", orElse: "") - self.volumeId = decoder.decodeInt64ForKey("v", orElse: 0) - self.localId = decoder.decodeInt32ForKey("l", orElse: 0) if let size = decoder.decodeOptionalInt32ForKey("n") { self.size = Int(size) } else { @@ -160,8 +154,6 @@ public final class CloudPhotoSizeMediaResource: TelegramMediaResource { encoder.encodeInt64(self.photoId, forKey: "i") encoder.encodeInt64(self.accessHash, forKey: "h") encoder.encodeString(self.sizeSpec, forKey: "s") - encoder.encodeInt64(self.volumeId, forKey: "v") - encoder.encodeInt32(self.localId, forKey: "l") if let size = self.size { encoder.encodeInt32(Int32(size), forKey: "n") } else { @@ -176,7 +168,7 @@ public final class CloudPhotoSizeMediaResource: TelegramMediaResource { public func isEqual(to: MediaResource) -> Bool { if let to = to as? CloudPhotoSizeMediaResource { - return self.datacenterId == to.datacenterId && self.photoId == to.photoId && self.accessHash == to.accessHash && self.sizeSpec == to.sizeSpec && self.volumeId == to.volumeId && self.localId == to.localId && self.size == to.size && self.fileReference == to.fileReference + return self.datacenterId == to.datacenterId && self.photoId == to.photoId && self.accessHash == to.accessHash && self.sizeSpec == to.sizeSpec && self.size == to.size && self.fileReference == to.fileReference } else { return false } @@ -212,21 +204,17 @@ public final class CloudDocumentSizeMediaResource: TelegramMediaResource { public let documentId: Int64 public let accessHash: Int64 public let sizeSpec: String - public let volumeId: Int64 - public let localId: Int32 public let fileReference: Data? public var id: MediaResourceId { return CloudDocumentSizeMediaResourceId(datacenterId: Int32(self.datacenterId), documentId: self.documentId, sizeSpec: self.sizeSpec) } - public init(datacenterId: Int32, documentId: Int64, accessHash: Int64, sizeSpec: String, volumeId: Int64, localId: Int32, fileReference: Data?) { + public init(datacenterId: Int32, documentId: Int64, accessHash: Int64, sizeSpec: String, fileReference: Data?) { self.datacenterId = Int(datacenterId) self.documentId = documentId self.accessHash = accessHash self.sizeSpec = sizeSpec - self.volumeId = volumeId - self.localId = localId self.fileReference = fileReference } @@ -235,8 +223,6 @@ public final class CloudDocumentSizeMediaResource: TelegramMediaResource { self.documentId = decoder.decodeInt64ForKey("i", orElse: 0) self.accessHash = decoder.decodeInt64ForKey("h", orElse: 0) self.sizeSpec = decoder.decodeStringForKey("s", orElse: "") - self.volumeId = decoder.decodeInt64ForKey("v", orElse: 0) - self.localId = decoder.decodeInt32ForKey("l", orElse: 0) self.fileReference = decoder.decodeBytesForKey("fr")?.makeData() } @@ -245,8 +231,6 @@ public final class CloudDocumentSizeMediaResource: TelegramMediaResource { encoder.encodeInt64(self.documentId, forKey: "i") encoder.encodeInt64(self.accessHash, forKey: "h") encoder.encodeString(self.sizeSpec, forKey: "s") - encoder.encodeInt64(self.volumeId, forKey: "v") - encoder.encodeInt32(self.localId, forKey: "l") if let fileReference = self.fileReference { encoder.encodeBytes(MemoryBuffer(data: fileReference), forKey: "fr") } else { @@ -256,7 +240,7 @@ public final class CloudDocumentSizeMediaResource: TelegramMediaResource { public func isEqual(to: MediaResource) -> Bool { if let to = to as? CloudDocumentSizeMediaResource { - return self.datacenterId == to.datacenterId && self.documentId == to.documentId && self.accessHash == to.accessHash && self.sizeSpec == to.sizeSpec && self.volumeId == to.volumeId && self.localId == to.localId && self.fileReference == to.fileReference + return self.datacenterId == to.datacenterId && self.documentId == to.documentId && self.accessHash == to.accessHash && self.sizeSpec == to.sizeSpec && self.fileReference == to.fileReference } else { return false } @@ -270,19 +254,25 @@ public enum CloudPeerPhotoSizeSpec: Int32 { public struct CloudPeerPhotoSizeMediaResourceId: MediaResourceId, Hashable { let datacenterId: Int32 + let photoId: Int64? let sizeSpec: CloudPeerPhotoSizeSpec - let volumeId: Int64 - let localId: Int32 + let volumeId: Int64? + let localId: Int32? - init(datacenterId: Int32, sizeSpec: CloudPeerPhotoSizeSpec, volumeId: Int64, localId: Int32) { + init(datacenterId: Int32, photoId: Int64?, sizeSpec: CloudPeerPhotoSizeSpec, volumeId: Int64?, localId: Int32?) { self.datacenterId = datacenterId + self.photoId = photoId self.sizeSpec = sizeSpec self.volumeId = volumeId self.localId = localId } public var uniqueId: String { - return "telegram-peer-photo-size-\(self.datacenterId)-\(self.sizeSpec.rawValue)-\(self.volumeId)-\(self.localId)" + if let photoId = self.photoId { + return "telegram-peer-photo-size-\(self.datacenterId)-\(photoId)-\(self.sizeSpec.rawValue)-\(self.volumeId ?? 0)-\(self.localId ?? 0)" + } else { + return "telegram-peer-photo-size-\(self.datacenterId)-\(self.sizeSpec.rawValue)-\(self.volumeId ?? 0)-\(self.localId ?? 0)" + } } public func isEqual(to: MediaResourceId) -> Bool { @@ -296,16 +286,18 @@ public struct CloudPeerPhotoSizeMediaResourceId: MediaResourceId, Hashable { public final class CloudPeerPhotoSizeMediaResource: TelegramMediaResource { public let datacenterId: Int + public let photoId: Int64? public let sizeSpec: CloudPeerPhotoSizeSpec - public let volumeId: Int64 - public let localId: Int32 + public let volumeId: Int64? + public let localId: Int32? public var id: MediaResourceId { - return CloudPeerPhotoSizeMediaResourceId(datacenterId: Int32(self.datacenterId), sizeSpec: self.sizeSpec, volumeId: self.volumeId, localId: self.localId) + return CloudPeerPhotoSizeMediaResourceId(datacenterId: Int32(self.datacenterId), photoId: self.photoId, sizeSpec: self.sizeSpec, volumeId: self.volumeId, localId: self.localId) } - public init(datacenterId: Int32, sizeSpec: CloudPeerPhotoSizeSpec, volumeId: Int64, localId: Int32) { + public init(datacenterId: Int32, photoId: Int64?, sizeSpec: CloudPeerPhotoSizeSpec, volumeId: Int64?, localId: Int32?) { self.datacenterId = Int(datacenterId) + self.photoId = photoId self.sizeSpec = sizeSpec self.volumeId = volumeId self.localId = localId @@ -313,21 +305,35 @@ public final class CloudPeerPhotoSizeMediaResource: TelegramMediaResource { public required init(decoder: PostboxDecoder) { self.datacenterId = Int(decoder.decodeInt32ForKey("d", orElse: 0)) + self.photoId = decoder.decodeOptionalInt64ForKey("p") self.sizeSpec = CloudPeerPhotoSizeSpec(rawValue: decoder.decodeInt32ForKey("s", orElse: 0)) ?? .small - self.volumeId = decoder.decodeInt64ForKey("v", orElse: 0) - self.localId = decoder.decodeInt32ForKey("l", orElse: 0) + self.volumeId = decoder.decodeOptionalInt64ForKey("v") + self.localId = decoder.decodeOptionalInt32ForKey("l") } public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(Int32(self.datacenterId), forKey: "d") + if let photoId = self.photoId { + encoder.encodeInt64(photoId, forKey: "p") + } else { + encoder.encodeNil(forKey: "p") + } encoder.encodeInt32(self.sizeSpec.rawValue, forKey: "s") - encoder.encodeInt64(self.volumeId, forKey: "v") - encoder.encodeInt32(self.localId, forKey: "l") + if let volumeId = self.volumeId { + encoder.encodeInt64(volumeId, forKey: "v") + } else { + encoder.encodeNil(forKey: "v") + } + if let localId = self.localId { + encoder.encodeInt32(localId, forKey: "l") + } else { + encoder.encodeNil(forKey: "l") + } } public func isEqual(to: MediaResource) -> Bool { if let to = to as? CloudPeerPhotoSizeMediaResource { - return self.datacenterId == to.datacenterId && self.sizeSpec == to.sizeSpec && self.volumeId == to.volumeId && self.localId == to.localId + return self.datacenterId == to.datacenterId && self.photoId == to.photoId && self.sizeSpec == to.sizeSpec && self.volumeId == to.volumeId && self.localId == to.localId } else { return false } @@ -336,17 +342,23 @@ public final class CloudPeerPhotoSizeMediaResource: TelegramMediaResource { public struct CloudStickerPackThumbnailMediaResourceId: MediaResourceId, Hashable { let datacenterId: Int32 - let volumeId: Int64 - let localId: Int32 + let thumbVersion: Int32? + let volumeId: Int64? + let localId: Int32? - init(datacenterId: Int32, volumeId: Int64, localId: Int32) { + init(datacenterId: Int32, thumbVersion: Int32?, volumeId: Int64?, localId: Int32?) { self.datacenterId = datacenterId + self.thumbVersion = thumbVersion self.volumeId = volumeId self.localId = localId } public var uniqueId: String { - return "telegram-stickerpackthumbnail-\(self.datacenterId)-\(self.volumeId)-\(self.localId)" + if let thumbVersion = self.thumbVersion { + return "telegram-stickerpackthumbnail-\(self.datacenterId)-\(thumbVersion)-\(self.volumeId ?? 0)-\(self.localId ?? 0)" + } else { + return "telegram-stickerpackthumbnail-\(self.datacenterId)-\(self.volumeId ?? 0)-\(self.localId ?? 0)" + } } public func isEqual(to: MediaResourceId) -> Bool { @@ -360,34 +372,50 @@ public struct CloudStickerPackThumbnailMediaResourceId: MediaResourceId, Hashabl public final class CloudStickerPackThumbnailMediaResource: TelegramMediaResource { public let datacenterId: Int - public let volumeId: Int64 - public let localId: Int32 + public let thumbVersion: Int32? + public let volumeId: Int64? + public let localId: Int32? public var id: MediaResourceId { - return CloudStickerPackThumbnailMediaResourceId(datacenterId: Int32(self.datacenterId), volumeId: self.volumeId, localId: self.localId) + return CloudStickerPackThumbnailMediaResourceId(datacenterId: Int32(self.datacenterId), thumbVersion: self.thumbVersion, volumeId: self.volumeId, localId: self.localId) } - public init(datacenterId: Int32, volumeId: Int64, localId: Int32) { + public init(datacenterId: Int32, thumbVersion: Int32?, volumeId: Int64?, localId: Int32?) { self.datacenterId = Int(datacenterId) + self.thumbVersion = thumbVersion self.volumeId = volumeId self.localId = localId } public required init(decoder: PostboxDecoder) { self.datacenterId = Int(decoder.decodeInt32ForKey("d", orElse: 0)) - self.volumeId = decoder.decodeInt64ForKey("v", orElse: 0) - self.localId = decoder.decodeInt32ForKey("l", orElse: 0) + self.thumbVersion = decoder.decodeOptionalInt32ForKey("t") + self.volumeId = decoder.decodeOptionalInt64ForKey("v") + self.localId = decoder.decodeOptionalInt32ForKey("l") } public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(Int32(self.datacenterId), forKey: "d") - encoder.encodeInt64(self.volumeId, forKey: "v") - encoder.encodeInt32(self.localId, forKey: "l") + if let thumbVersion = self.thumbVersion { + encoder.encodeInt32(thumbVersion, forKey: "t") + } else { + encoder.encodeNil(forKey: "t") + } + if let volumeId = self.volumeId { + encoder.encodeInt64(volumeId, forKey: "v") + } else { + encoder.encodeNil(forKey: "v") + } + if let localId = self.localId { + encoder.encodeInt32(localId, forKey: "l") + } else { + encoder.encodeNil(forKey: "l") + } } public func isEqual(to: MediaResource) -> Bool { if let to = to as? CloudStickerPackThumbnailMediaResource { - return self.datacenterId == to.datacenterId && self.volumeId == to.volumeId && self.localId == to.localId + return self.datacenterId == to.datacenterId && self.thumbVersion == to.thumbVersion && self.volumeId == to.volumeId && self.localId == to.localId } else { return false } diff --git a/submodules/SyncCore/Sources/TelegramMediaImage.swift b/submodules/SyncCore/Sources/TelegramMediaImage.swift index 644a023398..11c9c10d8c 100644 --- a/submodules/SyncCore/Sources/TelegramMediaImage.swift +++ b/submodules/SyncCore/Sources/TelegramMediaImage.swift @@ -304,17 +304,20 @@ public final class TelegramMediaImageRepresentation: PostboxCoding, Equatable, C public let dimensions: PixelDimensions public let resource: TelegramMediaResource public let progressiveSizes: [Int32] + public let immediateThumbnailData: Data? - public init(dimensions: PixelDimensions, resource: TelegramMediaResource, progressiveSizes: [Int32]) { + public init(dimensions: PixelDimensions, resource: TelegramMediaResource, progressiveSizes: [Int32], immediateThumbnailData: Data?) { self.dimensions = dimensions self.resource = resource self.progressiveSizes = progressiveSizes + self.immediateThumbnailData = immediateThumbnailData } public init(decoder: PostboxDecoder) { self.dimensions = PixelDimensions(width: decoder.decodeInt32ForKey("dx", orElse: 0), height: decoder.decodeInt32ForKey("dy", orElse: 0)) self.resource = decoder.decodeObjectForKey("r") as? TelegramMediaResource ?? EmptyMediaResource() self.progressiveSizes = decoder.decodeInt32ArrayForKey("ps") + self.immediateThumbnailData = decoder.decodeDataForKey("th") } public func encode(_ encoder: PostboxEncoder) { @@ -322,6 +325,11 @@ public final class TelegramMediaImageRepresentation: PostboxCoding, Equatable, C encoder.encodeInt32(self.dimensions.height, forKey: "dy") encoder.encodeObject(self.resource, forKey: "r") encoder.encodeInt32Array(self.progressiveSizes, forKey: "ps") + if let immediateThumbnailData = self.immediateThumbnailData { + encoder.encodeData(immediateThumbnailData, forKey: "th") + } else { + encoder.encodeNil(forKey: "th") + } } public var description: String { @@ -338,6 +346,9 @@ public final class TelegramMediaImageRepresentation: PostboxCoding, Equatable, C if self.progressiveSizes != other.progressiveSizes { return false } + if self.immediateThumbnailData != other.immediateThumbnailData { + return false + } return true } } diff --git a/submodules/TelegramApi/Sources/Api0.swift b/submodules/TelegramApi/Sources/Api0.swift index b93f07bbaf..60352c724b 100644 --- a/submodules/TelegramApi/Sources/Api0.swift +++ b/submodules/TelegramApi/Sources/Api0.swift @@ -115,7 +115,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[-1705233435] = { return Api.account.PasswordSettings.parse_passwordSettings($0) } dict[-1945767479] = { return Api.help.SupportName.parse_supportName($0) } dict[-288727837] = { return Api.LangPackLanguage.parse_langPackLanguage($0) } - dict[-399391402] = { return Api.VideoSize.parse_videoSize($0) } + dict[-567037804] = { return Api.VideoSize.parse_videoSize($0) } dict[497489295] = { return Api.help.AppUpdate.parse_appUpdate($0) } dict[-1000708810] = { return Api.help.AppUpdate.parse_noAppUpdate($0) } dict[-209337866] = { return Api.LangPackDifference.parse_langPackDifference($0) } @@ -313,10 +313,10 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[-199313886] = { return Api.account.Themes.parse_themesNotModified($0) } dict[2137482273] = { return Api.account.Themes.parse_themes($0) } dict[236446268] = { return Api.PhotoSize.parse_photoSizeEmpty($0) } - dict[2009052699] = { return Api.PhotoSize.parse_photoSize($0) } - dict[-374917894] = { return Api.PhotoSize.parse_photoCachedSize($0) } + dict[1976012384] = { return Api.PhotoSize.parse_photoSize($0) } + dict[35527382] = { return Api.PhotoSize.parse_photoCachedSize($0) } dict[-525288402] = { return Api.PhotoSize.parse_photoStrippedSize($0) } - dict[1520986705] = { return Api.PhotoSize.parse_photoSizeProgressive($0) } + dict[-96535659] = { return Api.PhotoSize.parse_photoSizeProgressive($0) } dict[-668906175] = { return Api.PhotoSize.parse_photoPathSize($0) } dict[-244016606] = { return Api.messages.Stickers.parse_stickersNotModified($0) } dict[-463889475] = { return Api.messages.Stickers.parse_stickers($0) } @@ -328,7 +328,6 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[1881892265] = { return Api.account.WallPapers.parse_wallPapers($0) } dict[1012306921] = { return Api.InputTheme.parse_inputTheme($0) } dict[-175567375] = { return Api.InputTheme.parse_inputThemeSlug($0) } - dict[-1132476723] = { return Api.FileLocation.parse_fileLocationToBeDeprecated($0) } dict[-2032041631] = { return Api.Poll.parse_poll($0) } dict[-1195615476] = { return Api.InputNotifyPeer.parse_inputNotifyPeer($0) } dict[423314455] = { return Api.InputNotifyPeer.parse_inputNotifyUsers($0) } @@ -356,7 +355,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[1262639204] = { return Api.InputBotInlineMessage.parse_inputBotInlineMessageGame($0) } dict[-717976187] = { return Api.InputBotInlineMessage.parse_inputBotInlineMessageMediaInvoice($0) } dict[2002815875] = { return Api.KeyboardButtonRow.parse_keyboardButtonRow($0) } - dict[1088567208] = { return Api.StickerSet.parse_stickerSet($0) } + dict[-673242758] = { return Api.StickerSet.parse_stickerSet($0) } dict[-1111085620] = { return Api.messages.ExportedChatInvites.parse_exportedChatInvites($0) } dict[354925740] = { return Api.SecureSecretSettings.parse_secureSecretSettings($0) } dict[539045032] = { return Api.photos.Photo.parse_photo($0) } @@ -636,7 +635,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[-177732982] = { return Api.BankCardOpenUrl.parse_bankCardOpenUrl($0) } dict[307276766] = { return Api.account.Authorizations.parse_authorizations($0) } dict[935395612] = { return Api.ChatPhoto.parse_chatPhotoEmpty($0) } - dict[-770990276] = { return Api.ChatPhoto.parse_chatPhoto($0) } + dict[476978193] = { return Api.ChatPhoto.parse_chatPhoto($0) } dict[1869903447] = { return Api.PageCaption.parse_pageCaption($0) } dict[-1928649707] = { return Api.payments.PaymentForm.parse_paymentForm($0) } dict[1342771681] = { return Api.payments.PaymentReceipt.parse_paymentReceipt($0) } @@ -667,8 +666,8 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[700340377] = { return Api.InputFileLocation.parse_inputTakeoutFileLocation($0) } dict[1075322878] = { return Api.InputFileLocation.parse_inputPhotoFileLocation($0) } dict[-667654413] = { return Api.InputFileLocation.parse_inputPhotoLegacyFileLocation($0) } - dict[668375447] = { return Api.InputFileLocation.parse_inputPeerPhotoFileLocation($0) } - dict[230353641] = { return Api.InputFileLocation.parse_inputStickerSetThumb($0) } + dict[925204121] = { return Api.InputFileLocation.parse_inputPeerPhotoFileLocation($0) } + dict[-1652231205] = { return Api.InputFileLocation.parse_inputStickerSetThumb($0) } dict[-1146808775] = { return Api.InputFileLocation.parse_inputGroupCallStream($0) } dict[286776671] = { return Api.GeoPoint.parse_geoPointEmpty($0) } dict[-1297942941] = { return Api.GeoPoint.parse_geoPoint($0) } @@ -848,7 +847,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[-1282352120] = { return Api.PageRelatedArticle.parse_pageRelatedArticle($0) } dict[313694676] = { return Api.StickerPack.parse_stickerPack($0) } dict[1326562017] = { return Api.UserProfilePhoto.parse_userProfilePhotoEmpty($0) } - dict[1775479590] = { return Api.UserProfilePhoto.parse_userProfilePhoto($0) } + dict[-2100168954] = { return Api.UserProfilePhoto.parse_userProfilePhoto($0) } dict[-74456004] = { return Api.payments.SavedInfo.parse_savedInfo($0) } dict[1041346555] = { return Api.updates.ChannelDifference.parse_channelDifferenceEmpty($0) } dict[-1531132162] = { return Api.updates.ChannelDifference.parse_channelDifferenceTooLong($0) } @@ -1116,8 +1115,6 @@ public struct Api { _1.serialize(buffer, boxed) case let _1 as Api.InputTheme: _1.serialize(buffer, boxed) - case let _1 as Api.FileLocation: - _1.serialize(buffer, boxed) case let _1 as Api.Poll: _1.serialize(buffer, boxed) case let _1 as Api.InputNotifyPeer: diff --git a/submodules/TelegramApi/Sources/Api2.swift b/submodules/TelegramApi/Sources/Api2.swift index 6df49d59cd..3353e0d55e 100644 --- a/submodules/TelegramApi/Sources/Api2.swift +++ b/submodules/TelegramApi/Sources/Api2.swift @@ -3198,17 +3198,16 @@ public extension Api { } public enum VideoSize: TypeConstructorDescription { - case videoSize(flags: Int32, type: String, location: Api.FileLocation, w: Int32, h: Int32, size: Int32, videoStartTs: Double?) + case videoSize(flags: Int32, type: String, w: Int32, h: Int32, size: Int32, videoStartTs: Double?) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { - case .videoSize(let flags, let type, let location, let w, let h, let size, let videoStartTs): + case .videoSize(let flags, let type, let w, let h, let size, let videoStartTs): if boxed { - buffer.appendInt32(-399391402) + buffer.appendInt32(-567037804) } serializeInt32(flags, buffer: buffer, boxed: false) serializeString(type, buffer: buffer, boxed: false) - location.serialize(buffer, true) serializeInt32(w, buffer: buffer, boxed: false) serializeInt32(h, buffer: buffer, boxed: false) serializeInt32(size, buffer: buffer, boxed: false) @@ -3219,8 +3218,8 @@ public extension Api { public func descriptionFields() -> (String, [(String, Any)]) { switch self { - case .videoSize(let flags, let type, let location, let w, let h, let size, let videoStartTs): - return ("videoSize", [("flags", flags), ("type", type), ("location", location), ("w", w), ("h", h), ("size", size), ("videoStartTs", videoStartTs)]) + case .videoSize(let flags, let type, let w, let h, let size, let videoStartTs): + return ("videoSize", [("flags", flags), ("type", type), ("w", w), ("h", h), ("size", size), ("videoStartTs", videoStartTs)]) } } @@ -3229,27 +3228,22 @@ public extension Api { _1 = reader.readInt32() var _2: String? _2 = parseString(reader) - var _3: Api.FileLocation? - if let signature = reader.readInt32() { - _3 = Api.parse(reader, signature: signature) as? Api.FileLocation - } + var _3: Int32? + _3 = reader.readInt32() var _4: Int32? _4 = reader.readInt32() var _5: Int32? _5 = reader.readInt32() - var _6: Int32? - _6 = reader.readInt32() - var _7: Double? - if Int(_1!) & Int(1 << 0) != 0 {_7 = reader.readDouble() } + var _6: Double? + if Int(_1!) & Int(1 << 0) != 0 {_6 = reader.readDouble() } let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil let _c5 = _5 != nil - let _c6 = _6 != nil - let _c7 = (Int(_1!) & Int(1 << 0) == 0) || _7 != nil - if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 { - return Api.VideoSize.videoSize(flags: _1!, type: _2!, location: _3!, w: _4!, h: _5!, size: _6!, videoStartTs: _7) + let _c6 = (Int(_1!) & Int(1 << 0) == 0) || _6 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 { + return Api.VideoSize.videoSize(flags: _1!, type: _2!, w: _3!, h: _4!, size: _5!, videoStartTs: _6) } else { return nil @@ -8131,10 +8125,10 @@ public extension Api { } public enum PhotoSize: TypeConstructorDescription { case photoSizeEmpty(type: String) - case photoSize(type: String, location: Api.FileLocation, w: Int32, h: Int32, size: Int32) - case photoCachedSize(type: String, location: Api.FileLocation, w: Int32, h: Int32, bytes: Buffer) + case photoSize(type: String, w: Int32, h: Int32, size: Int32) + case photoCachedSize(type: String, w: Int32, h: Int32, bytes: Buffer) case photoStrippedSize(type: String, bytes: Buffer) - case photoSizeProgressive(type: String, location: Api.FileLocation, w: Int32, h: Int32, sizes: [Int32]) + case photoSizeProgressive(type: String, w: Int32, h: Int32, sizes: [Int32]) case photoPathSize(type: String, bytes: Buffer) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { @@ -8145,22 +8139,20 @@ public extension Api { } serializeString(type, buffer: buffer, boxed: false) break - case .photoSize(let type, let location, let w, let h, let size): + case .photoSize(let type, let w, let h, let size): if boxed { - buffer.appendInt32(2009052699) + buffer.appendInt32(1976012384) } serializeString(type, buffer: buffer, boxed: false) - location.serialize(buffer, true) serializeInt32(w, buffer: buffer, boxed: false) serializeInt32(h, buffer: buffer, boxed: false) serializeInt32(size, buffer: buffer, boxed: false) break - case .photoCachedSize(let type, let location, let w, let h, let bytes): + case .photoCachedSize(let type, let w, let h, let bytes): if boxed { - buffer.appendInt32(-374917894) + buffer.appendInt32(35527382) } serializeString(type, buffer: buffer, boxed: false) - location.serialize(buffer, true) serializeInt32(w, buffer: buffer, boxed: false) serializeInt32(h, buffer: buffer, boxed: false) serializeBytes(bytes, buffer: buffer, boxed: false) @@ -8172,12 +8164,11 @@ public extension Api { serializeString(type, buffer: buffer, boxed: false) serializeBytes(bytes, buffer: buffer, boxed: false) break - case .photoSizeProgressive(let type, let location, let w, let h, let sizes): + case .photoSizeProgressive(let type, let w, let h, let sizes): if boxed { - buffer.appendInt32(1520986705) + buffer.appendInt32(-96535659) } serializeString(type, buffer: buffer, boxed: false) - location.serialize(buffer, true) serializeInt32(w, buffer: buffer, boxed: false) serializeInt32(h, buffer: buffer, boxed: false) buffer.appendInt32(481674261) @@ -8200,14 +8191,14 @@ public extension Api { switch self { case .photoSizeEmpty(let type): return ("photoSizeEmpty", [("type", type)]) - case .photoSize(let type, let location, let w, let h, let size): - return ("photoSize", [("type", type), ("location", location), ("w", w), ("h", h), ("size", size)]) - case .photoCachedSize(let type, let location, let w, let h, let bytes): - return ("photoCachedSize", [("type", type), ("location", location), ("w", w), ("h", h), ("bytes", bytes)]) + case .photoSize(let type, let w, let h, let size): + return ("photoSize", [("type", type), ("w", w), ("h", h), ("size", size)]) + case .photoCachedSize(let type, let w, let h, let bytes): + return ("photoCachedSize", [("type", type), ("w", w), ("h", h), ("bytes", bytes)]) case .photoStrippedSize(let type, let bytes): return ("photoStrippedSize", [("type", type), ("bytes", bytes)]) - case .photoSizeProgressive(let type, let location, let w, let h, let sizes): - return ("photoSizeProgressive", [("type", type), ("location", location), ("w", w), ("h", h), ("sizes", sizes)]) + case .photoSizeProgressive(let type, let w, let h, let sizes): + return ("photoSizeProgressive", [("type", type), ("w", w), ("h", h), ("sizes", sizes)]) case .photoPathSize(let type, let bytes): return ("photoPathSize", [("type", type), ("bytes", bytes)]) } @@ -8227,23 +8218,18 @@ public extension Api { public static func parse_photoSize(_ reader: BufferReader) -> PhotoSize? { var _1: String? _1 = parseString(reader) - var _2: Api.FileLocation? - if let signature = reader.readInt32() { - _2 = Api.parse(reader, signature: signature) as? Api.FileLocation - } + var _2: Int32? + _2 = reader.readInt32() var _3: Int32? _3 = reader.readInt32() var _4: Int32? _4 = reader.readInt32() - var _5: Int32? - _5 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil - let _c5 = _5 != nil - if _c1 && _c2 && _c3 && _c4 && _c5 { - return Api.PhotoSize.photoSize(type: _1!, location: _2!, w: _3!, h: _4!, size: _5!) + if _c1 && _c2 && _c3 && _c4 { + return Api.PhotoSize.photoSize(type: _1!, w: _2!, h: _3!, size: _4!) } else { return nil @@ -8252,23 +8238,18 @@ public extension Api { public static func parse_photoCachedSize(_ reader: BufferReader) -> PhotoSize? { var _1: String? _1 = parseString(reader) - var _2: Api.FileLocation? - if let signature = reader.readInt32() { - _2 = Api.parse(reader, signature: signature) as? Api.FileLocation - } + var _2: Int32? + _2 = reader.readInt32() var _3: Int32? _3 = reader.readInt32() - var _4: Int32? - _4 = reader.readInt32() - var _5: Buffer? - _5 = parseBytes(reader) + var _4: Buffer? + _4 = parseBytes(reader) let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil - let _c5 = _5 != nil - if _c1 && _c2 && _c3 && _c4 && _c5 { - return Api.PhotoSize.photoCachedSize(type: _1!, location: _2!, w: _3!, h: _4!, bytes: _5!) + if _c1 && _c2 && _c3 && _c4 { + return Api.PhotoSize.photoCachedSize(type: _1!, w: _2!, h: _3!, bytes: _4!) } else { return nil @@ -8291,25 +8272,20 @@ public extension Api { public static func parse_photoSizeProgressive(_ reader: BufferReader) -> PhotoSize? { var _1: String? _1 = parseString(reader) - var _2: Api.FileLocation? - if let signature = reader.readInt32() { - _2 = Api.parse(reader, signature: signature) as? Api.FileLocation - } + var _2: Int32? + _2 = reader.readInt32() var _3: Int32? _3 = reader.readInt32() - var _4: Int32? - _4 = reader.readInt32() - var _5: [Int32]? + var _4: [Int32]? if let _ = reader.readInt32() { - _5 = Api.parseVector(reader, elementSignature: -1471112230, elementType: Int32.self) + _4 = Api.parseVector(reader, elementSignature: -1471112230, elementType: Int32.self) } let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil - let _c5 = _5 != nil - if _c1 && _c2 && _c3 && _c4 && _c5 { - return Api.PhotoSize.photoSizeProgressive(type: _1!, location: _2!, w: _3!, h: _4!, sizes: _5!) + if _c1 && _c2 && _c3 && _c4 { + return Api.PhotoSize.photoSizeProgressive(type: _1!, w: _2!, h: _3!, sizes: _4!) } else { return nil @@ -8466,44 +8442,6 @@ public extension Api { } } - } - public enum FileLocation: TypeConstructorDescription { - case fileLocationToBeDeprecated(volumeId: Int64, localId: Int32) - - public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { - switch self { - case .fileLocationToBeDeprecated(let volumeId, let localId): - if boxed { - buffer.appendInt32(-1132476723) - } - serializeInt64(volumeId, buffer: buffer, boxed: false) - serializeInt32(localId, buffer: buffer, boxed: false) - break - } - } - - public func descriptionFields() -> (String, [(String, Any)]) { - switch self { - case .fileLocationToBeDeprecated(let volumeId, let localId): - return ("fileLocationToBeDeprecated", [("volumeId", volumeId), ("localId", localId)]) - } - } - - public static func parse_fileLocationToBeDeprecated(_ reader: BufferReader) -> FileLocation? { - var _1: Int64? - _1 = reader.readInt64() - var _2: Int32? - _2 = reader.readInt32() - let _c1 = _1 != nil - let _c2 = _2 != nil - if _c1 && _c2 { - return Api.FileLocation.fileLocationToBeDeprecated(volumeId: _1!, localId: _2!) - } - else { - return nil - } - } - } public enum Poll: TypeConstructorDescription { case poll(id: Int64, flags: Int32, question: String, answers: [Api.PollAnswer], closePeriod: Int32?, closeDate: Int32?) @@ -9428,13 +9366,13 @@ public extension Api { } public enum StickerSet: TypeConstructorDescription { - case stickerSet(flags: Int32, installedDate: Int32?, id: Int64, accessHash: Int64, title: String, shortName: String, thumbs: [Api.PhotoSize]?, thumbDcId: Int32?, count: Int32, hash: Int32) + case stickerSet(flags: Int32, installedDate: Int32?, id: Int64, accessHash: Int64, title: String, shortName: String, thumbs: [Api.PhotoSize]?, thumbDcId: Int32?, thumbVersion: Int32?, count: Int32, hash: Int32) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { - case .stickerSet(let flags, let installedDate, let id, let accessHash, let title, let shortName, let thumbs, let thumbDcId, let count, let hash): + case .stickerSet(let flags, let installedDate, let id, let accessHash, let title, let shortName, let thumbs, let thumbDcId, let thumbVersion, let count, let hash): if boxed { - buffer.appendInt32(1088567208) + buffer.appendInt32(-673242758) } serializeInt32(flags, buffer: buffer, boxed: false) if Int(flags) & Int(1 << 0) != 0 {serializeInt32(installedDate!, buffer: buffer, boxed: false)} @@ -9448,6 +9386,7 @@ public extension Api { item.serialize(buffer, true) }} if Int(flags) & Int(1 << 4) != 0 {serializeInt32(thumbDcId!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 4) != 0 {serializeInt32(thumbVersion!, buffer: buffer, boxed: false)} serializeInt32(count, buffer: buffer, boxed: false) serializeInt32(hash, buffer: buffer, boxed: false) break @@ -9456,8 +9395,8 @@ public extension Api { public func descriptionFields() -> (String, [(String, Any)]) { switch self { - case .stickerSet(let flags, let installedDate, let id, let accessHash, let title, let shortName, let thumbs, let thumbDcId, let count, let hash): - return ("stickerSet", [("flags", flags), ("installedDate", installedDate), ("id", id), ("accessHash", accessHash), ("title", title), ("shortName", shortName), ("thumbs", thumbs), ("thumbDcId", thumbDcId), ("count", count), ("hash", hash)]) + case .stickerSet(let flags, let installedDate, let id, let accessHash, let title, let shortName, let thumbs, let thumbDcId, let thumbVersion, let count, let hash): + return ("stickerSet", [("flags", flags), ("installedDate", installedDate), ("id", id), ("accessHash", accessHash), ("title", title), ("shortName", shortName), ("thumbs", thumbs), ("thumbDcId", thumbDcId), ("thumbVersion", thumbVersion), ("count", count), ("hash", hash)]) } } @@ -9481,9 +9420,11 @@ public extension Api { var _8: Int32? if Int(_1!) & Int(1 << 4) != 0 {_8 = reader.readInt32() } var _9: Int32? - _9 = reader.readInt32() + if Int(_1!) & Int(1 << 4) != 0 {_9 = reader.readInt32() } var _10: Int32? _10 = reader.readInt32() + var _11: Int32? + _11 = reader.readInt32() let _c1 = _1 != nil let _c2 = (Int(_1!) & Int(1 << 0) == 0) || _2 != nil let _c3 = _3 != nil @@ -9492,10 +9433,11 @@ public extension Api { let _c6 = _6 != nil let _c7 = (Int(_1!) & Int(1 << 4) == 0) || _7 != nil let _c8 = (Int(_1!) & Int(1 << 4) == 0) || _8 != nil - let _c9 = _9 != nil + let _c9 = (Int(_1!) & Int(1 << 4) == 0) || _9 != nil let _c10 = _10 != nil - if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 { - return Api.StickerSet.stickerSet(flags: _1!, installedDate: _2, id: _3!, accessHash: _4!, title: _5!, shortName: _6!, thumbs: _7, thumbDcId: _8, count: _9!, hash: _10!) + let _c11 = _11 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 && _c11 { + return Api.StickerSet.stickerSet(flags: _1!, installedDate: _2, id: _3!, accessHash: _4!, title: _5!, shortName: _6!, thumbs: _7, thumbDcId: _8, thumbVersion: _9, count: _10!, hash: _11!) } else { return nil @@ -16395,7 +16337,7 @@ public extension Api { } public enum ChatPhoto: TypeConstructorDescription { case chatPhotoEmpty - case chatPhoto(flags: Int32, photoSmall: Api.FileLocation, photoBig: Api.FileLocation, dcId: Int32) + case chatPhoto(flags: Int32, photoId: Int64, strippedThumb: Buffer?, dcId: Int32) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { @@ -16405,13 +16347,13 @@ public extension Api { } break - case .chatPhoto(let flags, let photoSmall, let photoBig, let dcId): + case .chatPhoto(let flags, let photoId, let strippedThumb, let dcId): if boxed { - buffer.appendInt32(-770990276) + buffer.appendInt32(476978193) } serializeInt32(flags, buffer: buffer, boxed: false) - photoSmall.serialize(buffer, true) - photoBig.serialize(buffer, true) + serializeInt64(photoId, buffer: buffer, boxed: false) + if Int(flags) & Int(1 << 1) != 0 {serializeBytes(strippedThumb!, buffer: buffer, boxed: false)} serializeInt32(dcId, buffer: buffer, boxed: false) break } @@ -16421,8 +16363,8 @@ public extension Api { switch self { case .chatPhotoEmpty: return ("chatPhotoEmpty", []) - case .chatPhoto(let flags, let photoSmall, let photoBig, let dcId): - return ("chatPhoto", [("flags", flags), ("photoSmall", photoSmall), ("photoBig", photoBig), ("dcId", dcId)]) + case .chatPhoto(let flags, let photoId, let strippedThumb, let dcId): + return ("chatPhoto", [("flags", flags), ("photoId", photoId), ("strippedThumb", strippedThumb), ("dcId", dcId)]) } } @@ -16432,22 +16374,18 @@ public extension Api { public static func parse_chatPhoto(_ reader: BufferReader) -> ChatPhoto? { var _1: Int32? _1 = reader.readInt32() - var _2: Api.FileLocation? - if let signature = reader.readInt32() { - _2 = Api.parse(reader, signature: signature) as? Api.FileLocation - } - var _3: Api.FileLocation? - if let signature = reader.readInt32() { - _3 = Api.parse(reader, signature: signature) as? Api.FileLocation - } + var _2: Int64? + _2 = reader.readInt64() + var _3: Buffer? + if Int(_1!) & Int(1 << 1) != 0 {_3 = parseBytes(reader) } var _4: Int32? _4 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil - let _c3 = _3 != nil + let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil let _c4 = _4 != nil if _c1 && _c2 && _c3 && _c4 { - return Api.ChatPhoto.chatPhoto(flags: _1!, photoSmall: _2!, photoBig: _3!, dcId: _4!) + return Api.ChatPhoto.chatPhoto(flags: _1!, photoId: _2!, strippedThumb: _3, dcId: _4!) } else { return nil @@ -17103,8 +17041,8 @@ public extension Api { case inputTakeoutFileLocation case inputPhotoFileLocation(id: Int64, accessHash: Int64, fileReference: Buffer, thumbSize: String) case inputPhotoLegacyFileLocation(id: Int64, accessHash: Int64, fileReference: Buffer, volumeId: Int64, localId: Int32, secret: Int64) - case inputPeerPhotoFileLocation(flags: Int32, peer: Api.InputPeer, volumeId: Int64, localId: Int32) - case inputStickerSetThumb(stickerset: Api.InputStickerSet, volumeId: Int64, localId: Int32) + case inputPeerPhotoFileLocation(flags: Int32, peer: Api.InputPeer, photoId: Int64) + case inputStickerSetThumb(stickerset: Api.InputStickerSet, thumbVersion: Int32) case inputGroupCallStream(call: Api.InputGroupCall, timeMs: Int64, scale: Int32) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { @@ -17167,22 +17105,20 @@ public extension Api { serializeInt32(localId, buffer: buffer, boxed: false) serializeInt64(secret, buffer: buffer, boxed: false) break - case .inputPeerPhotoFileLocation(let flags, let peer, let volumeId, let localId): + case .inputPeerPhotoFileLocation(let flags, let peer, let photoId): if boxed { - buffer.appendInt32(668375447) + buffer.appendInt32(925204121) } serializeInt32(flags, buffer: buffer, boxed: false) peer.serialize(buffer, true) - serializeInt64(volumeId, buffer: buffer, boxed: false) - serializeInt32(localId, buffer: buffer, boxed: false) + serializeInt64(photoId, buffer: buffer, boxed: false) break - case .inputStickerSetThumb(let stickerset, let volumeId, let localId): + case .inputStickerSetThumb(let stickerset, let thumbVersion): if boxed { - buffer.appendInt32(230353641) + buffer.appendInt32(-1652231205) } stickerset.serialize(buffer, true) - serializeInt64(volumeId, buffer: buffer, boxed: false) - serializeInt32(localId, buffer: buffer, boxed: false) + serializeInt32(thumbVersion, buffer: buffer, boxed: false) break case .inputGroupCallStream(let call, let timeMs, let scale): if boxed { @@ -17211,10 +17147,10 @@ public extension Api { return ("inputPhotoFileLocation", [("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("thumbSize", thumbSize)]) case .inputPhotoLegacyFileLocation(let id, let accessHash, let fileReference, let volumeId, let localId, let secret): return ("inputPhotoLegacyFileLocation", [("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("volumeId", volumeId), ("localId", localId), ("secret", secret)]) - case .inputPeerPhotoFileLocation(let flags, let peer, let volumeId, let localId): - return ("inputPeerPhotoFileLocation", [("flags", flags), ("peer", peer), ("volumeId", volumeId), ("localId", localId)]) - case .inputStickerSetThumb(let stickerset, let volumeId, let localId): - return ("inputStickerSetThumb", [("stickerset", stickerset), ("volumeId", volumeId), ("localId", localId)]) + case .inputPeerPhotoFileLocation(let flags, let peer, let photoId): + return ("inputPeerPhotoFileLocation", [("flags", flags), ("peer", peer), ("photoId", photoId)]) + case .inputStickerSetThumb(let stickerset, let thumbVersion): + return ("inputStickerSetThumb", [("stickerset", stickerset), ("thumbVersion", thumbVersion)]) case .inputGroupCallStream(let call, let timeMs, let scale): return ("inputGroupCallStream", [("call", call), ("timeMs", timeMs), ("scale", scale)]) } @@ -17346,14 +17282,11 @@ public extension Api { } var _3: Int64? _3 = reader.readInt64() - var _4: Int32? - _4 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil - let _c4 = _4 != nil - if _c1 && _c2 && _c3 && _c4 { - return Api.InputFileLocation.inputPeerPhotoFileLocation(flags: _1!, peer: _2!, volumeId: _3!, localId: _4!) + if _c1 && _c2 && _c3 { + return Api.InputFileLocation.inputPeerPhotoFileLocation(flags: _1!, peer: _2!, photoId: _3!) } else { return nil @@ -17364,15 +17297,12 @@ public extension Api { if let signature = reader.readInt32() { _1 = Api.parse(reader, signature: signature) as? Api.InputStickerSet } - var _2: Int64? - _2 = reader.readInt64() - var _3: Int32? - _3 = reader.readInt32() + var _2: Int32? + _2 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil - let _c3 = _3 != nil - if _c1 && _c2 && _c3 { - return Api.InputFileLocation.inputStickerSetThumb(stickerset: _1!, volumeId: _2!, localId: _3!) + if _c1 && _c2 { + return Api.InputFileLocation.inputStickerSetThumb(stickerset: _1!, thumbVersion: _2!) } else { return nil @@ -21897,7 +21827,7 @@ public extension Api { } public enum UserProfilePhoto: TypeConstructorDescription { case userProfilePhotoEmpty - case userProfilePhoto(flags: Int32, photoId: Int64, photoSmall: Api.FileLocation, photoBig: Api.FileLocation, dcId: Int32) + case userProfilePhoto(flags: Int32, photoId: Int64, strippedThumb: Buffer?, dcId: Int32) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { @@ -21907,14 +21837,13 @@ public extension Api { } break - case .userProfilePhoto(let flags, let photoId, let photoSmall, let photoBig, let dcId): + case .userProfilePhoto(let flags, let photoId, let strippedThumb, let dcId): if boxed { - buffer.appendInt32(1775479590) + buffer.appendInt32(-2100168954) } serializeInt32(flags, buffer: buffer, boxed: false) serializeInt64(photoId, buffer: buffer, boxed: false) - photoSmall.serialize(buffer, true) - photoBig.serialize(buffer, true) + if Int(flags) & Int(1 << 1) != 0 {serializeBytes(strippedThumb!, buffer: buffer, boxed: false)} serializeInt32(dcId, buffer: buffer, boxed: false) break } @@ -21924,8 +21853,8 @@ public extension Api { switch self { case .userProfilePhotoEmpty: return ("userProfilePhotoEmpty", []) - case .userProfilePhoto(let flags, let photoId, let photoSmall, let photoBig, let dcId): - return ("userProfilePhoto", [("flags", flags), ("photoId", photoId), ("photoSmall", photoSmall), ("photoBig", photoBig), ("dcId", dcId)]) + case .userProfilePhoto(let flags, let photoId, let strippedThumb, let dcId): + return ("userProfilePhoto", [("flags", flags), ("photoId", photoId), ("strippedThumb", strippedThumb), ("dcId", dcId)]) } } @@ -21937,23 +21866,16 @@ public extension Api { _1 = reader.readInt32() var _2: Int64? _2 = reader.readInt64() - var _3: Api.FileLocation? - if let signature = reader.readInt32() { - _3 = Api.parse(reader, signature: signature) as? Api.FileLocation - } - var _4: Api.FileLocation? - if let signature = reader.readInt32() { - _4 = Api.parse(reader, signature: signature) as? Api.FileLocation - } - var _5: Int32? - _5 = reader.readInt32() + var _3: Buffer? + if Int(_1!) & Int(1 << 1) != 0 {_3 = parseBytes(reader) } + var _4: Int32? + _4 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil - let _c3 = _3 != nil + let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil let _c4 = _4 != nil - let _c5 = _5 != nil - if _c1 && _c2 && _c3 && _c4 && _c5 { - return Api.UserProfilePhoto.userProfilePhoto(flags: _1!, photoId: _2!, photoSmall: _3!, photoBig: _4!, dcId: _5!) + if _c1 && _c2 && _c3 && _c4 { + return Api.UserProfilePhoto.userProfilePhoto(flags: _1!, photoId: _2!, strippedThumb: _3, dcId: _4!) } else { return nil diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index d617cb8213..856a3a31dd 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -3740,7 +3740,7 @@ public final class VoiceChatController: ViewController { let resource = LocalFileMediaResource(fileId: arc4random64()) self.call.account.postbox.mediaBox.storeResourceData(resource.id, data: data) - let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: []) + let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: [], immediateThumbnailData: nil) self.currentUpdatingAvatar = representation self.updateAvatarPromise.set(.single((representation, 0.0))) diff --git a/submodules/TelegramCore/Sources/ApiUtils/ApiGroupOrChannel.swift b/submodules/TelegramCore/Sources/ApiUtils/ApiGroupOrChannel.swift index 8f9edce1a6..bb4734b39a 100644 --- a/submodules/TelegramCore/Sources/ApiUtils/ApiGroupOrChannel.swift +++ b/submodules/TelegramCore/Sources/ApiUtils/ApiGroupOrChannel.swift @@ -7,19 +7,15 @@ import SyncCore func imageRepresentationsForApiChatPhoto(_ photo: Api.ChatPhoto) -> [TelegramMediaImageRepresentation] { var representations: [TelegramMediaImageRepresentation] = [] switch photo { - case let .chatPhoto(flags, photoSmall, photoBig, dcId): + case let .chatPhoto(_, photoId, strippedThumb, dcId): let smallResource: TelegramMediaResource let fullSizeResource: TelegramMediaResource - switch photoSmall { - case let .fileLocationToBeDeprecated(volumeId, localId): - smallResource = CloudPeerPhotoSizeMediaResource(datacenterId: dcId, sizeSpec: .small, volumeId: volumeId, localId: localId) - } - switch photoBig { - case let .fileLocationToBeDeprecated(volumeId, localId): - fullSizeResource = CloudPeerPhotoSizeMediaResource(datacenterId: dcId, sizeSpec: .fullSize, volumeId: volumeId, localId: localId) - } - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 80, height: 80), resource: smallResource, progressiveSizes: [])) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: fullSizeResource, progressiveSizes: [])) + + smallResource = CloudPeerPhotoSizeMediaResource(datacenterId: dcId, photoId: photoId, sizeSpec: .small, volumeId: nil, localId: nil) + fullSizeResource = CloudPeerPhotoSizeMediaResource(datacenterId: dcId, photoId: photoId, sizeSpec: .fullSize, volumeId: nil, localId: nil) + + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 80, height: 80), resource: smallResource, progressiveSizes: [], immediateThumbnailData: strippedThumb?.makeData())) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: fullSizeResource, progressiveSizes: [], immediateThumbnailData: strippedThumb?.makeData())) case .chatPhotoEmpty: break } diff --git a/submodules/TelegramCore/Sources/ApiUtils/TelegramMediaFile.swift b/submodules/TelegramCore/Sources/ApiUtils/TelegramMediaFile.swift index d75d737956..02a0afa129 100644 --- a/submodules/TelegramCore/Sources/ApiUtils/TelegramMediaFile.swift +++ b/submodules/TelegramCore/Sources/ApiUtils/TelegramMediaFile.swift @@ -125,24 +125,15 @@ func telegramMediaFileThumbnailRepresentationsFromApiSizes(datacenterId: Int32, var representations: [TelegramMediaImageRepresentation] = [] for size in sizes { switch size { - case let .photoCachedSize(type, location, w, h, _): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudDocumentSizeMediaResource(datacenterId: datacenterId, documentId: documentId, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, fileReference: fileReference) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) - } - case let .photoSize(type, location, w, h, _): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudDocumentSizeMediaResource(datacenterId: datacenterId, documentId: documentId, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, fileReference: fileReference) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) - } - case let .photoSizeProgressive(type, location, w, h, sizes): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudDocumentSizeMediaResource(datacenterId: datacenterId, documentId: documentId, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, fileReference: fileReference) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: sizes)) - } + case let .photoCachedSize(type, w, h, _): + let resource = CloudDocumentSizeMediaResource(datacenterId: datacenterId, documentId: documentId, accessHash: accessHash, sizeSpec: type, fileReference: fileReference) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) + case let .photoSize(type, w, h, _): + let resource = CloudDocumentSizeMediaResource(datacenterId: datacenterId, documentId: documentId, accessHash: accessHash, sizeSpec: type, fileReference: fileReference) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) + case let .photoSizeProgressive(type, w, h, sizes): + let resource = CloudDocumentSizeMediaResource(datacenterId: datacenterId, documentId: documentId, accessHash: accessHash, sizeSpec: type, fileReference: fileReference) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: sizes, immediateThumbnailData: nil)) case let .photoPathSize(_, data): immediateThumbnailData = data.makeData() case let .photoStrippedSize(_, data): @@ -166,12 +157,9 @@ func telegramMediaFileFromApiDocument(_ document: Api.Document) -> TelegramMedia if let videoThumbs = videoThumbs { for thumb in videoThumbs { switch thumb { - case let .videoSize(_, type, location, w, h, _, _): + case let .videoSize(_, type, w, h, _, _): let resource: TelegramMediaResource - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - resource = CloudDocumentSizeMediaResource(datacenterId: dcId, documentId: id, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, fileReference: fileReference.makeData()) - } + resource = CloudDocumentSizeMediaResource(datacenterId: dcId, documentId: id, accessHash: accessHash, sizeSpec: type, fileReference: fileReference.makeData()) videoThumbnails.append(TelegramMediaFile.VideoThumbnail( dimensions: PixelDimensions(width: w, height: h), diff --git a/submodules/TelegramCore/Sources/ApiUtils/TelegramMediaImage.swift b/submodules/TelegramCore/Sources/ApiUtils/TelegramMediaImage.swift index 5dca93ac69..f0bbd3e317 100644 --- a/submodules/TelegramCore/Sources/ApiUtils/TelegramMediaImage.swift +++ b/submodules/TelegramCore/Sources/ApiUtils/TelegramMediaImage.swift @@ -9,25 +9,16 @@ func telegramMediaImageRepresentationsFromApiSizes(datacenterId: Int32, photoId: var representations: [TelegramMediaImageRepresentation] = [] for size in sizes { switch size { - case let .photoCachedSize(type, location, w, h, _): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudPhotoSizeMediaResource(datacenterId: datacenterId, photoId: photoId, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, size: nil, fileReference: fileReference) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) - } - case let .photoSize(type, location, w, h, size): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudPhotoSizeMediaResource(datacenterId: datacenterId, photoId: photoId, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, size: Int(size), fileReference: fileReference) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) - } - case let .photoSizeProgressive(type, location, w, h, sizes): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - if !sizes.isEmpty { - let resource = CloudPhotoSizeMediaResource(datacenterId: datacenterId, photoId: photoId, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, size: Int(sizes[sizes.count - 1]), fileReference: fileReference) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: sizes)) - } + case let .photoCachedSize(type, w, h, _): + let resource = CloudPhotoSizeMediaResource(datacenterId: datacenterId, photoId: photoId, accessHash: accessHash, sizeSpec: type, size: nil, fileReference: fileReference) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) + case let .photoSize(type, w, h, size): + let resource = CloudPhotoSizeMediaResource(datacenterId: datacenterId, photoId: photoId, accessHash: accessHash, sizeSpec: type, size: Int(size), fileReference: fileReference) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) + case let .photoSizeProgressive(type, w, h, sizes): + if !sizes.isEmpty { + let resource = CloudPhotoSizeMediaResource(datacenterId: datacenterId, photoId: photoId, accessHash: accessHash, sizeSpec: type, size: Int(sizes[sizes.count - 1]), fileReference: fileReference) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: sizes, immediateThumbnailData: nil)) } case let .photoStrippedSize(_, data): immediateThumbnailData = data.makeData() @@ -54,12 +45,9 @@ func telegramMediaImageFromApiPhoto(_ photo: Api.Photo) -> TelegramMediaImage? { if let videoSizes = videoSizes { for size in videoSizes { switch size { - case let .videoSize(_, type, location, w, h, size, videoStartTs): + case let .videoSize(_, type, w, h, size, videoStartTs): let resource: TelegramMediaResource - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - resource = CloudPhotoSizeMediaResource(datacenterId: dcId, photoId: id, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, size: Int(size), fileReference: fileReference.makeData()) - } + resource = CloudPhotoSizeMediaResource(datacenterId: dcId, photoId: id, accessHash: accessHash, sizeSpec: type, size: Int(size), fileReference: fileReference.makeData()) videoRepresentations.append(TelegramMediaImage.VideoRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, startTimestamp: videoStartTs)) } diff --git a/submodules/TelegramCore/Sources/ApiUtils/TelegramUser.swift b/submodules/TelegramCore/Sources/ApiUtils/TelegramUser.swift index 673f3a0049..83cbbca4f8 100644 --- a/submodules/TelegramCore/Sources/ApiUtils/TelegramUser.swift +++ b/submodules/TelegramCore/Sources/ApiUtils/TelegramUser.swift @@ -7,21 +7,17 @@ import SyncCore func parsedTelegramProfilePhoto(_ photo: Api.UserProfilePhoto) -> [TelegramMediaImageRepresentation] { var representations: [TelegramMediaImageRepresentation] = [] switch photo { - case let .userProfilePhoto(flags, _, photoSmall, photoBig, dcId): + case let .userProfilePhoto(flags, id, strippedThumb, dcId): let _ = (flags & (1 << 0)) != 0 let smallResource: TelegramMediaResource let fullSizeResource: TelegramMediaResource - switch photoSmall { - case let .fileLocationToBeDeprecated(volumeId, localId): - smallResource = CloudPeerPhotoSizeMediaResource(datacenterId: dcId, sizeSpec: .small, volumeId: volumeId, localId: localId) - } - switch photoBig { - case let .fileLocationToBeDeprecated(volumeId, localId): - fullSizeResource = CloudPeerPhotoSizeMediaResource(datacenterId: dcId, sizeSpec: .fullSize, volumeId: volumeId, localId: localId) - } - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 80, height: 80), resource: smallResource, progressiveSizes: [])) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: fullSizeResource, progressiveSizes: [])) + + smallResource = CloudPeerPhotoSizeMediaResource(datacenterId: dcId, photoId: id, sizeSpec: .small, volumeId: nil, localId: nil) + fullSizeResource = CloudPeerPhotoSizeMediaResource(datacenterId: dcId, photoId: id, sizeSpec: .fullSize, volumeId: nil, localId: nil) + + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 80, height: 80), resource: smallResource, progressiveSizes: [], immediateThumbnailData: strippedThumb?.makeData())) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: fullSizeResource, progressiveSizes: [], immediateThumbnailData: strippedThumb?.makeData())) case .userProfilePhotoEmpty: break } diff --git a/submodules/TelegramCore/Sources/CloudFileMediaResource.swift b/submodules/TelegramCore/Sources/CloudFileMediaResource.swift index 71a2ac6b6a..57dc51dc09 100644 --- a/submodules/TelegramCore/Sources/CloudFileMediaResource.swift +++ b/submodules/TelegramCore/Sources/CloudFileMediaResource.swift @@ -34,7 +34,7 @@ extension CloudDocumentSizeMediaResource: TelegramCloudMediaResource, TelegramMu } } -extension CloudPeerPhotoSizeMediaResource: TelegramMultipartFetchableResource { +extension CloudPeerPhotoSizeMediaResource: TelegramMultipartFetchableResource { func apiInputLocation(peerReference: PeerReference) -> Api.InputFileLocation? { let flags: Int32 switch self.sizeSpec { @@ -43,13 +43,21 @@ extension CloudPeerPhotoSizeMediaResource: TelegramMultipartFetchableResource { case .fullSize: flags = 1 << 0 } - return Api.InputFileLocation.inputPeerPhotoFileLocation(flags: flags, peer: peerReference.inputPeer, volumeId: self.volumeId, localId: self.localId) + if let photoId = self.photoId { + return Api.InputFileLocation.inputPeerPhotoFileLocation(flags: flags, peer: peerReference.inputPeer, photoId: photoId) + } else { + return nil + } } } -extension CloudStickerPackThumbnailMediaResource: TelegramMultipartFetchableResource { +extension CloudStickerPackThumbnailMediaResource: TelegramMultipartFetchableResource { func apiInputLocation(packReference: StickerPackReference) -> Api.InputFileLocation? { - return Api.InputFileLocation.inputStickerSetThumb(stickerset: packReference.apiInputStickerSet, volumeId: self.volumeId, localId: self.localId) + if let thumbVersion = self.thumbVersion { + return Api.InputFileLocation.inputStickerSetThumb(stickerset: packReference.apiInputStickerSet, thumbVersion: thumbVersion) + } else { + return nil + } } } diff --git a/submodules/TelegramCore/Sources/FetchedMediaResource.swift b/submodules/TelegramCore/Sources/FetchedMediaResource.swift index 33f492620e..0adc130a3c 100644 --- a/submodules/TelegramCore/Sources/FetchedMediaResource.swift +++ b/submodules/TelegramCore/Sources/FetchedMediaResource.swift @@ -72,6 +72,11 @@ public func stickerPackFileReference(_ file: TelegramMediaFile) -> FileMediaRefe private func findMediaResource(media: Media, previousMedia: Media?, resource: MediaResource) -> TelegramMediaResource? { if let image = media as? TelegramMediaImage { for representation in image.representations { + if let updatedResource = representation.resource as? CloudPhotoSizeMediaResource, let previousResource = resource as? CloudPhotoSizeMediaResource { + if updatedResource.photoId == previousResource.photoId && updatedResource.sizeSpec == previousResource.sizeSpec { + return representation.resource + } + } if representation.resource.id.isEqual(to: resource.id) { return representation.resource } @@ -81,15 +86,6 @@ private func findMediaResource(media: Media, previousMedia: Media?, resource: Me return representation.resource } } - if let legacyResource = resource as? CloudFileMediaResource { - for representation in image.representations { - if let updatedResource = representation.resource as? CloudPhotoSizeMediaResource { - if updatedResource.localId == legacyResource.localId && updatedResource.volumeId == legacyResource.volumeId { - return representation.resource - } - } - } - } } else if let file = media as? TelegramMediaFile { if file.resource.id.isEqual(to: resource.id) { return file.resource @@ -99,15 +95,6 @@ private func findMediaResource(media: Media, previousMedia: Media?, resource: Me return representation.resource } } - if let legacyResource = resource as? CloudFileMediaResource { - for representation in file.previewRepresentations { - if let updatedResource = representation.resource as? CloudDocumentSizeMediaResource { - if updatedResource.localId == legacyResource.localId && updatedResource.volumeId == legacyResource.volumeId { - return representation.resource - } - } - } - } } } else if let webPage = media as? TelegramMediaWebpage, case let .Loaded(content) = webPage.content { if let image = content.image, let result = findMediaResource(media: image, previousMedia: previousMedia, resource: resource) { @@ -618,19 +605,15 @@ func revalidateMediaResourceReference(postbox: Postbox, network: Network, revali return revalidationContext.peer(postbox: postbox, network: network, background: info.preferBackgroundReferenceRevalidation, peer: peer) |> mapToSignal { updatedPeer -> Signal in for representation in updatedPeer.profileImageRepresentations { + if let updatedResource = representation.resource as? CloudPeerPhotoSizeMediaResource, let previousResource = resource as? CloudPeerPhotoSizeMediaResource { + if updatedResource.sizeSpec == previousResource.sizeSpec { + return .single(RevalidatedMediaResource(updatedResource: representation.resource, updatedReference: nil)) + } + } if representation.resource.id.isEqual(to: resource.id) { return .single(RevalidatedMediaResource(updatedResource: representation.resource, updatedReference: nil)) } } - if let legacyResource = resource as? CloudFileMediaResource { - for representation in updatedPeer.profileImageRepresentations { - if let updatedResource = representation.resource as? CloudPeerPhotoSizeMediaResource { - if updatedResource.localId == legacyResource.localId && updatedResource.volumeId == legacyResource.volumeId { - return .single(RevalidatedMediaResource(updatedResource: updatedResource, updatedReference: nil)) - } - } - } - } return .fail(.generic) } case let .avatarList(peer, _): @@ -693,12 +676,8 @@ func revalidateMediaResourceReference(postbox: Postbox, network: Network, revali if thumbnail.resource.id.isEqual(to: resource.id) { return .single(RevalidatedMediaResource(updatedResource: thumbnail.resource, updatedReference: nil)) } - if let legacyResource = resource as? CloudFileMediaResource { - if let updatedResource = thumbnail.resource as? CloudStickerPackThumbnailMediaResource { - if updatedResource.localId == legacyResource.localId && updatedResource.volumeId == legacyResource.volumeId { - return .single(RevalidatedMediaResource(updatedResource: updatedResource, updatedReference: nil)) - } - } + if let _ = thumbnail.resource as? CloudStickerPackThumbnailMediaResource, let _ = resource as? CloudStickerPackThumbnailMediaResource { + return .single(RevalidatedMediaResource(updatedResource: thumbnail.resource, updatedReference: nil)) } } return .fail(.generic) diff --git a/submodules/TelegramCore/Sources/LoadedStickerPack.swift b/submodules/TelegramCore/Sources/LoadedStickerPack.swift index c793a70259..53eb8104a4 100644 --- a/submodules/TelegramCore/Sources/LoadedStickerPack.swift +++ b/submodules/TelegramCore/Sources/LoadedStickerPack.swift @@ -47,7 +47,7 @@ func updatedRemoteStickerPack(postbox: Postbox, network: Network, reference: Sti case let .stickerSet(set, packs, documents): let namespace: ItemCollectionId.Namespace switch set { - case let .stickerSet(flags, _, _, _, _, _, _, _, _, _): + case let .stickerSet(flags, _, _, _, _, _, _, _, _, _, _): if (flags & (1 << 3)) != 0 { namespace = Namespaces.ItemCollection.CloudMaskPacks } else { diff --git a/submodules/TelegramCore/Sources/MultipartFetch.swift b/submodules/TelegramCore/Sources/MultipartFetch.swift index 3b777d69e1..5a1fe45827 100644 --- a/submodules/TelegramCore/Sources/MultipartFetch.swift +++ b/submodules/TelegramCore/Sources/MultipartFetch.swift @@ -752,10 +752,9 @@ func multipartFetch(postbox: Postbox, network: Network, mediaReferenceRevalidati if let location = resource.apiInputLocation(peerReference: peer) { return .location(location) } else { - return .none + return .revalidate } case .messageAuthorAvatar: - return .revalidate default: return .none @@ -769,7 +768,7 @@ func multipartFetch(postbox: Postbox, network: Network, mediaReferenceRevalidati if let location = resource.apiInputLocation(packReference: stickerPack) { return .location(location) } else { - return .none + return .revalidate } default: return .none diff --git a/submodules/TelegramCore/Sources/OutgoingMessageWithChatContextResult.swift b/submodules/TelegramCore/Sources/OutgoingMessageWithChatContextResult.swift index f72d064c8d..c25e8dfb48 100644 --- a/submodules/TelegramCore/Sources/OutgoingMessageWithChatContextResult.swift +++ b/submodules/TelegramCore/Sources/OutgoingMessageWithChatContextResult.swift @@ -55,7 +55,7 @@ public func outgoingMessageWithChatContextResult(to peerId: PeerId, results: Cha arc4random_buf(&randomId, 8) let thumbnailResource = thumbnail.resource let imageDimensions = thumbnail.dimensions ?? PixelDimensions(width: 128, height: 128) - let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: Namespaces.Media.LocalImage, id: randomId), representations: [TelegramMediaImageRepresentation(dimensions: imageDimensions, resource: thumbnailResource, progressiveSizes: [])], immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) + let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: Namespaces.Media.LocalImage, id: randomId), representations: [TelegramMediaImageRepresentation(dimensions: imageDimensions, resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)], immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) return .message(text: caption, attributes: attributes, mediaReference: .standalone(media: tmpImage), replyToMessageId: nil, localGroupingKey: nil) } else { return .message(text: caption, attributes: attributes, mediaReference: nil, replyToMessageId: nil, localGroupingKey: nil) @@ -71,7 +71,7 @@ public func outgoingMessageWithChatContextResult(to peerId: PeerId, results: Cha if thumbnail.mimeType.hasPrefix("video/") { videoThumbnails.append(TelegramMediaFile.VideoThumbnail(dimensions: thumbnail.dimensions ?? PixelDimensions(width: 128, height: 128), resource: thumbnailResource)) } else { - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: thumbnail.dimensions ?? PixelDimensions(width: 128, height: 128), resource: thumbnailResource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: thumbnail.dimensions ?? PixelDimensions(width: 128, height: 128), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)) } } var fileName = "file" diff --git a/submodules/TelegramCore/Sources/PeerPhotoUpdater.swift b/submodules/TelegramCore/Sources/PeerPhotoUpdater.swift index 14105775e3..a5eb6c5ccf 100644 --- a/submodules/TelegramCore/Sources/PeerPhotoUpdater.swift +++ b/submodules/TelegramCore/Sources/PeerPhotoUpdater.swift @@ -158,16 +158,10 @@ public func updatePeerPhotoInternal(postbox: Postbox, network: Network, stateMan } for size in sizes { switch size { - case let .photoSize(_, location, w, h, _): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudPeerPhotoSizeMediaResource(datacenterId: dcId, sizeSpec: w <= 200 ? .small : .fullSize, volumeId: volumeId, localId: localId), progressiveSizes: [])) - } - case let .photoSizeProgressive(_, location, w, h, sizes): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudPeerPhotoSizeMediaResource(datacenterId: dcId, sizeSpec: w <= 200 ? .small : .fullSize, volumeId: volumeId, localId: localId), progressiveSizes: sizes)) - } + case let .photoSize(_, w, h, _): + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudPeerPhotoSizeMediaResource(datacenterId: dcId, photoId: id, sizeSpec: w <= 200 ? .small : .fullSize, volumeId: nil, localId: nil), progressiveSizes: [], immediateThumbnailData: nil)) + case let .photoSizeProgressive(_, w, h, sizes): + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudPeerPhotoSizeMediaResource(datacenterId: dcId, photoId: id, sizeSpec: w <= 200 ? .small : .fullSize, volumeId: nil, localId: nil), progressiveSizes: sizes, immediateThumbnailData: nil)) default: break } @@ -176,12 +170,9 @@ public func updatePeerPhotoInternal(postbox: Postbox, network: Network, stateMan if let videoSizes = videoSizes { for size in videoSizes { switch size { - case let .videoSize(_, type, location, w, h, size, videoStartTs): + case let .videoSize(_, type, w, h, size, videoStartTs): let resource: TelegramMediaResource - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - resource = CloudPhotoSizeMediaResource(datacenterId: dcId, photoId: id, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, size: Int(size), fileReference: fileReference.makeData()) - } + resource = CloudPhotoSizeMediaResource(datacenterId: dcId, photoId: id, accessHash: accessHash, sizeSpec: type, size: Int(size), fileReference: fileReference.makeData()) videoRepresentations.append(TelegramMediaImage.VideoRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, startTimestamp: videoStartTs)) } diff --git a/submodules/TelegramCore/Sources/ProcessSecretChatIncomingDecryptedOperations.swift b/submodules/TelegramCore/Sources/ProcessSecretChatIncomingDecryptedOperations.swift index 7c1230bbbc..4bd4507122 100644 --- a/submodules/TelegramCore/Sources/ProcessSecretChatIncomingDecryptedOperations.swift +++ b/submodules/TelegramCore/Sources/ProcessSecretChatIncomingDecryptedOperations.swift @@ -712,10 +712,10 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var representations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), progressiveSizes: [], immediateThumbnailData: nil)) let image = TelegramMediaImage(imageId: MediaId(namespace: Namespaces.Media.CloudSecretImage, id: file.id), representations: representations, immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) parsedMedia.append(image) } @@ -738,7 +738,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var previewRepresentations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) @@ -753,7 +753,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var previewRepresentations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) @@ -771,7 +771,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 case let .photoSize(_, location, w, h, size): switch location { case let .fileLocation(dcId, volumeId, localId, secret): - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: size == 0 ? nil : Int(size), fileReference: nil), progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: size == 0 ? nil : Int(size), fileReference: nil), progressiveSizes: [], immediateThumbnailData: nil)) case .fileLocationUnavailable: break } @@ -781,7 +781,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 case let .fileLocation(dcId, volumeId, localId, secret): let resource = CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: bytes.size, fileReference: nil) resources.append((resource, bytes.makeData())) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) case .fileLocationUnavailable: break } @@ -914,10 +914,10 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var representations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), progressiveSizes: [], immediateThumbnailData: nil)) let image = TelegramMediaImage(imageId: MediaId(namespace: Namespaces.Media.CloudSecretImage, id: file.id), representations: representations, immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) parsedMedia.append(image) } @@ -941,7 +941,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var previewRepresentations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) @@ -972,7 +972,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var previewRepresentations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) @@ -990,7 +990,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 case let .photoSize(_, location, w, h, size): switch location { case let .fileLocation(dcId, volumeId, localId, secret): - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: size == 0 ? nil : Int(size), fileReference: nil), progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: size == 0 ? nil : Int(size), fileReference: nil), progressiveSizes: [], immediateThumbnailData: nil)) case .fileLocationUnavailable: break } @@ -1000,7 +1000,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 case let .fileLocation(dcId, volumeId, localId, secret): let resource = CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: bytes.size, fileReference: nil) resources.append((resource, bytes.makeData())) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) case .fileLocationUnavailable: break } @@ -1152,10 +1152,10 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var representations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), progressiveSizes: [], immediateThumbnailData: nil)) let image = TelegramMediaImage(imageId: MediaId(namespace: Namespaces.Media.CloudSecretImage, id: file.id), representations: representations, immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) parsedMedia.append(image) } @@ -1179,7 +1179,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var previewRepresentations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) @@ -1210,7 +1210,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 var previewRepresentations: [TelegramMediaImageRepresentation] = [] if thumb.size != 0 { let resource = LocalFileMediaResource(fileId: arc4random64()) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: thumbW, height: thumbH), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resources.append((resource, thumb.makeData())) } let fileMedia = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.CloudSecretFile, id: file.id), partialReference: nil, resource: file.resource(key: SecretFileEncryptionKey(aesKey: key.makeData(), aesIv: iv.makeData()), decryptedSize: size), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: parsedAttributes) @@ -1228,7 +1228,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 case let .photoSize(_, location, w, h, size): switch location { case let .fileLocation(dcId, volumeId, localId, secret): - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: size == 0 ? nil : Int(size), fileReference: nil), progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: size == 0 ? nil : Int(size), fileReference: nil), progressiveSizes: [], immediateThumbnailData: nil)) case .fileLocationUnavailable: break } @@ -1238,7 +1238,7 @@ private func parseMessage(peerId: PeerId, authorId: PeerId, tagLocalIndex: Int32 case let .fileLocation(dcId, volumeId, localId, secret): let resource = CloudFileMediaResource(datacenterId: Int(dcId), volumeId: volumeId, localId: localId, secret: secret, size: bytes.size, fileReference: nil) resources.append((resource, bytes.makeData())) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) case .fileLocationUnavailable: break } diff --git a/submodules/TelegramCore/Sources/SearchMessages.swift b/submodules/TelegramCore/Sources/SearchMessages.swift index 6e89ef2414..21c73f7386 100644 --- a/submodules/TelegramCore/Sources/SearchMessages.swift +++ b/submodules/TelegramCore/Sources/SearchMessages.swift @@ -721,7 +721,6 @@ public func updatedRemotePeer(postbox: Postbox, network: Network, peer: PeerRefe return updatedPeer } |> mapError { _ -> UpdatedRemotePeerError in - return .generic } } else { return .fail(.generic) @@ -748,7 +747,6 @@ public func updatedRemotePeer(postbox: Postbox, network: Network, peer: PeerRefe return updatedPeer } |> mapError { _ -> UpdatedRemotePeerError in - return .generic } } else { return .fail(.generic) diff --git a/submodules/TelegramCore/Sources/StandaloneUploadedMedia.swift b/submodules/TelegramCore/Sources/StandaloneUploadedMedia.swift index 9ff622d556..2da2482ab3 100644 --- a/submodules/TelegramCore/Sources/StandaloneUploadedMedia.swift +++ b/submodules/TelegramCore/Sources/StandaloneUploadedMedia.swift @@ -102,7 +102,7 @@ public func standaloneUploadedImage(account: Account, peerId: PeerId, text: Stri |> mapToSignal { result -> Signal in switch result { case let .encryptedFile(id, accessHash, size, dcId, _): - return .single(.result(.media(.standalone(media: TelegramMediaImage(imageId: MediaId(namespace: Namespaces.Media.LocalImage, id: arc4random64()), representations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: SecretFileMediaResource(fileId: id, accessHash: accessHash, containerSize: size, decryptedSize: Int32(data.count), datacenterId: Int(dcId), key: key), progressiveSizes: [])], immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []))))) + return .single(.result(.media(.standalone(media: TelegramMediaImage(imageId: MediaId(namespace: Namespaces.Media.LocalImage, id: arc4random64()), representations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: SecretFileMediaResource(fileId: id, accessHash: accessHash, containerSize: size, decryptedSize: Int32(data.count), datacenterId: Int(dcId), key: key), progressiveSizes: [], immediateThumbnailData: nil)], immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []))))) case .encryptedFileEmpty: return .fail(.generic) } diff --git a/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift b/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift index b7cf8a95d8..0180fd7ac5 100644 --- a/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift +++ b/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift @@ -3206,7 +3206,7 @@ func replayFinalState(accountManager: AccountManager, postbox: Postbox, accountP } switch set { - case let .stickerSet(flags, _, _, _, _, _, _, _, _, _): + case let .stickerSet(flags, _, _, _, _, _, _, _, _, _, _): if (flags & (1 << 3)) != 0 { namespace = Namespaces.ItemCollection.CloudMaskPacks } else { diff --git a/submodules/TelegramCore/Sources/State/UpdatesApiUtils.swift b/submodules/TelegramCore/Sources/State/UpdatesApiUtils.swift index e52fe1912b..e32acae449 100644 --- a/submodules/TelegramCore/Sources/State/UpdatesApiUtils.swift +++ b/submodules/TelegramCore/Sources/State/UpdatesApiUtils.swift @@ -9,13 +9,10 @@ private func collectPreCachedResources(for photo: Api.Photo) -> [(MediaResource, case let .photo(_, id, accessHash, fileReference, _, sizes, _, dcId): for size in sizes { switch size { - case let .photoCachedSize(type, location, _, _, bytes): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudPhotoSizeMediaResource(datacenterId: dcId, photoId: id, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, size: nil, fileReference: fileReference.makeData()) - let data = bytes.makeData() - return [(resource, data)] - } + case let .photoCachedSize(type, _, _, bytes): + let resource = CloudPhotoSizeMediaResource(datacenterId: dcId, photoId: id, accessHash: accessHash, sizeSpec: type, size: nil, fileReference: fileReference.makeData()) + let data = bytes.makeData() + return [(resource, data)] default: break } @@ -32,13 +29,10 @@ private func collectPreCachedResources(for document: Api.Document) -> [(MediaRes if let thumbs = thumbs { for thumb in thumbs { switch thumb { - case let .photoCachedSize(type, location, _, _, bytes): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudDocumentSizeMediaResource(datacenterId: dcId, documentId: id, accessHash: accessHash, sizeSpec: type, volumeId: volumeId, localId: localId, fileReference: fileReference.makeData()) - let data = bytes.makeData() - return [(resource, data)] - } + case let .photoCachedSize(type, _, _, bytes): + let resource = CloudDocumentSizeMediaResource(datacenterId: dcId, documentId: id, accessHash: accessHash, sizeSpec: type, fileReference: fileReference.makeData()) + let data = bytes.makeData() + return [(resource, data)] default: break } diff --git a/submodules/TelegramCore/Sources/StickerPack.swift b/submodules/TelegramCore/Sources/StickerPack.swift index bc34bd6e36..921b580e6e 100644 --- a/submodules/TelegramCore/Sources/StickerPack.swift +++ b/submodules/TelegramCore/Sources/StickerPack.swift @@ -5,29 +5,20 @@ import SwiftSignalKit import SyncCore import MtProtoKit -func telegramStickerPackThumbnailRepresentationFromApiSizes(datacenterId: Int32, sizes: [Api.PhotoSize]) -> (immediateThumbnail: Data?, representations: [TelegramMediaImageRepresentation]) { +func telegramStickerPackThumbnailRepresentationFromApiSizes(datacenterId: Int32, thumbVersion: Int32?, sizes: [Api.PhotoSize]) -> (immediateThumbnail: Data?, representations: [TelegramMediaImageRepresentation]) { var immediateThumbnailData: Data? var representations: [TelegramMediaImageRepresentation] = [] for size in sizes { switch size { - case let .photoCachedSize(_, location, w, h, _): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudStickerPackThumbnailMediaResource(datacenterId: datacenterId, volumeId: volumeId, localId: localId) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) - } - case let .photoSize(_, location, w, h, _): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudStickerPackThumbnailMediaResource(datacenterId: datacenterId, volumeId: volumeId, localId: localId) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [])) - } - case let .photoSizeProgressive(_, location, w, h, sizes): - switch location { - case let .fileLocationToBeDeprecated(volumeId, localId): - let resource = CloudStickerPackThumbnailMediaResource(datacenterId: datacenterId, volumeId: volumeId, localId: localId) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: sizes)) - } + case let .photoCachedSize(_, w, h, _): + let resource = CloudStickerPackThumbnailMediaResource(datacenterId: datacenterId, thumbVersion: thumbVersion, volumeId: nil, localId: nil) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) + case let .photoSize(_, w, h, _): + let resource = CloudStickerPackThumbnailMediaResource(datacenterId: datacenterId, thumbVersion: thumbVersion, volumeId: nil, localId: nil) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) + case let .photoSizeProgressive(_, w, h, sizes): + let resource = CloudStickerPackThumbnailMediaResource(datacenterId: datacenterId, thumbVersion: thumbVersion, volumeId: nil, localId: nil) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: w, height: h), resource: resource, progressiveSizes: sizes, immediateThumbnailData: nil)) case let .photoPathSize(_, data): immediateThumbnailData = data.makeData() case .photoStrippedSize: @@ -42,7 +33,7 @@ func telegramStickerPackThumbnailRepresentationFromApiSizes(datacenterId: Int32, extension StickerPackCollectionInfo { convenience init(apiSet: Api.StickerSet, namespace: ItemCollectionId.Namespace) { switch apiSet { - case let .stickerSet(flags, _, id, accessHash, title, shortName, thumbs, thumbDcId, count, nHash): + case let .stickerSet(flags, _, id, accessHash, title, shortName, thumbs, thumbDcId, thumbVersion, count, nHash): var setFlags: StickerPackCollectionInfoFlags = StickerPackCollectionInfoFlags() if (flags & (1 << 2)) != 0 { setFlags.insert(.isOfficial) @@ -57,7 +48,7 @@ extension StickerPackCollectionInfo { var thumbnailRepresentation: TelegramMediaImageRepresentation? var immediateThumbnailData: Data? if let thumbs = thumbs, let thumbDcId = thumbDcId { - let (data, representations) = telegramStickerPackThumbnailRepresentationFromApiSizes(datacenterId: thumbDcId, sizes: thumbs) + let (data, representations) = telegramStickerPackThumbnailRepresentationFromApiSizes(datacenterId: thumbDcId, thumbVersion: thumbVersion, sizes: thumbs) thumbnailRepresentation = representations.first immediateThumbnailData = data } diff --git a/submodules/TelegramCore/Sources/UpdateCachedPeerData.swift b/submodules/TelegramCore/Sources/UpdateCachedPeerData.swift index 2e78d0464f..9e74ccb9ff 100644 --- a/submodules/TelegramCore/Sources/UpdateCachedPeerData.swift +++ b/submodules/TelegramCore/Sources/UpdateCachedPeerData.swift @@ -468,7 +468,7 @@ public func fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPeerId let stickerPack: StickerPackCollectionInfo? = stickerSet.flatMap { apiSet -> StickerPackCollectionInfo in let namespace: ItemCollectionId.Namespace switch apiSet { - case let .stickerSet(flags, _, _, _, _, _, _, _, _, _): + case let .stickerSet(flags, _, _, _, _, _, _, _, _, _, _): if (flags & (1 << 3)) != 0 { namespace = Namespaces.ItemCollection.CloudMaskPacks } else { diff --git a/submodules/TelegramUI/Sources/ChatContextResultPeekContentNode.swift b/submodules/TelegramUI/Sources/ChatContextResultPeekContentNode.swift index 4c2703271f..8d02c2a15b 100644 --- a/submodules/TelegramUI/Sources/ChatContextResultPeekContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatContextResultPeekContentNode.swift @@ -162,7 +162,7 @@ private final class ChatContextResultPeekNode: ASDisplayNode, PeekControllerCont imageDimensions = externalReference.content?.dimensions?.cgSize if let content = externalReference.content, externalReference.type == "gif", let thumbnailResource = imageResource , let dimensions = content.dimensions { - videoFileReference = .standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource, progressiveSizes: [])], videoThumbnails: [], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])])) + videoFileReference = .standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)], videoThumbnails: [], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])])) imageResource = nil } case let .internalReference(internalReference): @@ -224,7 +224,7 @@ private final class ChatContextResultPeekNode: ASDisplayNode, PeekControllerCont if updatedImageResource { if let imageResource = imageResource { - let tmpRepresentation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: Int32(fittedImageDimensions.width * 2.0), height: Int32(fittedImageDimensions.height * 2.0)), resource: imageResource, progressiveSizes: []) + let tmpRepresentation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: Int32(fittedImageDimensions.width * 2.0), height: Int32(fittedImageDimensions.height * 2.0)), resource: imageResource, progressiveSizes: [], immediateThumbnailData: nil) let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: [tmpRepresentation], immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) updateImageSignal = chatMessagePhoto(postbox: self.account.postbox, photoReference: .standalone(media: tmpImage)) } else { diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 920f30c654..6edc11f355 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -8603,7 +8603,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G let mimeType = guessMimeTypeByFileExtension((item.fileName as NSString).pathExtension) var previewRepresentations: [TelegramMediaImageRepresentation] = [] if mimeType.hasPrefix("image/") || mimeType == "application/pdf" { - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 320, height: 320), resource: ICloudFileResource(urlData: item.urlData, thumbnail: true), progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 320, height: 320), resource: ICloudFileResource(urlData: item.urlData, thumbnail: true), progressiveSizes: [], immediateThumbnailData: nil)) } var attributes: [TelegramMediaFileAttribute] = [] attributes.append(.FileName(fileName: item.fileName)) diff --git a/submodules/TelegramUI/Sources/ChatMediaInputStickerPackItem.swift b/submodules/TelegramUI/Sources/ChatMediaInputStickerPackItem.swift index cc1ce57342..dafba8f3f1 100644 --- a/submodules/TelegramUI/Sources/ChatMediaInputStickerPackItem.swift +++ b/submodules/TelegramUI/Sources/ChatMediaInputStickerPackItem.swift @@ -181,7 +181,7 @@ final class ChatMediaInputStickerPackItemNode: ListViewItemNode { thumbnailItem = .animated(item.file.resource) resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: item.file.resource) } else if let dimensions = item.file.dimensions, let resource = chatMessageStickerResource(file: item.file, small: true) as? TelegramMediaResource { - thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource, progressiveSizes: [])) + thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: resource) } } diff --git a/submodules/TelegramUI/Sources/ChatMessageInteractiveMediaNode.swift b/submodules/TelegramUI/Sources/ChatMessageInteractiveMediaNode.swift index a90ad35ff9..fed0355010 100644 --- a/submodules/TelegramUI/Sources/ChatMessageInteractiveMediaNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageInteractiveMediaNode.swift @@ -606,7 +606,7 @@ final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTransitio } else { var representations: [ImageRepresentationWithReference] = file.previewRepresentations.map({ ImageRepresentationWithReference(representation: $0, reference: AnyMediaReference.message(message: MessageReference(message), media: file).resourceReference($0.resource)) }) if file.mimeType == "image/svg+xml" || file.mimeType == "application/x-tgwallpattern" { - representations.append(ImageRepresentationWithReference(representation: .init(dimensions: PixelDimensions(width: 1440, height: 2960), resource: file.resource, progressiveSizes: []), reference: AnyMediaReference.message(message: MessageReference(message), media: file).resourceReference(file.resource))) + representations.append(ImageRepresentationWithReference(representation: .init(dimensions: PixelDimensions(width: 1440, height: 2960), resource: file.resource, progressiveSizes: [], immediateThumbnailData: nil), reference: AnyMediaReference.message(message: MessageReference(message), media: file).resourceReference(file.resource))) } if ["image/png", "image/svg+xml", "application/x-tgwallpattern"].contains(file.mimeType) { return patternWallpaperImage(account: context.account, accountManager: context.sharedContext.accountManager, representations: representations, mode: .thumbnail) diff --git a/submodules/TelegramUI/Sources/CreateChannelController.swift b/submodules/TelegramUI/Sources/CreateChannelController.swift index 903b3c83b9..bc748a8251 100644 --- a/submodules/TelegramUI/Sources/CreateChannelController.swift +++ b/submodules/TelegramUI/Sources/CreateChannelController.swift @@ -328,7 +328,7 @@ public func createChannelController(context: AccountContext) -> ViewController { if let data = image.jpegData(compressionQuality: 0.6) { let resource = LocalFileMediaResource(fileId: arc4random64()) context.account.postbox.mediaBox.storeResourceData(resource.id, data: data) - let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: []) + let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: [], immediateThumbnailData: nil) uploadedAvatar.set(uploadedPeerPhoto(postbox: context.account.postbox, network: context.account.network, resource: resource)) uploadedVideoAvatar = nil updateState { current in @@ -343,7 +343,7 @@ public func createChannelController(context: AccountContext) -> ViewController { if let data = image.jpegData(compressionQuality: 0.6) { let photoResource = LocalFileMediaResource(fileId: arc4random64()) context.account.postbox.mediaBox.storeResourceData(photoResource.id, data: data) - let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: photoResource, progressiveSizes: []) + let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: photoResource, progressiveSizes: [], immediateThumbnailData: nil) updateState { state in var state = state state.avatar = .image(representation, true) diff --git a/submodules/TelegramUI/Sources/CreateGroupController.swift b/submodules/TelegramUI/Sources/CreateGroupController.swift index 91e3620fa6..6acfdbc2e0 100644 --- a/submodules/TelegramUI/Sources/CreateGroupController.swift +++ b/submodules/TelegramUI/Sources/CreateGroupController.swift @@ -575,7 +575,7 @@ public func createGroupControllerImpl(context: AccountContext, peerIds: [PeerId] if let data = image.jpegData(compressionQuality: 0.6) { let resource = LocalFileMediaResource(fileId: arc4random64()) context.account.postbox.mediaBox.storeResourceData(resource.id, data: data) - let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: []) + let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: [], immediateThumbnailData: nil) uploadedAvatar.set(uploadedPeerPhoto(postbox: context.account.postbox, network: context.account.network, resource: resource)) uploadedVideoAvatar = nil updateState { current in @@ -590,7 +590,7 @@ public func createGroupControllerImpl(context: AccountContext, peerIds: [PeerId] if let data = image.jpegData(compressionQuality: 0.6) { let photoResource = LocalFileMediaResource(fileId: arc4random64()) context.account.postbox.mediaBox.storeResourceData(photoResource.id, data: data) - let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: photoResource, progressiveSizes: []) + let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: photoResource, progressiveSizes: [], immediateThumbnailData: nil) updateState { state in var state = state state.avatar = .image(representation, true) diff --git a/submodules/TelegramUI/Sources/GifPaneSearchContentNode.swift b/submodules/TelegramUI/Sources/GifPaneSearchContentNode.swift index 69b9cbf440..91890cc402 100644 --- a/submodules/TelegramUI/Sources/GifPaneSearchContentNode.swift +++ b/submodules/TelegramUI/Sources/GifPaneSearchContentNode.swift @@ -101,7 +101,8 @@ func paneGifSearchForQuery(account: Account, query: String, offset: String?, inc previews.append(TelegramMediaImageRepresentation( dimensions: dimensions, resource: thumbnailResource, - progressiveSizes: [] + progressiveSizes: [], + immediateThumbnailData: nil )) } } diff --git a/submodules/TelegramUI/Sources/HorizontalListContextResultsChatInputPanelItem.swift b/submodules/TelegramUI/Sources/HorizontalListContextResultsChatInputPanelItem.swift index b02346b004..840fa30b8d 100644 --- a/submodules/TelegramUI/Sources/HorizontalListContextResultsChatInputPanelItem.swift +++ b/submodules/TelegramUI/Sources/HorizontalListContextResultsChatInputPanelItem.swift @@ -352,7 +352,7 @@ final class HorizontalListContextResultsChatInputPanelItemNode: ListViewItemNode if let stickerFile = stickerFile { updateImageSignal = chatMessageSticker(account: item.account, file: stickerFile, small: false, fetched: true) } else { - let tmpRepresentation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(CGSize(width: fittedImageDimensions.width * 2.0, height: fittedImageDimensions.height * 2.0)), resource: imageResource, progressiveSizes: []) + let tmpRepresentation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(CGSize(width: fittedImageDimensions.width * 2.0, height: fittedImageDimensions.height * 2.0)), resource: imageResource, progressiveSizes: [], immediateThumbnailData: nil) let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: [tmpRepresentation], immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) updateImageSignal = chatMessagePhoto(postbox: item.account.postbox, photoReference: .standalone(media: tmpImage), synchronousLoad: true) } diff --git a/submodules/TelegramUI/Sources/LegacyInstantVideoController.swift b/submodules/TelegramUI/Sources/LegacyInstantVideoController.swift index 85d02cb3e2..c9cad730e7 100644 --- a/submodules/TelegramUI/Sources/LegacyInstantVideoController.swift +++ b/submodules/TelegramUI/Sources/LegacyInstantVideoController.swift @@ -162,7 +162,7 @@ func legacyInstantVideoController(theme: PresentationTheme, panelFrame: CGRect, let thumbnailImage = TGScaleImageToPixelSize(previewImage, thumbnailSize)! if let thumbnailData = thumbnailImage.jpegData(compressionQuality: 0.4) { context.account.postbox.mediaBox.storeResourceData(resource.id, data: thumbnailData) - previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailSize), resource: resource, progressiveSizes: [])) + previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailSize), resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) } } diff --git a/submodules/TelegramUI/Sources/NotificationContentContext.swift b/submodules/TelegramUI/Sources/NotificationContentContext.swift index 857d83f37d..aa037e1bf0 100644 --- a/submodules/TelegramUI/Sources/NotificationContentContext.swift +++ b/submodules/TelegramUI/Sources/NotificationContentContext.swift @@ -32,26 +32,6 @@ private func setupSharedLogger(rootPath: String, path: String) { } } -private func parseFileLocationResource(_ dict: [AnyHashable: Any]) -> TelegramMediaResource? { - guard let datacenterId = dict["datacenterId"] as? Int32 else { - return nil - } - guard let volumeId = dict["volumeId"] as? Int64 else { - return nil - } - guard let localId = dict["localId"] as? Int32 else { - return nil - } - guard let secret = dict["secret"] as? Int64 else { - return nil - } - var fileReference: Data? - if let fileReferenceString = dict["fileReference"] as? String { - fileReference = dataWithHexString(fileReferenceString) - } - return CloudFileMediaResource(datacenterId: Int(datacenterId), volumeId: volumeId, localId: localId, secret: secret, size: nil, fileReference: fileReference) -} - public struct NotificationViewControllerInitializationData { public let appGroupPath: String public let apiId: Int32 diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index 4df28d89c1..c2b7d1dc83 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -4947,7 +4947,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD let resource = LocalFileMediaResource(fileId: arc4random64()) self.context.account.postbox.mediaBox.storeResourceData(resource.id, data: data) - let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: []) + let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: resource, progressiveSizes: [], immediateThumbnailData: nil) self.state = self.state.withUpdatingAvatar(.image(representation)) if let (layout, navigationHeight) = self.validLayout { @@ -4992,7 +4992,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD let photoResource = LocalFileMediaResource(fileId: arc4random64()) self.context.account.postbox.mediaBox.storeResourceData(photoResource.id, data: data) - let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: photoResource, progressiveSizes: []) + let representation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 640, height: 640), resource: photoResource, progressiveSizes: [], immediateThumbnailData: nil) self.state = self.state.withUpdatingAvatar(.image(representation)) if let (layout, navigationHeight) = self.validLayout { diff --git a/submodules/TelegramUI/Sources/ThemeUpdateManager.swift b/submodules/TelegramUI/Sources/ThemeUpdateManager.swift index 3ac35c77b0..db37c1f418 100644 --- a/submodules/TelegramUI/Sources/ThemeUpdateManager.swift +++ b/submodules/TelegramUI/Sources/ThemeUpdateManager.swift @@ -104,7 +104,7 @@ final class ThemeUpdateManagerImpl: ThemeUpdateManager { |> mapToSignal { wallpaper -> Signal<(PresentationThemeReference, PresentationTheme?), NoError> in if let wallpaper = wallpaper, case let .file(_, _, _, _, _, _, slug, file, _) = wallpaper { var convertedRepresentations: [ImageRepresentationWithReference] = [] - convertedRepresentations.append(ImageRepresentationWithReference(representation: TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 100, height: 100), resource: file.resource, progressiveSizes: []), reference: .wallpaper(wallpaper: .slug(slug), resource: file.resource))) + convertedRepresentations.append(ImageRepresentationWithReference(representation: TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 100, height: 100), resource: file.resource, progressiveSizes: [], immediateThumbnailData: nil), reference: .wallpaper(wallpaper: .slug(slug), resource: file.resource))) return wallpaperDatas(account: account, accountManager: accountManager, fileReference: .standalone(media: file), representations: convertedRepresentations, alwaysShowThumbnailFirst: false, thumbnail: false, onlyFullSize: true, autoFetchFullSize: true, synchronousLoad: false) |> mapToSignal { _, fullSizeData, complete -> Signal<(PresentationThemeReference, PresentationTheme?), NoError> in guard complete, let fullSizeData = fullSizeData else { diff --git a/submodules/TelegramUI/Sources/TransformOutgoingMessageMedia.swift b/submodules/TelegramUI/Sources/TransformOutgoingMessageMedia.swift index 525586e6dc..958ed9eb4b 100644 --- a/submodules/TelegramUI/Sources/TransformOutgoingMessageMedia.swift +++ b/submodules/TelegramUI/Sources/TransformOutgoingMessageMedia.swift @@ -75,7 +75,7 @@ public func transformOutgoingMessageMedia(postbox: Postbox, network: Network, me } } attributes.append(.ImageSize(size: PixelDimensions(imageDimensions))) - let updatedFile = file.withUpdatedSize(data.size).withUpdatedPreviewRepresentations([TelegramMediaImageRepresentation(dimensions: PixelDimensions(scaledImageSize), resource: thumbnailResource, progressiveSizes: [])]).withUpdatedAttributes(attributes) + let updatedFile = file.withUpdatedSize(data.size).withUpdatedPreviewRepresentations([TelegramMediaImageRepresentation(dimensions: PixelDimensions(scaledImageSize), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)]).withUpdatedAttributes(attributes) subscriber.putNext(.standalone(media: updatedFile)) subscriber.putCompletion() } else { @@ -104,7 +104,7 @@ public func transformOutgoingMessageMedia(postbox: Postbox, network: Network, me let scaledImageSize = CGSize(width: scaledImage.size.width * scaledImage.scale, height: scaledImage.size.height * scaledImage.scale) - let updatedFile = file.withUpdatedSize(data.size).withUpdatedPreviewRepresentations([TelegramMediaImageRepresentation(dimensions: PixelDimensions(scaledImageSize), resource: thumbnailResource, progressiveSizes: [])]) + let updatedFile = file.withUpdatedSize(data.size).withUpdatedPreviewRepresentations([TelegramMediaImageRepresentation(dimensions: PixelDimensions(scaledImageSize), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)]) subscriber.putNext(.standalone(media: updatedFile)) subscriber.putCompletion() } else { @@ -160,7 +160,7 @@ public func transformOutgoingMessageMedia(postbox: Postbox, network: Network, me let thumbnailResource = LocalFileMediaResource(fileId: arc4random64()) postbox.mediaBox.storeResourceData(thumbnailResource.id, data: smallestData) - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(smallestSize), resource: thumbnailResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(smallestSize), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)) let updatedImage = TelegramMediaImage(imageId: image.imageId, representations: representations, immediateThumbnailData: image.immediateThumbnailData, reference: image.reference, partialReference: image.partialReference, flags: []) return .single(.standalone(media: updatedImage)) } diff --git a/submodules/TelegramUI/Sources/VerticalListContextResultsChatInputPanelItem.swift b/submodules/TelegramUI/Sources/VerticalListContextResultsChatInputPanelItem.swift index 3a3b06298e..a361ce4861 100644 --- a/submodules/TelegramUI/Sources/VerticalListContextResultsChatInputPanelItem.swift +++ b/submodules/TelegramUI/Sources/VerticalListContextResultsChatInputPanelItem.swift @@ -251,7 +251,7 @@ final class VerticalListContextResultsChatInputPanelItemNode: ListViewItemNode { if let stickerFile = stickerFile { updateIconImageSignal = chatMessageSticker(account: item.account, file: stickerFile, small: false, fetched: true) } else { - let tmpRepresentation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 55, height: 55), resource: imageResource, progressiveSizes: []) + let tmpRepresentation = TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 55, height: 55), resource: imageResource, progressiveSizes: [], immediateThumbnailData: nil) let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: [tmpRepresentation], immediateThumbnailData: nil, reference: nil, partialReference: nil, flags: []) updateIconImageSignal = chatWebpageSnippetPhoto(account: item.account, photoReference: .standalone(media: tmpImage)) } diff --git a/submodules/UndoUI/Sources/UndoOverlayControllerNode.swift b/submodules/UndoUI/Sources/UndoOverlayControllerNode.swift index 453956d61c..698d0f3e33 100644 --- a/submodules/UndoUI/Sources/UndoOverlayControllerNode.swift +++ b/submodules/UndoUI/Sources/UndoOverlayControllerNode.swift @@ -344,7 +344,7 @@ final class UndoOverlayControllerNode: ViewControllerTracingNode { thumbnailItem = .animated(item.file.resource) resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: item.file.resource) } else if let dimensions = item.file.dimensions, let resource = chatMessageStickerResource(file: item.file, small: true) as? TelegramMediaResource { - thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource, progressiveSizes: [])) + thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resourceReference = MediaResourceReference.media(media: .standalone(media: item.file), resource: resource) } } @@ -618,7 +618,7 @@ final class UndoOverlayControllerNode: ViewControllerTracingNode { thumbnailItem = .animated(file.resource) resourceReference = MediaResourceReference.media(media: .standalone(media: file), resource: file.resource) } else if let dimensions = file.dimensions, let resource = chatMessageStickerResource(file: file, small: true) as? TelegramMediaResource { - thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource, progressiveSizes: [])) + thumbnailItem = .still(TelegramMediaImageRepresentation(dimensions: dimensions, resource: resource, progressiveSizes: [], immediateThumbnailData: nil)) resourceReference = MediaResourceReference.media(media: .standalone(media: file), resource: resource) } diff --git a/submodules/WallpaperResources/Sources/WallpaperResources.swift b/submodules/WallpaperResources/Sources/WallpaperResources.swift index d98b166d07..f6ab694f04 100644 --- a/submodules/WallpaperResources/Sources/WallpaperResources.swift +++ b/submodules/WallpaperResources/Sources/WallpaperResources.swift @@ -971,7 +971,7 @@ public func themeImage(account: Account, accountManager: AccountManager, source: |> mapToSignal { wallpaper -> Signal<(PresentationTheme?, UIImage?, Data?), NoError> in if let wallpaper = wallpaper, case let .file(file) = wallpaper.wallpaper { var convertedRepresentations: [ImageRepresentationWithReference] = [] - convertedRepresentations.append(ImageRepresentationWithReference(representation: TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 100, height: 100), resource: file.file.resource, progressiveSizes: []), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) + convertedRepresentations.append(ImageRepresentationWithReference(representation: TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 100, height: 100), resource: file.file.resource, progressiveSizes: [], immediateThumbnailData: nil), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) return wallpaperDatas(account: account, accountManager: accountManager, fileReference: .standalone(media: file.file), representations: convertedRepresentations, alwaysShowThumbnailFirst: false, thumbnail: false, onlyFullSize: true, autoFetchFullSize: true, synchronousLoad: false) |> mapToSignal { _, fullSizeData, complete -> Signal<(PresentationTheme?, UIImage?, Data?), NoError> in guard complete, let fullSizeData = fullSizeData else { @@ -1228,7 +1228,7 @@ public func themeIconImage(account: Account, accountManager: AccountManager, the } var convertedRepresentations: [ImageRepresentationWithReference] = [] - convertedRepresentations.append(ImageRepresentationWithReference(representation: TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 100, height: 100), resource: file.file.resource, progressiveSizes: []), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) + convertedRepresentations.append(ImageRepresentationWithReference(representation: TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 100, height: 100), resource: file.file.resource, progressiveSizes: [], immediateThumbnailData: nil), reference: .wallpaper(wallpaper: .slug(file.slug), resource: file.file.resource))) return wallpaperDatas(account: account, accountManager: accountManager, fileReference: .standalone(media: file.file), representations: convertedRepresentations, alwaysShowThumbnailFirst: false, thumbnail: false, onlyFullSize: true, autoFetchFullSize: true, synchronousLoad: false) |> mapToSignal { _, fullSizeData, complete -> Signal<((UIColor, UIColor?), (UIColor, UIColor), (UIColor, UIColor), UIImage?, Int32?), NoError> in guard complete, let fullSizeData = fullSizeData else { diff --git a/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift b/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift index f30273f4a3..ab3e1d4267 100644 --- a/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift +++ b/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift @@ -261,9 +261,9 @@ func legacyWebSearchItem(account: Account, result: ChatContextResult) -> LegacyW var representations: [TelegramMediaImageRepresentation] = [] if let thumbnailResource = thumbnailResource, let thumbnailDimensions = thumbnailDimensions { - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)) } - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(imageDimensions), resource: imageResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(imageDimensions), resource: imageResource, progressiveSizes: [], immediateThumbnailData: nil)) let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: representations, immediateThumbnailData: immediateThumbnailData, reference: nil, partialReference: nil, flags: []) thumbnailSignal = chatMessagePhotoDatas(postbox: account.postbox, photoReference: .standalone(media: tmpImage), autoFetchFullSize: false) |> mapToSignal { value -> Signal in diff --git a/submodules/WebSearchUI/Sources/WebSearchGalleryController.swift b/submodules/WebSearchUI/Sources/WebSearchGalleryController.swift index 41aaa251b8..8ac722a45e 100644 --- a/submodules/WebSearchUI/Sources/WebSearchGalleryController.swift +++ b/submodules/WebSearchUI/Sources/WebSearchGalleryController.swift @@ -39,7 +39,7 @@ struct WebSearchGalleryEntry: Equatable { switch self.result { case let .externalReference(externalReference): if let content = externalReference.content, externalReference.type == "gif", let thumbnailResource = externalReference.thumbnail?.resource, let dimensions = content.dimensions { - let fileReference = FileMediaReference.standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource, progressiveSizes: [])], videoThumbnails: [], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])])) + let fileReference = FileMediaReference.standalone(media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: content.resource, previewRepresentations: [TelegramMediaImageRepresentation(dimensions: dimensions, resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)], videoThumbnails: [], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: dimensions, flags: [])])) return WebSearchVideoGalleryItem(context: context, presentationData: presentationData, index: self.index, result: self.result, content: NativeVideoContent(id: .contextResult(self.result.queryId, self.result.id), fileReference: fileReference, loopVideo: true, enableSound: false, fetchAutomatically: true), controllerInteraction: controllerInteraction) } case let .internalReference(internalReference): diff --git a/submodules/WebSearchUI/Sources/WebSearchItem.swift b/submodules/WebSearchUI/Sources/WebSearchItem.swift index 519f74677d..cea2a3ec71 100644 --- a/submodules/WebSearchUI/Sources/WebSearchItem.swift +++ b/submodules/WebSearchUI/Sources/WebSearchItem.swift @@ -132,10 +132,10 @@ final class WebSearchItemNode: GridItemNode { var representations: [TelegramMediaImageRepresentation] = [] if let thumbnailResource = thumbnailResource, let thumbnailDimensions = thumbnailDimensions { - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(thumbnailDimensions), resource: thumbnailResource, progressiveSizes: [], immediateThumbnailData: nil)) } if let imageResource = imageResource, let imageDimensions = imageDimensions { - representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(imageDimensions), resource: imageResource, progressiveSizes: [])) + representations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(imageDimensions), resource: imageResource, progressiveSizes: [], immediateThumbnailData: nil)) } if !representations.isEmpty { let tmpImage = TelegramMediaImage(imageId: MediaId(namespace: 0, id: 0), representations: representations, immediateThumbnailData: immediateThumbnailData, reference: nil, partialReference: nil, flags: [])