Full generation, file type cleanup
This commit is contained in:
@ -13,12 +13,21 @@ struct PageDetailView: View {
|
||||
private var page: Page
|
||||
|
||||
@State
|
||||
private var didGenerateWebsite: Bool?
|
||||
private var showFileSelectionSheet = false
|
||||
|
||||
init(page: Page) {
|
||||
self.page = page
|
||||
}
|
||||
|
||||
private var requiredFilesText: String {
|
||||
switch page.requiredFiles.count {
|
||||
case 0: return "No files"
|
||||
case 1: return "1 file"
|
||||
default: return "\(page.requiredFiles.count) files"
|
||||
}
|
||||
}
|
||||
|
||||
#warning("Show info on page generation")
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
VStack(alignment: .leading) {
|
||||
@ -30,17 +39,17 @@ struct PageDetailView: View {
|
||||
Text("Generate")
|
||||
}
|
||||
.disabled(content.isGeneratingWebsite)
|
||||
switch didGenerateWebsite {
|
||||
case .none:
|
||||
Image(systemSymbol: .questionmarkCircleFill)
|
||||
.foregroundStyle(.gray)
|
||||
case .some(true):
|
||||
Image(systemSymbol: .checkmarkCircleFill)
|
||||
.foregroundStyle(.green)
|
||||
case .some(false):
|
||||
Image(systemSymbol: .xmarkCircleFill)
|
||||
.foregroundStyle(.red)
|
||||
}
|
||||
// switch didGenerateWebsite {
|
||||
// case .none:
|
||||
// Image(systemSymbol: .questionmarkCircleFill)
|
||||
// .foregroundStyle(.gray)
|
||||
// case .some(true):
|
||||
// Image(systemSymbol: .checkmarkCircleFill)
|
||||
// .foregroundStyle(.green)
|
||||
// case .some(false):
|
||||
// Image(systemSymbol: .xmarkCircleFill)
|
||||
// .foregroundStyle(.red)
|
||||
// }
|
||||
}
|
||||
IdPropertyView(
|
||||
id: $page.id,
|
||||
@ -72,6 +81,24 @@ struct PageDetailView: View {
|
||||
footer: "The date when the page content ended")
|
||||
.disabled(page.isExternalUrl)
|
||||
|
||||
GenericPropertyView(
|
||||
title: "Required files",
|
||||
footer: "The additional files required by the page") {
|
||||
HStack {
|
||||
Image(systemSymbol: .squareAndPencilCircleFill)
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(height: 20)
|
||||
Text(requiredFilesText)
|
||||
Spacer()
|
||||
}
|
||||
.padding(.vertical, 8)
|
||||
.contentShape(Rectangle())
|
||||
.onTapGesture {
|
||||
showFileSelectionSheet = true
|
||||
}
|
||||
}
|
||||
|
||||
LocalizedPageDetailView(
|
||||
isExternalPage: page.isExternalUrl,
|
||||
page: page.localized(in: language))
|
||||
@ -79,14 +106,14 @@ struct PageDetailView: View {
|
||||
}
|
||||
.padding()
|
||||
}
|
||||
.sheet(isPresented: $showFileSelectionSheet) {
|
||||
MultiFileSelectionView(selectedFiles: $page.requiredFiles, insertSorted: true)
|
||||
}
|
||||
}
|
||||
|
||||
private func generate() {
|
||||
DispatchQueue.global(qos: .userInitiated).async {
|
||||
let success = content.generateFeed()
|
||||
DispatchQueue.main.async {
|
||||
didGenerateWebsite = success
|
||||
}
|
||||
content.generatePage(page)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user