Always send a link preview for shared sticker packs.

This commit is contained in:
Matthew Chen 2019-05-14 11:40:57 -04:00
parent 562289a55a
commit 5fe265e2f5

View File

@ -892,46 +892,37 @@ public class OWSLinkPreviewManager: NSObject {
// tryToDownloadStickerPack will use locally saved data if possible.
return StickerManager.tryToDownloadStickerPack(stickerPackInfo: stickerPackInfo)
.then { (stickerPack) -> Promise<OWSLinkPreviewDraft> in
let coverInfo = stickerPack.coverInfo
// tryToDownloadSticker will use locally saved data if possible.
return StickerManager.tryToDownloadSticker(stickerPack: stickerPack, stickerInfo: coverInfo).map(on: DispatchQueue.global()) { (coverData) -> OWSLinkPreviewDraft in
return OWSLinkPreviewManager.linkPreviewDraft(forStickerPack: stickerPack,
coverData: coverData)
}
}
}
.then { (stickerPack) -> Promise<OWSLinkPreviewDraft> in
let coverInfo = stickerPack.coverInfo
// tryToDownloadSticker will use locally saved data if possible.
return StickerManager.tryToDownloadSticker(stickerPack: stickerPack, stickerInfo: coverInfo).map(on: DispatchQueue.global()) { (coverData) -> OWSLinkPreviewDraft in
// Try to build thumbnail from cover webp.
var jpegImageData: Data?
if let stillImage = (coverData as NSData).stillForWebpData() {
var stillThumbnail = stillImage
let maxImageSize: CGFloat = 1024
let imageSize = stillImage.size
let shouldResize = imageSize.width > maxImageSize || imageSize.height > maxImageSize
if shouldResize {
if let resizedImage = stillImage.resized(withMaxDimensionPoints: maxImageSize) {
stillThumbnail = resizedImage
} else {
owsFailDebug("Could not resize image.")
}
}
public class func linkPreviewDraft(forStickerPack stickerPack: StickerPack,
coverData: Data) -> OWSLinkPreviewDraft {
let url = stickerPack.info.shareUrl()
// Try to build thumbnail from cover webp.
var jpegImageData: Data?
if let stillImage = (coverData as NSData).stillForWebpData() {
var stillThumbnail = stillImage
let maxImageSize: CGFloat = 1024
let imageSize = stillImage.size
let shouldResize = imageSize.width > maxImageSize || imageSize.height > maxImageSize
if shouldResize {
if let resizedImage = stillImage.resized(withMaxDimensionPoints: maxImageSize) {
stillThumbnail = resizedImage
if let stillData = stillThumbnail.jpegData(compressionQuality: 0.85) {
jpegImageData = stillData
} else {
owsFailDebug("Could not encode as JPEG.")
}
} else {
owsFailDebug("Could not resize image.")
owsFailDebug("Could not extract still.")
}
}
if let stillData = stillThumbnail.jpegData(compressionQuality: 0.85) {
jpegImageData = stillData
} else {
owsFailDebug("Could not encode as JPEG.")
return OWSLinkPreviewDraft(urlString: url.absoluteString, title: stickerPack.title, jpegImageData: jpegImageData)
}
} else {
owsFailDebug("Could not extract still.")
}
return OWSLinkPreviewDraft(urlString: url, title: stickerPack.title, jpegImageData: jpegImageData)
}
}