diff --git a/Signal/src/Signal-Bridging-Header.h b/Signal/src/Signal-Bridging-Header.h index b4b688d3e..40826b8e3 100644 --- a/Signal/src/Signal-Bridging-Header.h +++ b/Signal/src/Signal-Bridging-Header.h @@ -109,3 +109,4 @@ #import #import #import +#import diff --git a/Signal/src/ViewControllers/GifPicker/GifPickerCell.swift b/Signal/src/ViewControllers/GifPicker/GifPickerCell.swift index 8b9d6c479..22e63a9ba 100644 --- a/Signal/src/ViewControllers/GifPicker/GifPickerCell.swift +++ b/Signal/src/ViewControllers/GifPicker/GifPickerCell.swift @@ -27,31 +27,18 @@ class GifPickerCell: UICollectionViewCell { var assetRequest: GiphyAssetRequest? var asset: GiphyAsset? + var imageView: YYAnimatedImageView? // MARK: Initializers @available(*, unavailable, message:"use other constructor instead.") required init?(coder aDecoder: NSCoder) { -// self.searchBar = UISearchBar() -// self.layout = GifPickerLayout() -// self.collectionView = UICollectionView(frame:CGRect.zero, collectionViewLayout:self.layout) -// // self.attachment = SignalAttachment.empty() super.init(coder: aDecoder) owsFail("\(self.TAG) invalid constructor") } override init(frame: CGRect) { -// self.searchBar = UISearchBar() -// self.layout = GifPickerLayout() -// self.collectionView = UICollectionView(frame:CGRect.zero, collectionViewLayout:self.layout) -// // assert(!attachment.hasError) -// // self.attachment = attachment -// // self.successCompletion = successCompletion super.init(frame: frame) - - self.backgroundColor = UIColor.white - // TODO: - self.backgroundColor = UIColor.red } override func prepareForReuse() { @@ -62,9 +49,8 @@ class GifPickerCell: UICollectionViewCell { asset = nil assetRequest?.cancel() assetRequest = nil - - // TODO: - self.backgroundColor = UIColor.red + imageView?.removeFromSuperview() + imageView = nil } private func clearAssetRequest() { @@ -96,12 +82,28 @@ class GifPickerCell: UICollectionViewCell { guard let strongSelf = self else { return } strongSelf.clearAssetRequest() strongSelf.asset = asset - // TODO: - strongSelf.backgroundColor = UIColor.blue + strongSelf.tryToDisplayAsset() }, failure: { [weak self] in guard let strongSelf = self else { return } strongSelf.clearAssetRequest() }) } + + private func tryToDisplayAsset() { + guard let asset = asset else { + owsFail("\(TAG) missing asset.") + return + } + guard let image = YYImage(contentsOfFile:asset.filePath) else { + owsFail("\(TAG) could not load asset.") + return + } + let imageView = YYAnimatedImageView() + self.imageView = imageView + imageView.image = image + self.contentView.addSubview(imageView) + imageView.autoPinWidthToSuperview() + imageView.autoPinHeightToSuperview() + } } diff --git a/Signal/src/network/GifManager.swift b/Signal/src/network/GifManager.swift index 1d3995090..b13d26adc 100644 --- a/Signal/src/network/GifManager.swift +++ b/Signal/src/network/GifManager.swift @@ -415,10 +415,7 @@ extension URLSessionTask { // MARK: Rendition Download -// private static let serialQueue = DispatchQueue(label: "org.signal.gif.download") - // TODO: Use a proper cache. - // TODO: Write to cache. private var assetMap = [NSURL: GiphyAsset]() // TODO: We could use a proper queue. private var assetRequestQueue = [GiphyAssetRequest]() @@ -461,7 +458,6 @@ extension URLSessionTask { AssertIsOnMainThread() DispatchQueue.main.async { -// GifManager.serialQueue.async { guard !self.isDownloading else { return }