mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-08 08:31:13 +00:00
Fixed legacy avatar loading
This commit is contained in:
parent
7d2836789e
commit
935b095c20
@ -3,27 +3,30 @@ import Postbox
|
|||||||
import TelegramCore
|
import TelegramCore
|
||||||
|
|
||||||
public func legacyImageLocationUri(resource: MediaResource) -> String? {
|
public func legacyImageLocationUri(resource: MediaResource) -> String? {
|
||||||
if let resource = resource as? CloudFileMediaResource {
|
if let resource = resource as? CloudPeerPhotoSizeMediaResource {
|
||||||
return "\(resource.datacenterId)_\(resource.volumeId)_\(resource.localId)_\(resource.secret)"
|
return resource.id.uniqueId
|
||||||
}
|
}
|
||||||
return nil
|
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? {
|
public func resourceFromLegacyImageUri(_ uri: String) -> MediaResource? {
|
||||||
guard let legacyImageUriExpr = legacyImageUriExpr else {
|
guard let legacyImageUriExpr = legacyImageUriExpr else {
|
||||||
return nil
|
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 {
|
if let match = matches.first {
|
||||||
let nsString = uri as NSString
|
let nsString = uri as NSString
|
||||||
let datacenterId = nsString.substring(with: match.range(at: 1))
|
let datacenterId = nsString.substring(with: match.range(at: 1))
|
||||||
let volumeId = nsString.substring(with: match.range(at: 2))
|
let size = nsString.substring(with: match.range(at: 2))
|
||||||
let localId = nsString.substring(with: match.range(at: 3))
|
let volumeId = nsString.substring(with: match.range(at: 3))
|
||||||
let secret = nsString.substring(with: match.range(at: 4))
|
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
|
return nil
|
||||||
}
|
}
|
||||||
guard let nVolumeId = Int64(volumeId) else {
|
guard let nVolumeId = Int64(volumeId) else {
|
||||||
@ -32,11 +35,8 @@ public func resourceFromLegacyImageUri(_ uri: String) -> MediaResource? {
|
|||||||
guard let nLocalId = Int32(localId) else {
|
guard let nLocalId = Int32(localId) else {
|
||||||
return nil
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ final class LegacyPeerAvatarPlaceholderDataSource: TGImageDataSource {
|
|||||||
if let account = self.account() {
|
if let account = self.account() {
|
||||||
let signal: Signal<Never, NoError> = Signal { subscriber in
|
let signal: Signal<Never, NoError> = Signal { subscriber in
|
||||||
let args: [AnyHashable : Any]
|
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)!
|
args = TGStringUtils.argumentDictionary(inUrlString: argumentsString)!
|
||||||
|
|
||||||
guard let width = Int((args["w"] as! String)), width > 1 else {
|
guard let width = Int((args["w"] as! String)), width > 1 else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user