import SwiftUI
import RideFormCore
import UIKit

struct SessionListView: View {
    @ObservedObject var controller: RecordingController
    var body: some View {
        List(controller.sessions, id: \.self) { url in
            NavigationLink { ScrollView { SessionSavedView(url: url) } } label: {
                SessionListLabel(url: url)
            }.accessibilityIdentifier("sessionRow")
        }.navigationTitle("Saved sessions").onAppear { controller.refreshSessions() }
            .overlay { if controller.sessions.isEmpty { Text("No saved sessions yet") } }
    }
}

struct SessionSavedView: View {
    let url: URL
    var body: some View { SessionReviewView(url: url).padding() }
}

private struct SessionListLabel: View {
    let url: URL
    @State private var label = "Loading session…"
    var body: some View {
        Text(label).font(.caption).lineLimit(2).task {
            let result = await Task.detached { try? SessionIO.load(url).manifest }.value
            label = result.map { "\($0.boundaries.started.wallClock.formatted()) · \($0.boundaries.status.uppercased())" } ?? "Unreadable session · \(url.lastPathComponent)"
        }
    }
}
