Move required files to settings

This commit is contained in:
Christoph Hagen
2025-02-24 19:12:15 +01:00
parent ccf1ef3734
commit cdc84cdf4c
11 changed files with 54 additions and 91 deletions

View File

@ -79,8 +79,7 @@ struct AddPageView: View {
english: .init(content: content,
urlString: "page",
title: "A Title"),
tags: [],
requiredFiles: [])
tags: [])
content.add(page)
selectedPage = page
dismissSheet()

View File

@ -12,9 +12,6 @@ struct PageDetailView: View {
@ObservedObject
private var page: Page
@State
private var showFileSelectionSheet = false
private var transferImage: (language: ContentLanguage, image: FileResource)? {
page.localized(in: language.next).linkPreview.image.map { (language.next, $0) }
}
@ -23,14 +20,6 @@ struct PageDetailView: View {
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"
}
}
var body: some View {
ScrollView {
VStack(alignment: .leading) {
@ -79,24 +68,6 @@ 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),
@ -105,9 +76,6 @@ struct PageDetailView: View {
}
.padding()
}
.sheet(isPresented: $showFileSelectionSheet) {
MultiFileSelectionView(selectedFiles: $page.requiredFiles, insertSorted: true)
}
}
}

View File

@ -5,6 +5,18 @@ struct GeneralSettingsDetailView: View {
@ObservedObject
var generalSettings: GeneralSettings
@State
private var showFileSelectionSheet = false
private var requiredFilesText: String {
let count = generalSettings.requiredFiles.count
switch count {
case 0: return "No files"
case 1: return "1 file"
default: return "\(count) files"
}
}
var body: some View {
ScrollView {
VStack(alignment: .leading) {
@ -19,7 +31,7 @@ struct GeneralSettingsDetailView: View {
footer: "The maximum width of a link preview image")
IntegerPropertyView(
title: "Link Preview Image Height",
title: "Linfk Preview Image Height",
value: $generalSettings.linkPreviewImageHeight,
footer: "The maximum height of a link preview image")
@ -47,8 +59,29 @@ struct GeneralSettingsDetailView: View {
title: "Push Notification Access Token",
text: $generalSettings.pushNotificationAccessToken,
footer: "The access token to use for sending push notifications")
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
}
}
}
.padding()
}
.sheet(isPresented: $showFileSelectionSheet) {
MultiFileSelectionView(selectedFiles: $generalSettings.requiredFiles, insertSorted: true)
}
}
}