mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-04 03:40:45 +00:00
FetchedMediaResource: added stickerPackThumbnail revalidation
This commit is contained in:
parent
0dd388a014
commit
2f5870df0a
@ -436,6 +436,7 @@ public enum MediaResourceReference: Equatable {
|
|||||||
case avatar(peer: PeerReference, resource: MediaResource)
|
case avatar(peer: PeerReference, resource: MediaResource)
|
||||||
case messageAuthorAvatar(message: MessageReference, resource: MediaResource)
|
case messageAuthorAvatar(message: MessageReference, resource: MediaResource)
|
||||||
case wallpaper(resource: MediaResource)
|
case wallpaper(resource: MediaResource)
|
||||||
|
case stickerPackThumbnail(stickerPack: StickerPackReference, resource: MediaResource)
|
||||||
|
|
||||||
public var resource: MediaResource {
|
public var resource: MediaResource {
|
||||||
switch self {
|
switch self {
|
||||||
@ -449,6 +450,8 @@ public enum MediaResourceReference: Equatable {
|
|||||||
return resource
|
return resource
|
||||||
case let .wallpaper(resource):
|
case let .wallpaper(resource):
|
||||||
return resource
|
return resource
|
||||||
|
case let .stickerPackThumbnail(_, resource):
|
||||||
|
return resource
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,6 +487,12 @@ public enum MediaResourceReference: Equatable {
|
|||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
case let .stickerPackThumbnail(lhsStickerPack, lhsResource):
|
||||||
|
if case let .stickerPackThumbnail(rhsStickerPack, rhsResource) = rhs, lhsStickerPack == rhsStickerPack, lhsResource.isEqual(to: rhsResource) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -596,13 +605,17 @@ private func findMediaResource(media: Media, resource: MediaResource) -> MediaRe
|
|||||||
|
|
||||||
private func findMediaResourceReference(media: Media, resource: MediaResource) -> Data? {
|
private func findMediaResourceReference(media: Media, resource: MediaResource) -> Data? {
|
||||||
if let foundResource = findMediaResource(media: media, resource: resource) {
|
if let foundResource = findMediaResource(media: media, resource: resource) {
|
||||||
if let foundResource = foundResource as? CloudFileMediaResource {
|
return findResourceReference(in: foundResource, resource: resource)
|
||||||
return foundResource.fileReference
|
} else {
|
||||||
} else if let foundResource = foundResource as? CloudDocumentMediaResource {
|
return nil
|
||||||
return foundResource.fileReference
|
}
|
||||||
} else {
|
}
|
||||||
return nil
|
|
||||||
}
|
private func findResourceReference(in foundResource: MediaResource, resource: MediaResource) -> Data? {
|
||||||
|
if let foundResource = foundResource as? CloudFileMediaResource {
|
||||||
|
return foundResource.fileReference
|
||||||
|
} else if let foundResource = foundResource as? CloudDocumentMediaResource {
|
||||||
|
return foundResource.fileReference
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -1024,6 +1037,18 @@ func revalidateMediaResourceReference(postbox: Postbox, network: Network, revali
|
|||||||
}
|
}
|
||||||
return .fail(.generic)
|
return .fail(.generic)
|
||||||
}
|
}
|
||||||
|
case let .stickerPackThumbnail(packReference, resource):
|
||||||
|
return revalidationContext.stickerPack(postbox: postbox, network: network, background: info.preferBackgroundReferenceRevalidation, stickerPack: packReference)
|
||||||
|
|> mapToSignal { result -> Signal<Data, RevalidateMediaReferenceError> in
|
||||||
|
if let thumbnail = result.0.thumbnail {
|
||||||
|
if thumbnail.resource.id.isEqual(to: resource.id) {
|
||||||
|
if let fileReference = findResourceReference(in: thumbnail.resource, resource: resource) {
|
||||||
|
return .single(fileReference)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return .fail(.generic)
|
||||||
|
}
|
||||||
case .standalone:
|
case .standalone:
|
||||||
return .fail(.generic)
|
return .fail(.generic)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user