@@ -10,37 +10,11 @@ import Foundation
1010import Photos
1111import TLPhotoPicker
1212
13- class CustomPhotoPickerViewController : TLPhotosPickerViewController , ViewerControllerDataSource {
13+ class CustomPhotoPickerViewController : TLPhotosPickerViewController {
1414 var dismissPhotoPicker : ( ( _ withTLPHAssets: [ TLPHAsset ] ) -> Void ) ?
1515
1616 var viewerController : ViewerController ?
1717
18- func numberOfItemsInViewerController( _: ViewerController ) -> Int {
19- var count = 0
20-
21- for section in 0 ..< collectionView. numberOfSections {
22- count += collectionView. numberOfItems ( inSection: section)
23- }
24-
25- return count
26- }
27-
28- func viewerController( _: ViewerController , viewableAt indexPath: IndexPath ) -> Viewable {
29- let viewable = PreviewItem ( id: UUID ( ) . uuidString)
30-
31- if let cell = collectionView? . cellForItem ( at: indexPath) as? Cell , let placeholder = cell. imageView? . image, let asset = cell. asset {
32- viewable. assetID = asset. localIdentifier
33-
34- if asset. duration > 0 {
35- viewable. type = . video
36- }
37-
38- viewable. placeholder = placeholder
39- }
40-
41- return viewable
42- }
43-
4418 override func viewDidLoad( ) {
4519 super. viewDidLoad ( )
4620 if config. isPreview {
@@ -69,11 +43,11 @@ class CustomPhotoPickerViewController: TLPhotosPickerViewController, ViewerContr
6943 let footerView = PreviewFooterView ( )
7044 footerView. viewDelegate = self
7145
72- self . viewerController? . delegate = self
73-
7446 self . viewerController!. footerView = footerView
7547 }
7648
49+ self . viewerController? . delegate = self
50+
7751 self . present ( self . viewerController!, animated: true , completion: nil )
7852 }
7953 }
@@ -113,6 +87,34 @@ class CustomPhotoPickerViewController: TLPhotosPickerViewController, ViewerContr
11387 }
11488}
11589
90+ extension CustomPhotoPickerViewController : ViewerControllerDataSource {
91+ func numberOfItemsInViewerController( _: ViewerController ) -> Int {
92+ var count = 0
93+
94+ for section in 0 ..< collectionView. numberOfSections {
95+ count += collectionView. numberOfItems ( inSection: section)
96+ }
97+
98+ return count
99+ }
100+
101+ func viewerController( _: ViewerController , viewableAt indexPath: IndexPath ) -> Viewable {
102+ let viewable = PreviewItem ( id: UUID ( ) . uuidString)
103+
104+ if let cell = collectionView? . cellForItem ( at: indexPath) as? Cell , let placeholder = cell. imageView? . image, let asset = cell. asset {
105+ viewable. assetID = asset. localIdentifier
106+
107+ if asset. duration > 0 {
108+ viewable. type = . video
109+ }
110+
111+ viewable. placeholder = placeholder
112+ }
113+
114+ return viewable
115+ }
116+ }
117+
116118extension CustomPhotoPickerViewController : PreviewHeaderViewDelegate {
117119 func headerView( _: PreviewHeaderView , didPressClearButton _: UIButton ) {
118120 self . viewerController? . dismiss ( nil )
@@ -235,11 +237,22 @@ extension CustomPhotoPickerViewController: PreviewFooterViewDelegate {
235237
236238extension CustomPhotoPickerViewController : ViewerControllerDelegate {
237239 func viewerController( _ viewerController: ViewerController , didChangeFocusTo indexPath: IndexPath ) {
238- guard let footerView = viewerController. footerView as? PreviewFooterView else { return }
240+ if indexPath. row == 0 {
241+ let cell = self . collectionView. cellForItem ( at: indexPath) as? TLPhotoCollectionViewCell
242+
243+ if cell? . isCameraCell == true {
244+ viewerController. dismiss ( nil )
245+ return
246+ }
247+ }
248+
249+ guard let footerView = viewerController. footerView as? PreviewFooterView
250+ else { return }
239251
240252 guard let button = footerView. selectButton else { return }
241253
242- guard let cell = self . collectionView. cellForItem ( at: indexPath) as? TLPhotoCollectionViewCell , let localID = cell. asset? . localIdentifier else { return }
254+ guard let cell = self . collectionView. cellForItem ( at: indexPath) as? TLPhotoCollectionViewCell , let localID = cell. asset? . localIdentifier
255+ else { return }
243256
244257 guard let asset = TLPHAsset . asset ( with: localID) else { return }
245258
0 commit comments