From 19b146c6adb0678a7a220152bab8b4d975c66f35 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Thu, 2 Dec 2021 21:19:10 +0100 Subject: [PATCH] Close current video (fixes #15) --- Model/Player/PlayerModel.swift | 8 +++++++- Shared/Player/VideoDetails.swift | 11 +++++++++++ tvOS/NowPlayingView.swift | 7 +++++++ tvOS/TVNavigationView.swift | 2 +- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Model/Player/PlayerModel.swift b/Model/Player/PlayerModel.swift index b906867e..28b7309c 100644 --- a/Model/Player/PlayerModel.swift +++ b/Model/Player/PlayerModel.swift @@ -233,7 +233,7 @@ final class PlayerModel: ObservableObject { loadCompositionAsset(stream.videoAsset, stream: stream, type: .video, of: video, preservingTime: preservingTime) } - func loadCompositionAsset( + private func loadCompositionAsset( _ asset: AVURLAsset, stream: Stream, type: AVMediaType, @@ -517,4 +517,10 @@ final class PlayerModel: ObservableObject { return "\(formatter.string(from: NSNumber(value: rate))!)×" } + + func closeCurrentItem() { + addCurrentItemToHistory() + currentItem = nil + player.replaceCurrentItem(with: nil) + } } diff --git a/Shared/Player/VideoDetails.swift b/Shared/Player/VideoDetails.swift index b506f2c9..1d206d7e 100644 --- a/Shared/Player/VideoDetails.swift +++ b/Shared/Player/VideoDetails.swift @@ -133,6 +133,17 @@ struct VideoDetails: View { .onAppear { currentPage = .details } + .contextMenu { + Button { + player.closeCurrentItem() + if !sidebarQueue { + currentPage = .queue + } + } label: { + Label("Close Video", systemImage: "xmark.circle") + } + .disabled(player.currentItem.isNil) + } .font(.title2.bold()) } else { diff --git a/tvOS/NowPlayingView.swift b/tvOS/NowPlayingView.swift index 63e78b26..17d17ecb 100644 --- a/tvOS/NowPlayingView.swift +++ b/tvOS/NowPlayingView.swift @@ -33,6 +33,13 @@ struct NowPlayingView: View { } label: { VideoBanner(video: item.video) } + .contextMenu { + Button("Close Video") { + player.closeCurrentItem() + } + + Button("Cancel", role: .cancel) {} + } } .onPlayPauseCommand(perform: player.togglePlay) } diff --git a/tvOS/TVNavigationView.swift b/tvOS/TVNavigationView.swift index 6b87646a..a6d59b8c 100644 --- a/tvOS/TVNavigationView.swift +++ b/tvOS/TVNavigationView.swift @@ -3,8 +3,8 @@ import SwiftUI struct TVNavigationView: View { @EnvironmentObject private var accounts - @EnvironmentObject private var player @EnvironmentObject private var navigation + @EnvironmentObject private var player @EnvironmentObject private var recents @EnvironmentObject private var search