import Foundation
import RealFlags
import SwiftUI

public struct InternalFeatureFlagsDebugMenu: View {
    public init() {}

    public var body: some View {
        FlagsBrowserControllerRepresentable(loaders: [
            FeatureFlag.general,
            FeatureFlag.onboarding,
            FeatureFlag.clips,
            FeatureFlag.local,
            FeatureFlag.legacy,
            FeatureFlag.create,
            FeatureFlag.promo,
            FeatureFlag.hooks,
            FeatureFlag.orpheus,
        ])
        /// This debug view wasn't built to support dark mode, so force light mode always
            .environment(\.colorScheme, .light)
            .ignoresSafeArea()
    }
}

private struct FlagsBrowserControllerRepresentable: UIViewRepresentable {
    let loaders: [AnyFlagsLoader]
    private lazy var controller = FlagsBrowserController.create(loaders: loaders)

    private var view: UIView!

    init(loaders: [AnyFlagsLoader]) {
        self.loaders = loaders
        self.view = controller.view
    }

    func makeUIView(context _: Context) -> UIView {
        view
    }

    func updateUIView(_: UIView, context _: Context) {}
}
