import SwiftUI struct GenerationContentView: View { @Environment(\.language) private var language @EnvironmentObject private var content: Content @Binding private var selectedSection: SettingsSection init(selected: Binding) { self._selectedSection = selected } @State private var isGeneratingWebsite = false @State private var generatorText: String = "" var body: some View { switch selectedSection { case .folders, .navigationBar, .postFeed, .tagOverview: generationView case .pages: PageSettingsContentView() } } @ViewBuilder private var generationView: some View { ScrollView { VStack(alignment: .leading) { Text("Website Generation") .font(.largeTitle) .bold() Text("Regenerate the website and monitor the output") .foregroundStyle(.secondary) .padding(.bottom, 30) HStack { Button(action: generateFeed) { Text("Generate") } .disabled(isGeneratingWebsite) if isGeneratingWebsite { ProgressView() .progressViewStyle(.circular) .frame(height: 25) } Button(action: updateGeneratedImages) { Text("Update images") } Text(generatorText) Spacer() } }.padding() } } private func updateGeneratedImages() { content.recalculateGeneratedImages() } private func generateFeed() { DispatchQueue.main.async { _ = content.generateFeed() } #warning("Update feed generation") /* guard let url = content.storage.outputPath else { print("Invalid output path") return } guard FileManager.default.fileExists(atPath: url.path) else { print("Missing output folder") return } isGeneratingWebsite = true DispatchQueue.global(qos: .userInitiated).async { let generator = LocalizedWebsiteGenerator( content: content, language: language) _ = generator.generateWebsite { text in DispatchQueue.main.async { self.generatorText = text } } DispatchQueue.main.async { isGeneratingWebsite = false self.generatorText = "Generation complete" } } */ } } #Preview { GenerationContentView(selected: .constant(.folders)) .environmentObject(Content.mock) .padding() }