import Defaults
import SwiftUI

struct RelatedView: View {
    @ObservedObject private var player = PlayerModel.shared

    var body: some View {
        LazyVStack {
            if let related = player.videoForDisplay?.related {
                Section(header: header) {
                    ForEach(related) { video in
                        PlayerQueueRow(item: PlayerQueueItem(video))
                            .listRowBackground(Color.clear)
                            .contextMenu {
                                VideoContextMenuView(video: video)
                            }
                    }

                    Color.clear.padding(.bottom, 50)
                        .listRowBackground(Color.clear)
                    #if os(iOS)
                        .listRowSeparator(.hidden)
                    #endif
                }
            }
        }
        .environment(\.inNavigationView, false)
        #if os(macOS)
            .listStyle(.inset)
        #elseif os(iOS)
            .listStyle(.grouped)
            .backport
            .scrollContentBackground(false)
        #else
            .listStyle(.plain)
        #endif
    }

    var header: some View {
        Text("Related")
        #if !os(macOS)
            .font(.caption)
            .foregroundColor(.secondary)
            .frame(maxWidth: .infinity, alignment: .leading)
        #endif
    }
}

struct RelatedView_Previews: PreviewProvider {
    static var previews: some View {
        RelatedView()
            .injectFixtureEnvironmentObjects()
    }
}