diff --git a/Signal/ConversationView/CellViews/ReusableMediaView.swift b/Signal/ConversationView/CellViews/ReusableMediaView.swift index f3351734bd..1a62ed0ad7 100644 --- a/Signal/ConversationView/CellViews/ReusableMediaView.swift +++ b/Signal/ConversationView/CellViews/ReusableMediaView.swift @@ -57,7 +57,13 @@ public class ReusableMediaView { } var isVideo: Bool { - mediaViewAdapter is MediaViewAdapterVideo + if mediaViewAdapter is MediaViewAdapterVideo { + return true + } + if let thumbnail = mediaViewAdapter as? MediaViewAdapterBackupThumbnail { + return thumbnail.isVideo + } + return false } // MARK: - LoadState @@ -407,6 +413,10 @@ class MediaViewAdapterBackupThumbnail: MediaViewAdapter { imageView } + var isVideo: Bool { + attachmentBackupThumbnail.attachment.contentType.isVideo + } + var isLoaded: Bool { imageView.image != nil } diff --git a/Signal/src/ViewControllers/MediaGallery/MediaGallery.swift b/Signal/src/ViewControllers/MediaGallery/MediaGallery.swift index 058b1f3c82..6365ee0a33 100644 --- a/Signal/src/ViewControllers/MediaGallery/MediaGallery.swift +++ b/Signal/src/ViewControllers/MediaGallery/MediaGallery.swift @@ -88,16 +88,21 @@ struct MediaGalleryItem: Equatable, Hashable, MediaGallerySectionItem { var isVideo: Bool { switch referencedAttachment.attachment.contentType { case .video: - // For now, if the video isn't a stream, don't treat it as a video. - if referencedAttachment.asReferencedStream == nil { - return false - } - return renderingFlag != .shouldLoop + return true case .file, .image, .audio: return false } } + var isVideoReadyToPlay: Bool { + switch referencedAttachment.attachment.contentType { + case .video where referencedAttachment.asReferencedStream != nil: + return renderingFlag != .shouldLoop + case .file, .image, .audio, .video: + return false + } + } + var isAnimated: Bool { switch referencedAttachment.attachment.contentType { case .video: diff --git a/Signal/src/ViewControllers/MediaGallery/MediaItemViewController.swift b/Signal/src/ViewControllers/MediaGallery/MediaItemViewController.swift index 71129fe0f2..b651d3d81b 100644 --- a/Signal/src/ViewControllers/MediaGallery/MediaItemViewController.swift +++ b/Signal/src/ViewControllers/MediaGallery/MediaItemViewController.swift @@ -59,8 +59,7 @@ class MediaItemViewController: OWSViewController, VideoPlaybackStatusProvider { } private func configureVideoPlaybackControls() { - guard videoPlayerView != nil else { - owsFailBeta("No videoPlayer") + guard isVideo else { return } diff --git a/Signal/src/ViewControllers/MediaGallery/MediaPageViewController.swift b/Signal/src/ViewControllers/MediaGallery/MediaPageViewController.swift index 33ea60e587..024713c7cc 100644 --- a/Signal/src/ViewControllers/MediaGallery/MediaPageViewController.swift +++ b/Signal/src/ViewControllers/MediaGallery/MediaPageViewController.swift @@ -296,7 +296,7 @@ class MediaPageViewController: UIPageViewController { } let mediaPage = buildGalleryPage(galleryItem: item) - mediaPage.shouldAutoPlayVideo = true + mediaPage.shouldAutoPlayVideo = item.isVideoReadyToPlay setViewControllers([mediaPage], direction: direction, animated: animated) { _ in self.didTransitionToNewPage(animated: animated, direction: direction) }