2023-12-22 22:14:21 +00:00
|
|
|
//
|
|
|
|
// AsyncImageView.swift
|
|
|
|
// Jel
|
|
|
|
//
|
|
|
|
// Created by zerocool on 12/19/23.
|
|
|
|
//
|
|
|
|
|
|
|
|
import SwiftUI
|
|
|
|
import JellyfinKit
|
|
|
|
|
|
|
|
struct AsyncImageView: View {
|
|
|
|
@EnvironmentObject var jellyfinClient: JellyfinClientController
|
|
|
|
|
|
|
|
@State var imageId: String
|
|
|
|
@State var blurhash: String
|
|
|
|
@State var imageType: String
|
|
|
|
|
|
|
|
@State var loading = true
|
|
|
|
@State var uiImage: UIImage = UIImage()
|
|
|
|
|
|
|
|
var body: some View {
|
|
|
|
VStack {
|
|
|
|
if loading {
|
2023-12-23 00:29:07 +00:00
|
|
|
Image(uiImage: uiImage)
|
|
|
|
.resizable()
|
2023-12-22 22:14:21 +00:00
|
|
|
} else {
|
|
|
|
Image(uiImage: uiImage)
|
2023-12-23 00:29:07 +00:00
|
|
|
.resizable()
|
2023-12-22 22:14:21 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
.onAppear {
|
2023-12-23 00:29:07 +00:00
|
|
|
uiImage = UIImage(blurHash: blurhash, size: CGSize(width: 16, height: 16)) ?? UIImage()
|
|
|
|
|
2023-12-22 22:14:21 +00:00
|
|
|
Task {
|
|
|
|
let request = Paths.getItemImage(itemID: imageId, imageType: imageType)
|
|
|
|
do {
|
|
|
|
let res = try await jellyfinClient.send(request)
|
|
|
|
if let image = UIImage(data: res.value) {
|
|
|
|
uiImage = image
|
|
|
|
loading = false
|
|
|
|
} else {
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//#Preview {
|
|
|
|
// AsyncImageView(imageId: "", blurhash: "", imageType: "")
|
|
|
|
//}
|