import ComponentLibrary
import ComposableArchitecture
import Localization
import SwiftUI
import Waveform

public struct AssetCreationView: View {
    @Environment(\.dismiss) private var dismiss
    @Bindable var store: StoreOf<AssetCreationReducer>

    public init(store: StoreOf<AssetCreationReducer>) {
        self.store = store
    }

    public var body: some View {
        VStack(spacing: .zero) {
            header

            Spacer()

            visualizerGallery
        }
        .presentationCornerRadius(40, conditional: true)
        .foregroundStyle(Color.SemanticV1.textPrimary)
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.SemanticV1.backgroundPrimary)
        .colorScheme(.dark)
        .ignoresSafeArea(.container, edges: .bottom)
        .task {
            store.send(.task)
        }
        .onDisappear {
            store.send(.pauseShareAssetAudio)
        }
    }

    @ViewBuilder
    var header: some View {
        Toolbar(L10n.FeatureShareAssets.sheetTitle) {
            EmptyView()
        } trailing: {
            ToolbarButton(.close, background: Color.SemanticV1.backgroundTertiary) {
                dismiss()
            }
        }
    }

    @ViewBuilder
    var visualizerGallery: some View {
        VisualizerGalleryView(
            store: store.scope(state: \.visualizerGallery, action: \.visualizerGallery)
        )
    }
}
