summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/Grid/PostGridThumbnailView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Views/Post/Grid/PostGridThumbnailView.swift')
-rw-r--r--Sora/Views/Post/Grid/PostGridThumbnailView.swift41
1 files changed, 25 insertions, 16 deletions
diff --git a/Sora/Views/Post/Grid/PostGridThumbnailView.swift b/Sora/Views/Post/Grid/PostGridThumbnailView.swift
index 4973c1e..ae9dbcb 100644
--- a/Sora/Views/Post/Grid/PostGridThumbnailView.swift
+++ b/Sora/Views/Post/Grid/PostGridThumbnailView.swift
@@ -19,30 +19,39 @@ struct PostGridThumbnailView: View {
}
}
+ @ViewBuilder
+ private func imageContent(image: Image) -> some View {
+ let isFiltered =
+ settings.blurRatings.contains(post.rating)
+ && manager.selectedPost?.id != post.id
+
+ image
+ .resizable()
+ .aspectRatio(contentMode: .fit)
+ .blur(radius: isFiltered ? 8 : 0)
+ .clipped()
+ .animation(.default, value: isFiltered)
+ .clipShape(RoundedRectangle(cornerRadius: 8))
+ }
+
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()
+ if #available(iOS 18.0, *) {
+ imageContent(image: image)
+ .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))
+ } else {
+ imageContent(image: image)
+ }
} placeholder: {
ProgressView()
.padding()