Consolidate images and files

This commit is contained in:
Christoph Hagen
2024-12-09 12:18:55 +01:00
parent 394cf7a2e4
commit 4f08526978
77 changed files with 1970 additions and 1619 deletions

View File

@ -5,22 +5,75 @@ struct FileDetailView: View {
@ObservedObject
var file: FileResource
@State
private var newId: String
init(file: FileResource) {
self.file = file
self.newId = file.id
}
private let allowedCharactersInPostId = CharacterSet.alphanumerics.union(CharacterSet(charactersIn: "-.")).inverted
private var idExists: Bool {
file.content.files.contains { $0.id == newId }
}
private var containsInvalidCharacters: Bool {
newId.rangeOfCharacter(from: allowedCharactersInPostId) != nil
}
var body: some View {
VStack(alignment: .leading) {
Text("File Name")
.font(.headline)
TextField("", text: $file.uniqueId)
.textFieldStyle(.roundedBorder)
.padding(.bottom)
.disabled(true)
Text("Description")
HStack {
TextField("", text: $newId)
.textFieldStyle(.roundedBorder)
Button(action: setNewId) {
Text("Update")
}
.disabled(newId.isEmpty || containsInvalidCharacters || idExists)
}
Text("German Description")
.font(.headline)
TextField("", text: $file.description)
TextField("", text: $file.germanDescription)
.textFieldStyle(.roundedBorder)
Text("English Description")
.font(.headline)
TextField("", text: $file.englishDescription)
.textFieldStyle(.roundedBorder)
if file.type.isImage {
Text("Image size")
.font(.headline)
Text("\(Int(file.size.width)) x \(Int(file.size.height)) (\(file.aspectRatio))")
.foregroundStyle(.secondary)
#warning("Add button to show image versions")
}
Spacer()
}.padding()
}
private func setNewId() {
guard file.content.storage.move(file: file.id, to: newId) else {
print("Failed to move file \(file.id)")
newId = file.id
return
}
file.id = newId
}
}
extension FileDetailView: MainContentView {
init(item: FileResource) {
self.init(file: item)
}
static let itemDescription = "a file"
}
#Preview {
FileDetailView(file: .mock)
}