import SwiftUI
import SwiftData

struct LessonView: View {
    @Environment(\.modelContext) private var modelContext
    @Query(sort: \StudySession.updatedAt, order: .reverse) private var sessions: [StudySession]

    var onOpenSession: (StudySession) -> Void

    private var store: LibraryStore { LibraryStore(modelContext: modelContext) }

    var body: some View {
        List {
            if let active = sessions.first(where: { $0.isActive }) {
                Section("进行中") {
                    sessionRow(active, emphasize: true)
                }
            }
            Section("历史") {
                ForEach(sessions, id: \.id) { session in
                    sessionRow(session, emphasize: false)
                }
                .onDelete(perform: delete)
            }
        }
        .navigationTitle("Lesson")
    }

    private func sessionRow(_ session: StudySession, emphasize: Bool) -> some View {
        HStack {
            VStack(alignment: .leading, spacing: 4) {
                Text(session.title)
                    .font(emphasize ? .headline : .body)
                Text("\(session.mode.label) · 页 \(session.pdfPage) · \(Int(session.mediaTime))s")
                    .font(.caption)
                    .foregroundStyle(.secondary)
            }
            Spacer()
            Button(session.isActive ? "继续" : "打开") {
                store.setActiveSession(session)
                onOpenSession(session)
            }
            .buttonStyle(.borderedProminent)
        }
        .padding(.vertical, 4)
    }

    private func delete(at offsets: IndexSet) {
        for index in offsets {
            store.deleteSession(sessions[index])
        }
    }
}
