52 lines
1.3 KiB
Swift
52 lines
1.3 KiB
Swift
//
|
|
// CarouselImageContainerView.swift
|
|
// damus
|
|
//
|
|
// Created by William Casarin on 2023-03-23.
|
|
//
|
|
|
|
import SwiftUI
|
|
import Kingfisher
|
|
|
|
|
|
// lots of overlap between this and ImageContainerView
|
|
struct ImageContainerView: View {
|
|
|
|
let url: URL?
|
|
|
|
@State private var image: UIImage?
|
|
@State private var showShareSheet = false
|
|
|
|
private struct ImageHandler: ImageModifier {
|
|
@Binding var handler: UIImage?
|
|
|
|
func modify(_ image: UIImage) -> UIImage {
|
|
handler = image
|
|
return image
|
|
}
|
|
}
|
|
|
|
var body: some View {
|
|
|
|
KFAnimatedImage(url)
|
|
.imageContext(.note)
|
|
.configure { view in
|
|
view.framePreloadCount = 3
|
|
}
|
|
.imageModifier(ImageHandler(handler: $image))
|
|
.clipped()
|
|
.modifier(ImageContextMenuModifier(url: url, image: image, showShareSheet: $showShareSheet))
|
|
.sheet(isPresented: $showShareSheet) {
|
|
ShareSheet(activityItems: [url])
|
|
}
|
|
}
|
|
}
|
|
|
|
let test_image_url = URL(string: "https://jb55.com/red-me.jpg")!
|
|
|
|
struct ImageContainerView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
ImageContainerView(url: test_image_url)
|
|
}
|
|
}
|