diff --git a/Mastodon/Diffiable/Section/StatusSection.swift b/Mastodon/Diffiable/Section/StatusSection.swift index b0a4ffbcb..8741ff973 100644 --- a/Mastodon/Diffiable/Section/StatusSection.swift +++ b/Mastodon/Diffiable/Section/StatusSection.swift @@ -379,8 +379,7 @@ extension StatusSection { }() if let videoAttachment = mediaAttachments.filter({ $0.type == .gifv || $0.type == .video }).first, - let videoPlayerViewModel = dependency.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: videoAttachment) - { + let videoPlayerViewModel = dependency.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: videoAttachment) { var parent: UIViewController? var playerViewControllerDelegate: AVPlayerViewControllerDelegate? = nil switch cell { @@ -408,22 +407,11 @@ extension StatusSection { playerViewController.player = videoPlayerViewModel.player playerViewController.showsPlaybackControls = videoPlayerViewModel.videoKind != .gif playerContainerView.setMediaKind(kind: videoPlayerViewModel.videoKind) - if videoPlayerViewModel.videoKind == .gif { + switch videoPlayerViewModel.videoKind { + case .gif: playerContainerView.setMediaIndicator(isHidden: false) - } else { - videoPlayerViewModel.timeControlStatus.sink { timeControlStatus in - UIView.animate(withDuration: 0.33) { - switch timeControlStatus { - case .playing: - playerContainerView.setMediaIndicator(isHidden: true) - case .paused, .waitingToPlayAtSpecifiedRate: - playerContainerView.setMediaIndicator(isHidden: false) - @unknown default: - assertionFailure() - } - } - } - .store(in: &cell.disposeBag) + case .video: + playerContainerView.setMediaIndicator(isHidden: true) } playerContainerView.isHidden = false diff --git a/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift b/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift index 12f822986..3210fadf7 100644 --- a/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift +++ b/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift @@ -9,7 +9,7 @@ import UIKit extension PlayerContainerView { - final class MediaTypeIndicotorView: UIView { + final class MediaTypeIndicatorView: UIView { static let indicatorViewSize = CGSize(width: 47, height: 25) @@ -60,7 +60,7 @@ extension PlayerContainerView { } -extension PlayerContainerView.MediaTypeIndicotorView { +extension PlayerContainerView.MediaTypeIndicatorView { private func _init() { backgroundColor = Asset.Colors.Background.mediaTypeIndicotor.color @@ -87,14 +87,10 @@ extension PlayerContainerView.MediaTypeIndicotorView { switch kind { case .gif: - label.font = PlayerContainerView.MediaTypeIndicotorView.roundedFont(weight: .heavy, fontSize: fontSize) + label.font = PlayerContainerView.MediaTypeIndicatorView.roundedFont(weight: .heavy, fontSize: fontSize) label.text = "GIF" case .video: - let configuration = UIImage.SymbolConfiguration(font: PlayerContainerView.MediaTypeIndicotorView.roundedFont(weight: .regular, fontSize: fontSize)) - let image = UIImage(systemName: "video.fill", withConfiguration: configuration)! - let attachment = NSTextAttachment() - attachment.image = image.withTintColor(.white) - label.attributedText = NSAttributedString(attachment: attachment) + label.text = " " } } @@ -103,12 +99,12 @@ extension PlayerContainerView.MediaTypeIndicotorView { #if canImport(SwiftUI) && DEBUG import SwiftUI -struct PlayerContainerViewMediaTypeIndicotorView_Previews: PreviewProvider { +struct PlayerContainerViewMediaTypeIndicatorView_Previews: PreviewProvider { static var previews: some View { Group { UIViewPreview(width: 47) { - let view = PlayerContainerView.MediaTypeIndicotorView() + let view = PlayerContainerView.MediaTypeIndicatorView() view.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ view.heightAnchor.constraint(equalToConstant: 25), @@ -118,17 +114,6 @@ struct PlayerContainerViewMediaTypeIndicotorView_Previews: PreviewProvider { return view } .previewLayout(.fixed(width: 47, height: 25)) - UIViewPreview(width: 47) { - let view = PlayerContainerView.MediaTypeIndicotorView() - view.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - view.heightAnchor.constraint(equalToConstant: 25), - view.widthAnchor.constraint(equalToConstant: 47), - ]) - view.setMediaKind(kind: .video) - return view - } - .previewLayout(.fixed(width: 47, height: 25)) } } diff --git a/Mastodon/Scene/Share/View/Container/PlayerContainerView.swift b/Mastodon/Scene/Share/View/Container/PlayerContainerView.swift index 32ee48df9..1d33572a2 100644 --- a/Mastodon/Scene/Share/View/Container/PlayerContainerView.swift +++ b/Mastodon/Scene/Share/View/Container/PlayerContainerView.swift @@ -28,8 +28,7 @@ final class PlayerContainerView: UIView { let playerViewController = AVPlayerViewController() - let mediaTypeIndicotorView = MediaTypeIndicotorView() - let mediaTypeIndicotorViewInContentWarningOverlay = MediaTypeIndicotorView() + let mediaTypeIndicatorView = MediaTypeIndicatorView() weak var delegate: PlayerContainerViewDelegate? @@ -66,22 +65,13 @@ extension PlayerContainerView { playerViewController.view.layer.cornerCurve = .continuous // mediaType - mediaTypeIndicotorView.translatesAutoresizingMaskIntoConstraints = false - playerViewController.contentOverlayView!.addSubview(mediaTypeIndicotorView) + mediaTypeIndicatorView.translatesAutoresizingMaskIntoConstraints = false + playerViewController.contentOverlayView!.addSubview(mediaTypeIndicatorView) NSLayoutConstraint.activate([ - mediaTypeIndicotorView.bottomAnchor.constraint(equalTo: playerViewController.contentOverlayView!.bottomAnchor), - mediaTypeIndicotorView.rightAnchor.constraint(equalTo: playerViewController.contentOverlayView!.rightAnchor), - mediaTypeIndicotorView.heightAnchor.constraint(equalToConstant: MediaTypeIndicotorView.indicatorViewSize.height).priority(.required - 1), - mediaTypeIndicotorView.widthAnchor.constraint(equalToConstant: MediaTypeIndicotorView.indicatorViewSize.width).priority(.required - 1), - ]) - - mediaTypeIndicotorViewInContentWarningOverlay.translatesAutoresizingMaskIntoConstraints = false - contentWarningOverlayView.addSubview(mediaTypeIndicotorViewInContentWarningOverlay) - NSLayoutConstraint.activate([ - mediaTypeIndicotorViewInContentWarningOverlay.bottomAnchor.constraint(equalTo: contentWarningOverlayView.bottomAnchor), - mediaTypeIndicotorViewInContentWarningOverlay.rightAnchor.constraint(equalTo: contentWarningOverlayView.rightAnchor), - mediaTypeIndicotorViewInContentWarningOverlay.heightAnchor.constraint(equalToConstant: MediaTypeIndicotorView.indicatorViewSize.height).priority(.required - 1), - mediaTypeIndicotorViewInContentWarningOverlay.widthAnchor.constraint(equalToConstant: MediaTypeIndicotorView.indicatorViewSize.width).priority(.required - 1), + mediaTypeIndicatorView.bottomAnchor.constraint(equalTo: playerViewController.contentOverlayView!.bottomAnchor), + mediaTypeIndicatorView.rightAnchor.constraint(equalTo: playerViewController.contentOverlayView!.rightAnchor), + mediaTypeIndicatorView.heightAnchor.constraint(equalToConstant: MediaTypeIndicatorView.indicatorViewSize.height).priority(.required - 1), + mediaTypeIndicatorView.widthAnchor.constraint(equalToConstant: MediaTypeIndicatorView.indicatorViewSize.width).priority(.required - 1), ]) contentWarningOverlayView.delegate = self @@ -149,19 +139,17 @@ extension PlayerContainerView { contentWarningOverlayView.bottomAnchor.constraint(equalTo: touchBlockingView.bottomAnchor) ]) - bringSubviewToFront(mediaTypeIndicotorView) + bringSubviewToFront(mediaTypeIndicatorView) return playerViewController } func setMediaKind(kind: VideoPlayerViewModel.Kind) { - mediaTypeIndicotorView.setMediaKind(kind: kind) - mediaTypeIndicotorViewInContentWarningOverlay.setMediaKind(kind: kind) + mediaTypeIndicatorView.setMediaKind(kind: kind) } func setMediaIndicator(isHidden: Bool) { - mediaTypeIndicotorView.alpha = isHidden ? 0 : 1 - mediaTypeIndicotorViewInContentWarningOverlay.alpha = isHidden ? 0 : 1 + mediaTypeIndicatorView.alpha = isHidden ? 0 : 1 } }