import SwiftUI

private enum QuickStep: Hashable {
    case viewfinder
    case confirm
    case batch
}

struct QuickCaptureFlow: View {
    var onClose: () -> Void

    @State private var step: QuickStep = .viewfinder
    @State private var snapCount = 0

    var body: some View {
        ZStack {
            switch step {
            case .viewfinder:
                A1ViewfinderView(
                    onShoot: {
                        snapCount += 1
                        withAnimation(.easeInOut(duration: 0.25)) { step = .confirm }
                    },
                    onClose: onClose
                )
                .transition(.opacity)

            case .confirm:
                A2ConfirmView(
                    onSave: {
                        if snapCount >= 2 {
                            withAnimation { step = .batch }
                        } else {
                            onClose()
                        }
                    },
                    onNext: {
                        withAnimation { step = .viewfinder }
                    },
                    onBack: {
                        withAnimation { step = .viewfinder }
                    }
                )
                .transition(.opacity)

            case .batch:
                A3BatchView(
                    onAddMore: {
                        withAnimation { step = .viewfinder }
                    },
                    onFinish: onClose,
                    onBack: {
                        withAnimation { step = .confirm }
                    }
                )
                .transition(.opacity)
            }
        }
    }
}
