From c09f9727f1941fe1d5d78f7bfab5aee2c54ac993 Mon Sep 17 00:00:00 2001 From: Thomas Ricouard Date: Sun, 7 Jan 2024 18:33:13 +0100 Subject: [PATCH] More video tweaks --- .../MediaUI/MediaUIAttachmentVideoView.swift | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/Packages/MediaUI/Sources/MediaUI/MediaUIAttachmentVideoView.swift b/Packages/MediaUI/Sources/MediaUI/MediaUIAttachmentVideoView.swift index ed40c4f2..2d76cb7a 100644 --- a/Packages/MediaUI/Sources/MediaUI/MediaUIAttachmentVideoView.swift +++ b/Packages/MediaUI/Sources/MediaUI/MediaUIAttachmentVideoView.swift @@ -52,6 +52,11 @@ import SwiftUI player?.seek(to: CMTime.zero) player?.play() } + + func resume() { + isPlaying = true + player?.play() + } deinit { NotificationCenter.default.removeObserver(self, name: .AVPlayerItemDidPlayToEndTime, object: nil) @@ -106,19 +111,25 @@ public struct MediaUIAttachmentVideoView: View { try? AVAudioSession.sharedInstance().setCategory(.playback, options: .duckOthers) try? AVAudioSession.sharedInstance().setActive(true) } - if isCompact || !preferences.autoPlayVideo { - viewModel.play() - } viewModel.mute(false) + DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { + if isCompact || !preferences.autoPlayVideo { + viewModel.play() + } else { + viewModel.resume() + } + } } .onDisappear { if isCompact || !preferences.autoPlayVideo { viewModel.pause() } viewModel.mute(preferences.muteVideo) - try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation) - try? AVAudioSession.sharedInstance().setCategory(.ambient, options: .mixWithOthers) - try? AVAudioSession.sharedInstance().setActive(true) + DispatchQueue.global().async { + try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation) + try? AVAudioSession.sharedInstance().setCategory(.ambient, options: .mixWithOthers) + try? AVAudioSession.sharedInstance().setActive(true) + } } } .cornerRadius(4)