Refactor context menu

This commit is contained in:
Arkadiusz Fal
2022-12-19 00:09:54 +01:00
parent 441f3c9e80
commit 8ab42322fc
5 changed files with 39 additions and 36 deletions

View File

@@ -4,7 +4,6 @@ import SwiftUI
struct PlayerQueueView: View {
var sidebarQueue: Bool
@Binding var fullScreen: Bool
@FetchRequest(sortDescriptors: [.init(key: "watchedAt", ascending: false)])
var watches: FetchedResults<Watch>
@@ -138,7 +137,7 @@ struct PlayerQueueView: View {
struct PlayerQueueView_Previews: PreviewProvider {
static var previews: some View {
VStack {
PlayerQueueView(sidebarQueue: true, fullScreen: .constant(true))
PlayerQueueView(sidebarQueue: true)
}
.injectFixtureEnvironmentObjects()
}

View File

@@ -394,14 +394,14 @@ struct VideoPlayerView: View {
if !fullScreenPlayer {
#if os(iOS)
if sidebarQueue {
PlayerQueueView(sidebarQueue: true, fullScreen: $fullScreenDetails)
PlayerQueueView(sidebarQueue: true)
.frame(maxWidth: 350)
.background(colorScheme == .dark ? Color.black : Color.white)
.transition(.move(edge: .bottom))
}
#elseif os(macOS)
if Defaults[.playerSidebar] != .never {
PlayerQueueView(sidebarQueue: true, fullScreen: $fullScreenDetails)
PlayerQueueView(sidebarQueue: true)
.frame(width: 350)
.background(colorScheme == .dark ? Color.black : Color.white)
}

View File

@@ -197,22 +197,9 @@ struct WatchNextView: View {
let queueForMoreVideos = player.queue.isEmpty ? [] : player.queue.suffix(from: model.isAutoplaying ? 1 : 0)
if !queueForMoreVideos.isEmpty {
ForEach(queueForMoreVideos) { item in
PlayerQueueRow(item: item)
.contextMenu {
removeButton(item)
removeAllButton()
if let video = item.video {
VideoContextMenuView(video: video)
}
}
#if os(tvOS)
.padding(.horizontal, 30)
#endif
#if !os(tvOS)
Divider()
#endif
ContentItemView(item: .init(video: item.video))
.environment(\.inQueueListing, true)
.environment(\.listingStyle, .list)
}
} else if player.playbackMode != .related && player.playbackMode != .loopOne {
Label(
@@ -239,22 +226,6 @@ struct WatchNextView: View {
}
}
}
private func removeButton(_ item: PlayerQueueItem) -> some View {
Button {
player.remove(item)
} label: {
Label("Remove from the queue", systemImage: "trash")
}
}
private func removeAllButton() -> some View {
Button {
player.removeQueueItems()
} label: {
Label("Clear the queue", systemImage: "trash.fill")
}
}
}
struct WatchNextView_Previews: PreviewProvider {