import SwiftUI struct GenerationSettingsView: View { @Environment(\.language) private var language @EnvironmentObject private var content: Content @State private var isGeneratingWebsite = false @State private var generatorText: String = "" var body: some View { ScrollView { VStack(alignment: .leading) { Text("Website Generation") .font(.largeTitle) .bold() Text("Regenerate the website and monitor the output") .padding(.bottom, 30) HStack { Button(action: generateFeed) { Text("Generate") } .disabled(isGeneratingWebsite) if isGeneratingWebsite { ProgressView() .progressViewStyle(.circular) .frame(height: 25) } Text(generatorText) Spacer() } } } } private func generateFeed() { guard content.settings.outputDirectoryPath != "" else { print("Invalid output path") return } let url = URL(fileURLWithPath: content.settings.outputDirectoryPath) guard FileManager.default.fileExists(atPath: url.path) else { print("Missing output folder") return } isGeneratingWebsite = true DispatchQueue.global(qos: .userInitiated).async { let generator = WebsiteGenerator( content: content, language: language) _ = generator.generateWebsite { text in DispatchQueue.main.async { self.generatorText = text } } DispatchQueue.main.async { isGeneratingWebsite = false self.generatorText = "Generation complete" } } } } #Preview { GenerationSettingsView() .environmentObject(Content.mock) .padding() }