35 lines
1.1 KiB
Swift
35 lines
1.1 KiB
Swift
import SwiftUI
|
|
|
|
struct ImageViewer: View {
|
|
let imageUrl: URL
|
|
@EnvironmentObject var appState: AppState
|
|
@StateObject private var imageLoader = ImageLoader()
|
|
|
|
var body: some View {
|
|
Group {
|
|
if imageLoader.isLoading {
|
|
ProgressView()
|
|
} else if let image = imageLoader.image {
|
|
image
|
|
.resizable()
|
|
.aspectRatio(contentMode: .fit)
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
.scaledToFit()
|
|
} else if let errorMessage = imageLoader.errorMessage {
|
|
Text("Failed to load image: \(errorMessage)")
|
|
.font(.caption)
|
|
.foregroundColor(.red)
|
|
} else {
|
|
Text("Failed to load image.")
|
|
}
|
|
}
|
|
.task(id: imageUrl) {
|
|
if let token = appState.token {
|
|
await imageLoader.loadImage(from: imageUrl, token: token)
|
|
}
|
|
}
|
|
.navigationTitle("Image")
|
|
.navigationBarTitleDisplayMode(.inline)
|
|
}
|
|
}
|