Telegram-iOS/submodules/TelegramCore/Sources/ApiUtils/TelegramExtendedMedia.swift
Isaac 90737abf6d Refactor constructor use sites for types 240-249 to struct pattern
Types refactored: phoneCallProtocol, phoneConnection, phoneConnectionWebrtc,
photo, photoEmpty, photoCachedSize, photoPathSize, photoSize, photoSizeEmpty,
photoSizeProgressive, photoStrippedSize, poll, pollAnswer, pollAnswerVoters,
pollResults, popularContact, postAddress

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 02:25:52 +08:00

29 lines
1.4 KiB
Swift

import Foundation
import Postbox
import TelegramApi
extension TelegramExtendedMedia {
init?(apiExtendedMedia: Api.MessageExtendedMedia, peerId: PeerId) {
switch apiExtendedMedia {
case let .messageExtendedMediaPreview(messageExtendedMediaPreviewData):
let (width, height, thumb, videoDuration) = (messageExtendedMediaPreviewData.w, messageExtendedMediaPreviewData.h, messageExtendedMediaPreviewData.thumb, messageExtendedMediaPreviewData.videoDuration)
var dimensions: PixelDimensions?
if let width = width, let height = height {
dimensions = PixelDimensions(width: width, height: height)
}
var immediateThumbnailData: Data?
if let thumb = thumb, case let .photoStrippedSize(photoStrippedSizeData) = thumb {
let bytes = photoStrippedSizeData.bytes
immediateThumbnailData = bytes.makeData()
}
self = .preview(dimensions: dimensions, immediateThumbnailData: immediateThumbnailData, videoDuration: videoDuration)
case let .messageExtendedMedia(messageExtendedMediaData):
let apiMedia = messageExtendedMediaData.media
if let media = textMediaAndExpirationTimerFromApiMedia(apiMedia, peerId).media {
self = .full(media: media)
} else {
return nil
}
}
}
}