From 1fa505d1a24d75c25dbddf995db4b86264739d76 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Tue, 9 Aug 2022 16:00:05 +1000 Subject: [PATCH] feat: show media detail --- .../AllMediaViewController.swift | 20 +++++++++++++++++++ .../MediaTileViewController.swift | 18 +++++++++-------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/Session/Media Viewing & Editing/AllMediaViewController.swift b/Session/Media Viewing & Editing/AllMediaViewController.swift index aa7b7a072..e91e51af8 100644 --- a/Session/Media Viewing & Editing/AllMediaViewController.swift +++ b/Session/Media Viewing & Editing/AllMediaViewController.swift @@ -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) + } +} diff --git a/Session/Media Viewing & Editing/MediaTileViewController.swift b/Session/Media Viewing & Editing/MediaTileViewController.swift index 1085b574a..aa1770062 100644 --- a/Session/Media Viewing & Editing/MediaTileViewController.swift +++ b/Session/Media Viewing & Editing/MediaTileViewController.swift @@ -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) +}