Add upload, preview sheet

This commit is contained in:
Christoph Hagen
2025-02-15 01:02:25 +01:00
parent 0753d91f29
commit 2cad27b504
14 changed files with 358 additions and 115 deletions

View File

@ -39,6 +39,9 @@ struct MainView: App {
@StateObject
private var content: Content = .init()
@StateObject
private var upload: RemotePush = .init()
@State
private var language: ContentLanguage = .english
@ -60,6 +63,12 @@ struct MainView: App {
@State
private var showGenerationSheet = false
@State
private var showPreviewSheet = false
@State
private var showUploadSheet = false
@ViewBuilder
var sidebar: some View {
switch selection.tab {
@ -67,7 +76,6 @@ struct MainView: App {
case .pages: PageListView()
case .tags: TagListView()
case .files: FileListView(selectedFile: $selection.file)
case .browser: EmptyView()
}
}
@ -82,9 +90,6 @@ struct MainView: App {
SelectedContentView<TagContentView>(selected: $selection.tag)
case .files:
SelectedContentView<FileContentView>(selected: $selection.file)
case .browser:
WebContentView()
.environmentObject(server)
}
}
@ -99,16 +104,13 @@ struct MainView: App {
SelectedDetailView<TagDetailView>(selected: $selection.tag)
case .files:
SelectedDetailView<FileDetailView>(selected: $selection.file)
case .browser:
WebDetailView()
.environmentObject(server)
}
}
@ViewBuilder
var addItemSheet: some View {
switch selection.tab {
case .posts, .browser:
case .posts:
AddPostView(selected: $selection.post)
case .pages:
AddPageView(selected: $selection.page)
@ -141,7 +143,6 @@ struct MainView: App {
Text("Pages").tag(MainViewTab.pages)
Text("Tags").tag(MainViewTab.tags)
Text("Files").tag(MainViewTab.files)
Text("Preview").tag(MainViewTab.browser)
}.pickerStyle(.segmented)
}.frame(minWidth: 400)
}
@ -179,8 +180,13 @@ struct MainView: App {
}
}
ToolbarItem {
Button(action: toggleWebServer) {
Image(systemSymbol: server.isRunning ? .eye : .eyeSlash)
Button(action: { showPreviewSheet = true }) {
Image(systemSymbol: .eye)
}
}
ToolbarItem {
Button(action: { showUploadSheet = true }) {
Image(systemSymbol: .squareAndArrowUp)
}
}
ToolbarItem {
@ -220,6 +226,16 @@ struct MainView: App {
GenerationContentView()
.environmentObject(content)
}
.sheet(isPresented: $showPreviewSheet) {
WebsitePreviewSheet()
.environmentObject(content)
.environmentObject(server)
}
.sheet(isPresented: $showUploadSheet) {
UploadSheet()
.environmentObject(content)
.environmentObject(upload)
}
}
}
@ -267,18 +283,5 @@ struct MainView: App {
showInitialSetupSheet = true
}
}
private func toggleWebServer() {
guard !server.isRunning else {
server.stopServer()
return
}
guard let folder = content.storage.outputScope?.url.path() else {
print("No output folder to start server")
return
}
server.startServer(in: folder)
}
}

View File

@ -6,6 +6,5 @@ enum MainViewTab {
case pages
case tags
case files
case browser
}