import SwiftUI
import AVKit

struct SimpleVideoPlayerView: View {
    @Binding var isPresented: Bool
    @State private var player: AVPlayer?
    
    var body: some View {
        ZStack {
            // Black background
            Color.black
                .ignoresSafeArea()
            
            // Video player
            if let player = player {
                VideoPlayer(player: player)
                    .ignoresSafeArea()
            }
            
            // Close button overlay
            VStack {
                HStack {
                    Button(action: {
                        isPresented = false
                    }) {
                        Image("Icon/close")
                            .resizable()
                            .renderingMode(.template)
                            .foregroundColor(.white)
                            .frame(width: 20, height: 20)
                    }
                    .frame(width: 40, height: 40)
                    .background(Color.black.opacity(0.5))
                    .clipShape(Circle())
                    
                    Spacer()
                }
                .padding(.horizontal, 20)
                .padding(.top, 20)
                
                Spacer()
            }
        }
        .onAppear {
            setupPlayer()
        }
        .onDisappear {
            player?.pause()
            player = nil
        }
    }
    
    private func setupPlayer() {
        guard let videoURL = getSunoHookEditedURL() else {
            print("❌ Could not find sunohook_edited video")
            return
        }
        
        let playerItem = AVPlayerItem(url: videoURL)
        let newPlayer = AVPlayer(playerItem: playerItem)
        
        // Auto-play
        newPlayer.play()
        self.player = newPlayer
        
        print("✅ Started playing sunohook_edited video")
    }
    
    private func getSunoHookEditedURL() -> URL? {
        // Try as data asset first
        if let asset = NSDataAsset(name: "sunohook_edited") {
            let tempURL = FileManager.default.temporaryDirectory.appendingPathComponent("sunohook_edited.mov")
            do {
                // Remove existing temp file if it exists
                if FileManager.default.fileExists(atPath: tempURL.path) {
                    try FileManager.default.removeItem(at: tempURL)
                }
                try asset.data.write(to: tempURL)
                return tempURL
            } catch {
                print("❌ Failed to write sunohook_edited data asset: \(error)")
            }
        }
        
        // Try bundle resources
        if let url = Bundle.main.url(forResource: "sunohook_edited", withExtension: "mov") {
            return url
        } else if let url = Bundle.main.url(forResource: "sunohook_edited", withExtension: "mp4") {
            return url
        }
        
        // Fallback to tiktok_sample
        if let asset = NSDataAsset(name: "tiktok_sample") {
            let tempURL = FileManager.default.temporaryDirectory.appendingPathComponent("tiktok_sample.mov")
            do {
                if FileManager.default.fileExists(atPath: tempURL.path) {
                    try FileManager.default.removeItem(at: tempURL)
                }
                try asset.data.write(to: tempURL)
                return tempURL
            } catch {
                print("❌ Failed to write tiktok_sample fallback: \(error)")
            }
        }
        
        return nil
    }
}

#Preview {
    SimpleVideoPlayerView(isPresented: .constant(true))
}