import AVKit
import SwiftUI

/// Plays a clip straight from its reference — proves the bookmark or PHAsset
/// actually resolves to playable video, which is the whole point of the prototype.
struct PlayerSheet: View {
    @EnvironmentObject private var library: SourceLibrary
    @Environment(\.dismiss) private var dismiss
    let clip: SourceClip

    @State private var player: AVPlayer?
    @State private var failed = false

    var body: some View {
        NavigationStack {
            Group {
                if let player {
                    VideoPlayer(player: player)
                        .ignoresSafeArea(edges: .bottom)
                } else if failed {
                    ContentUnavailableView("Can't play clip", systemImage: "exclamationmark.triangle")
                } else {
                    ProgressView()
                }
            }
            .navigationTitle(clip.displayName)
            .navigationBarTitleDisplayMode(.inline)
            .toolbar {
                ToolbarItem(placement: .topBarLeading) {
                    Button("Done") { dismiss() }
                }
            }
            .task {
                if let item = await library.beginPlayback(for: clip) {
                    let newPlayer = AVPlayer(playerItem: item)
                    player = newPlayer
                    newPlayer.play()
                } else {
                    failed = true
                }
            }
            .onDisappear {
                player?.pause()
            }
        }
    }
}
