2025-05-02 10:00:22 +02:00

69 lines
1.5 KiB
Swift

import SwiftUI
import SFSafeSymbols
struct InsertableGallery: View, InsertableCommandView {
static let title = "Gallery"
static let sheetTitle = "Insert an image gallery"
static let icon: SFSymbol = .photoStack
final class Model: InsertableCommandModel {
@Published
var images: [FileResource] = []
var isReady: Bool {
!images.isEmpty
}
init() {
}
var command: String? {
guard !images.isEmpty else {
return nil
}
return (
["```\(GalleryBlock.blockId)"] +
images.map { $0.id } +
["```"]
).joined(separator: "\n")
}
}
@Environment(\.colorScheme)
private var colorScheme
@ObservedObject
private var model: Model
@State
private var showImagePicker = false
init(model: Model) {
self.model = model
}
var body: some View {
VStack(spacing: 2) {
ScrollView(.horizontal) {
HStack(alignment: .center, spacing: 8) {
ForEach(model.images) { image in
PostImageView(image: image)
}
}
}
Button("Select images", action: { showImagePicker = true })
.padding(.vertical, 2)
}
.sheet(isPresented: $showImagePicker) {
MultiFileSelectionView(
selectedFiles: $model.images,
allowedType: .image)
}
}
}