show *most recent* thumbnail in album picker

pull/1/head
Michael Kirk 6 years ago
parent 87d1338412
commit 58eda67a79

@ -159,7 +159,7 @@ class ImagePickerGridController: UICollectionViewController, PhotoLibraryDelegat
collectionView.reloadData()
collectionView.layoutIfNeeded()
let count = photoCollectionContents.count
let count = photoCollectionContents.assetCount
for index in 0..<count {
let asset = photoCollectionContents.asset(at: index)
let assetId = asset.localIdentifier
@ -401,7 +401,7 @@ class ImagePickerGridController: UICollectionViewController, PhotoLibraryDelegat
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return photoCollectionContents.count
return photoCollectionContents.assetCount
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

@ -112,14 +112,15 @@ class PhotoCollectionPickerController: OWSTableViewController, PhotoLibraryDeleg
imageView.autoSetDimensions(to: CGSize(width: kImageSize, height: kImageSize))
let contents = collection.contents()
if contents.count > 0 {
let photoMediaSize = PhotoMediaSize(thumbnailSize: CGSize(width: kImageSize, height: kImageSize))
let assetItem = contents.assetItem(at: 0, photoMediaSize: photoMediaSize)
let photoMediaSize = PhotoMediaSize(thumbnailSize: CGSize(width: kImageSize, height: kImageSize))
if let assetItem = contents.lastAssetItem(photoMediaSize: photoMediaSize) {
imageView.image = assetItem.asyncThumbnail { [weak imageView] image in
guard let strongImageView = imageView else {
return
}
guard let image = image else {
owsFailDebug("image was unexpectedly nil")
return
}
strongImageView.image = image

@ -25,12 +25,12 @@ class PhotoMediaSize {
class PhotoPickerAssetItem: PhotoGridItem {
let asset: PHAsset
let album: PhotoCollectionContents
let photoCollectionContents: PhotoCollectionContents
let photoMediaSize: PhotoMediaSize
init(asset: PHAsset, album: PhotoCollectionContents, photoMediaSize: PhotoMediaSize) {
init(asset: PHAsset, photoCollectionContents: PhotoCollectionContents, photoMediaSize: PhotoMediaSize) {
self.asset = asset
self.album = album
self.photoCollectionContents = photoCollectionContents
self.photoMediaSize = photoMediaSize
}
@ -47,7 +47,7 @@ class PhotoPickerAssetItem: PhotoGridItem {
}
func asyncThumbnail(completion: @escaping (UIImage?) -> Void) -> UIImage? {
album.requestThumbnail(for: self.asset, thumbnailSize: photoMediaSize.thumbnailSize) { image, _ in
photoCollectionContents.requestThumbnail(for: self.asset, thumbnailSize: photoMediaSize.thumbnailSize) { image, _ in
completion(image)
}
return nil
@ -70,19 +70,51 @@ class PhotoCollectionContents {
self.localizedTitle = localizedTitle
}
var count: Int {
private let imageManager = PHCachingImageManager()
// MARK: - Asset Accessors
var assetCount: Int {
return fetchResult.count
}
private let imageManager = PHCachingImageManager()
var lastAsset: PHAsset? {
guard assetCount > 0 else {
return nil
}
return asset(at: assetCount - 1)
}
var firstAsset: PHAsset? {
guard assetCount > 0 else {
return nil
}
return asset(at: 0)
}
func asset(at index: Int) -> PHAsset {
return fetchResult.object(at: index)
}
// MARK: - AssetItem Accessors
func assetItem(at index: Int, photoMediaSize: PhotoMediaSize) -> PhotoPickerAssetItem {
let mediaAsset = asset(at: index)
return PhotoPickerAssetItem(asset: mediaAsset, album: self, photoMediaSize: photoMediaSize)
return PhotoPickerAssetItem(asset: mediaAsset, photoCollectionContents: self, photoMediaSize: photoMediaSize)
}
func firstAssetItem(photoMediaSize: PhotoMediaSize) -> PhotoPickerAssetItem? {
guard let mediaAsset = firstAsset else {
return nil
}
return PhotoPickerAssetItem(asset: mediaAsset, photoCollectionContents: self, photoMediaSize: photoMediaSize)
}
func lastAssetItem(photoMediaSize: PhotoMediaSize) -> PhotoPickerAssetItem? {
guard let mediaAsset = lastAsset else {
return nil
}
return PhotoPickerAssetItem(asset: mediaAsset, photoCollectionContents: self, photoMediaSize: photoMediaSize)
}
// MARK: ImageManager
@ -242,7 +274,7 @@ class PhotoLibrary: NSObject, PHPhotoLibraryChangeObserver {
}
let photoCollection = PhotoCollection(collection: assetCollection)
// Hide empty collections.
guard photoCollection.contents().count > 0 else {
guard photoCollection.contents().assetCount > 0 else {
return
}
collections.append(photoCollection)

Loading…
Cancel
Save