Rework path storage, add start screen

This commit is contained in:
Christoph Hagen
2024-12-17 23:05:45 +01:00
parent 849585acc7
commit 9a53e020a7
21 changed files with 408 additions and 229 deletions

View File

@ -105,8 +105,7 @@ struct AddFileView: View {
id: file.uniqueId,
isExternallyStored: file.url == nil,
en: "", de: "")
// TODO: Insert at correct index?
content.files.insert(resource, at: 0)
content.add(resource)
selectedFile = resource
}
dismiss()

View File

@ -5,13 +5,13 @@ struct FolderOnDiskPropertyView: View {
let title: LocalizedStringKey
@Binding
var folder: String
var folder: URL?
let footer: LocalizedStringKey
let update: (URL) -> Void
init(title: LocalizedStringKey, folder: Binding<String>, footer: LocalizedStringKey, update: @escaping (URL) -> Void) {
init(title: LocalizedStringKey, folder: Binding<URL?>, footer: LocalizedStringKey, update: @escaping (URL) -> Void) {
self.title = title
self._folder = folder
self.footer = footer
@ -21,7 +21,7 @@ struct FolderOnDiskPropertyView: View {
var body: some View {
GenericPropertyView(title: title, footer: footer) {
HStack(alignment: .firstTextBaseline) {
Text(folder)
Text(folder?.path() ?? "No folder selected")
Spacer()
Button("Select") {
guard let url = openFolderSelectionPanel() else {

View File

@ -81,7 +81,7 @@ struct AddPageView: View {
urlString: "page",
title: "A Title"),
tags: [])
content.pages.insert(page, at: 0)
content.add(page)
selectedPage = page
dismissSheet()
}

View File

@ -82,11 +82,10 @@ struct PageDetailView: View {
}
private func generate() {
guard content.settings.paths.outputDirectoryPath != "" else {
guard let url = content.storage.outputPath else {
print("Invalid output path")
return
}
let url = content.settings.outputDirectory
guard FileManager.default.fileExists(atPath: url.path) else {
print("Missing output folder")

View File

@ -184,7 +184,7 @@ struct PageIssueView: View {
isExternallyStored: true,
en: "",
de: "")
content.files.append(file)
content.add(file)
retryPageCheck()
}

View File

@ -59,11 +59,10 @@ struct GenerationContentView: View {
}
private func generateFeed() {
guard content.settings.paths.outputDirectoryPath != "" else {
guard let url = content.storage.outputPath else {
print("Invalid output path")
return
}
let url = content.settings.outputDirectory
guard FileManager.default.fileExists(atPath: url.path) else {
print("Missing output folder")

View File

@ -17,22 +17,19 @@ struct PathSettingsView: View {
FolderOnDiskPropertyView(
title: "Content Folder",
folder: $content.settings.paths.contentDirectoryPath,
folder: $content.storage.contentPath,
footer: "The folder where the raw content of the website is stored") { url in
guard content.storage.save(folderUrl: url, in: .contentPath) else {
guard content.storage.save(contentPath: url) else {
return
}
content.settings.paths.contentDirectoryPath = url.path()
#warning("Reload database")
}
FolderOnDiskPropertyView(
title: "Output Folder",
folder: $content.settings.paths.outputDirectoryPath,
folder: $content.storage.outputPath,
footer: "The folder where the generated website is stored") { url in
guard content.storage.save(folderUrl: url, in: .outputPath) else {
return
}
content.settings.paths.outputDirectoryPath = url.path()
content.storage.save(outputPath: url)
}
StringPropertyView(