// // LibraryIconView.swift // Jel // // Created by zerocool on 12/15/23. // import SwiftUI import JellyfinKit import NukeUI struct LibraryIconView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController var library: BaseItemDto var imageType: String = "Primary" var width: CGFloat? var height: CGFloat? @State var blurHashImage: UIImage = UIImage() @State var imageUrl: URL? var body: some View { VStack { LazyImage(url: imageUrl) {state in if let image = state.image { image .resizable() } else if state.error != nil { Color.red } else { Image(uiImage: blurHashImage) .resizable() } } .aspectRatio(contentMode: .fit) .frame(width: width, height: height) .clipShape(RoundedRectangle(cornerRadius: 5)) Text(library.name ?? "Unknown") .font(.subheadline) .onAppear { let blurhash = library.imageBlurHashes?.primary?[library.imageTags?[imageType] ?? ""] ?? "" blurHashImage = UIImage(blurHash: blurhash, size: CGSize(width: 16, height: 16)) ?? UIImage() let imageId = library.id ?? "" let request = Paths.getItemImage(itemID: imageId, imageType: imageType) imageUrl = jellyfinClient.getUrl()?.appending(path: request.url?.absoluteString ?? "") } } } } //#Preview { // LibraryIconView(library: BaseItemDto()) //}