import SwiftUI struct PostView: View { @EnvironmentObject var settings: Settings let post: BooruPost @ObservedObject var manager: BooruManager let posts: [BooruPost] private var thumbnailURL: URL? { switch settings.thumbnailType { case .preview: return post.previewURL case .sample: return post.sampleURL case .original: return post.fileURL } } var body: some View { VStack { AsyncImage(url: thumbnailURL) { image in image .resizable() .aspectRatio(contentMode: .fit) .onScrollVisibilityChange { visible in if post == posts.last && !manager.endOfData && visible { Task { manager.loadNextPage() } } } .blur(radius: settings.blurNSFWThumbnails ? (post.rating != "s" && post.rating != "q") ? 10 : 0 : 0) .animation(.default, value: settings.blurNSFWThumbnails) } placeholder: { ProgressView() .padding() } } } }