From 5fe265e2f5577c5221a006dfdcf7fe1e235fec01 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 14 May 2019 11:40:57 -0400 Subject: [PATCH] Always send a link preview for shared sticker packs. --- .../Interactions/OWSLinkPreview.swift | 59 ++++++++----------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/SignalServiceKit/src/Messages/Interactions/OWSLinkPreview.swift b/SignalServiceKit/src/Messages/Interactions/OWSLinkPreview.swift index 6b40af391e..5173aaf3ed 100644 --- a/SignalServiceKit/src/Messages/Interactions/OWSLinkPreview.swift +++ b/SignalServiceKit/src/Messages/Interactions/OWSLinkPreview.swift @@ -892,46 +892,37 @@ public class OWSLinkPreviewManager: NSObject { // tryToDownloadStickerPack will use locally saved data if possible. return StickerManager.tryToDownloadStickerPack(stickerPackInfo: stickerPackInfo) - .then { (stickerPack) -> Promise 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 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) } }