External files, improve page generation

This commit is contained in:
Christoph Hagen
2024-12-10 15:21:28 +01:00
parent 8183bc4903
commit efc9234917
50 changed files with 1069 additions and 424 deletions

View File

@ -1,4 +1,5 @@
import SwiftUI
import SFSafeSymbols
struct PageDetailView: View {
@ -17,6 +18,9 @@ struct PageDetailView: View {
@State
private var newId: String
@State
private var didGenerateWebsite: Bool?
init(page: Page) {
self.page = page
self.newId = page.id
@ -35,10 +39,21 @@ struct PageDetailView: View {
var body: some View {
ScrollView {
VStack(alignment: .leading) {
Button(action: generate) {
Text("Generate")
HStack {
Button(action: generate) {
Text("Generate")
}
.disabled(isGeneratingWebsite)
if let didGenerateWebsite {
if didGenerateWebsite {
Image(systemSymbol: .checkmarkCircleFill)
.foregroundStyle(.green)
} else {
Image(systemSymbol: .xmarkCircleFill)
.foregroundStyle(.red)
}
}
}
.disabled(isGeneratingWebsite)
HStack {
TextField("", text: $newId)
.textFieldStyle(.roundedBorder)
@ -86,6 +101,7 @@ struct PageDetailView: View {
}
LocalizedPageDetailView(page: page.localized(in: language))
.id(page.id + language.rawValue)
}
.padding()
@ -106,11 +122,13 @@ struct PageDetailView: View {
isGeneratingWebsite = true
print("Generating page")
DispatchQueue.global(qos: .userInitiated).async {
let generator = WebsiteGenerator(
content: content,
language: language)
if !generator.generate(page: page) {
print("Generation failed")
for language in ContentLanguage.allCases {
let generator = LocalizedWebsiteGenerator(
content: content,
language: language)
if !generator.generate(page: page) {
print("Generation failed")
}
}
DispatchQueue.main.async {
isGeneratingWebsite = false