diff --git a/TelegramUI/LegacyMediaLocations.swift b/TelegramUI/LegacyMediaLocations.swift index a708aec821..18c8ec2f0b 100644 --- a/TelegramUI/LegacyMediaLocations.swift +++ b/TelegramUI/LegacyMediaLocations.swift @@ -3,27 +3,30 @@ import Postbox import TelegramCore public func legacyImageLocationUri(resource: MediaResource) -> String? { - if let resource = resource as? CloudFileMediaResource { - return "\(resource.datacenterId)_\(resource.volumeId)_\(resource.localId)_\(resource.secret)" + if let resource = resource as? CloudPeerPhotoSizeMediaResource { + return resource.id.uniqueId } return nil } -private let legacyImageUriExpr = try? NSRegularExpression(pattern: "([-\\d]+)_([-\\d]+)_([-\\d]+)_([-\\d]+)", options: []) +private let legacyImageUriExpr = try? NSRegularExpression(pattern: "telegram-peer-photo-size-([-\\d]+)-([-\\d]+)-([-\\d]+)-([-\\d]+)", options: []) public func resourceFromLegacyImageUri(_ uri: String) -> MediaResource? { guard let legacyImageUriExpr = legacyImageUriExpr else { return nil } - let matches = legacyImageUriExpr.matches(in: uri, options: [], range: NSRange(location: 0, length: uri.characters.count)) + let matches = legacyImageUriExpr.matches(in: uri, options: [], range: NSRange(location: 0, length: uri.count)) if let match = matches.first { let nsString = uri as NSString let datacenterId = nsString.substring(with: match.range(at: 1)) - let volumeId = nsString.substring(with: match.range(at: 2)) - let localId = nsString.substring(with: match.range(at: 3)) - let secret = nsString.substring(with: match.range(at: 4)) + 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)) - guard let nDatacenterId = Int(datacenterId) else { + guard let nDatacenterId = Int32(datacenterId) else { + return nil + } + guard let nSizeSpec = Int32(size), let sizeSpec = CloudPeerPhotoSizeSpec(rawValue: nSizeSpec) else { return nil } guard let nVolumeId = Int64(volumeId) else { @@ -32,11 +35,8 @@ public func resourceFromLegacyImageUri(_ uri: String) -> MediaResource? { guard let nLocalId = Int32(localId) else { return nil } - guard let nSecret = Int64(secret) else { - return nil - } - return CloudFileMediaResource(datacenterId: nDatacenterId, volumeId: nVolumeId, localId: nLocalId, secret: nSecret, size: nil, fileReference: nil) + return CloudPeerPhotoSizeMediaResource(datacenterId: nDatacenterId, sizeSpec: sizeSpec, volumeId: nVolumeId, localId: nLocalId) } return nil } diff --git a/TelegramUI/LegacyPeerAvatarPlaceholderDataSource.swift b/TelegramUI/LegacyPeerAvatarPlaceholderDataSource.swift index 9dde6438a4..31de2e7a83 100644 --- a/TelegramUI/LegacyPeerAvatarPlaceholderDataSource.swift +++ b/TelegramUI/LegacyPeerAvatarPlaceholderDataSource.swift @@ -49,7 +49,7 @@ final class LegacyPeerAvatarPlaceholderDataSource: TGImageDataSource { if let account = self.account() { let signal: Signal = Signal { subscriber in let args: [AnyHashable : Any] - let argumentsString = String(uri[uri.index(uri.startIndex, offsetBy: "placeholder://?".characters.count)...]) + let argumentsString = String(uri[uri.index(uri.startIndex, offsetBy: "placeholder://?".count)...]) args = TGStringUtils.argumentDictionary(inUrlString: argumentsString)! guard let width = Int((args["w"] as! String)), width > 1 else {