feat: show media detail

This commit is contained in:
ryanzhao 2022-08-09 16:00:05 +10:00
parent 402bee2d38
commit 1fa505d1a2
2 changed files with 30 additions and 8 deletions

View File

@ -34,6 +34,7 @@ public class AllMediaViewController: UIViewController, UIPageViewControllerDataS
self.mediaTitleViewController = mediaTitleViewController
self.documentTitleViewController = documentTitleViewController
super.init(nibName: nil, bundle: nil)
self.mediaTitleViewController.delegate = self
self.documentTitleViewController.delegate = self
}
@ -131,4 +132,23 @@ extension AllMediaViewController: DocumentTileViewControllerDelegate {
}
}
// MARK: - DocumentTitleViewControllerDelegate
extension AllMediaViewController: MediaTileViewControllerDelegate {
public func presentdetailViewController(_ detailViewController: UIViewController, animated: Bool) {
self.present(detailViewController, animated: animated)
}
}
// MARK: - MediaPresentationContextProvider
extension AllMediaViewController: MediaPresentationContextProvider {
func mediaPresentationContext(mediaItem: Media, in coordinateSpace: UICoordinateSpace) -> MediaPresentationContext? {
return self.mediaTitleViewController.mediaPresentationContext(mediaItem: mediaItem, in: coordinateSpace)
}
func snapshotOverlayView(in coordinateSpace: UICoordinateSpace) -> (UIView, CGRect)? {
return self.mediaTitleViewController.snapshotOverlayView(in: coordinateSpace)
}
}

View File

@ -17,12 +17,14 @@ public class MediaTileViewController: UIViewController, UICollectionViewDataSour
static let footerBarHeight: CGFloat = 40
static let loadMoreHeaderHeight: CGFloat = 100
private let viewModel: MediaGalleryViewModel
public let viewModel: MediaGalleryViewModel
private var hasLoadedInitialData: Bool = false
private var didFinishInitialLayout: Bool = false
private var isAutoLoadingNextPage: Bool = false
private var currentTargetOffset: CGPoint?
public var delegate: MediaTileViewControllerDelegate?
var isInBatchSelectMode = false {
didSet {
collectionView.allowsMultipleSelection = isInBatchSelectMode
@ -492,12 +494,6 @@ public class MediaTileViewController: UIViewController, UICollectionViewDataSour
// [ConversationSettingsView]
// [ConversationView]
//
guard
let viewControllers: [UIViewController] = self.navigationController?.viewControllers,
viewControllers.count > 1,
viewControllers[viewControllers.count - 2] is OWSConversationSettingsViewController
else { return }
let detailViewController: UIViewController? = MediaGalleryViewModel.createDetailViewController(
for: self.viewModel.threadId,
threadVariant: self.viewModel.threadVariant,
@ -508,7 +504,7 @@ public class MediaTileViewController: UIViewController, UICollectionViewDataSour
guard let detailViewController: UIViewController = detailViewController else { return }
self.present(detailViewController, animated: true)
delegate?.presentdetailViewController(detailViewController, animated: true)
return
}
@ -923,3 +919,9 @@ extension MediaTileViewController: MediaPresentationContextProvider {
return self.navigationController?.navigationBar.generateSnapshot(in: coordinateSpace)
}
}
// MARK: - MediaTileViewControllerDelegate
public protocol MediaTileViewControllerDelegate: AnyObject {
func presentdetailViewController(_ detailViewController: UIViewController, animated: Bool)
}