import NetworkImage import SwiftUI struct PostGridThumbnailView: View { @EnvironmentObject var settings: SettingsManager let post: BooruPost let posts: [BooruPost] let manager: BooruManager private var thumbnailURL: URL? { switch settings.thumbnailQuality { case .preview: post.previewURL case .sample: post.sampleURL case .original: post.fileURL } } var body: some View { VStack { NetworkImage( url: thumbnailURL, transaction: Transaction(animation: .default) ) { image in let isFiltered = settings.blurRatings.contains(post.rating) && manager.selectedPost?.id != post.id image .resizable() .aspectRatio(contentMode: .fit) .onScrollVisibilityChange { visible in if post == posts.last, !manager.endOfData, visible { Task { manager.loadNextPage() } } } .blur(radius: isFiltered ? 8 : 0) .clipped() .animation(.default, value: isFiltered) .clipShape(RoundedRectangle(cornerRadius: 8)) } placeholder: { ProgressView() .padding() } } } }