summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/Grid/PostGridThumbnailView.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-06-14 21:53:55 -0700
committerFuwn <[email protected]>2025-06-14 21:53:55 -0700
commit6ba8342d43ecca29b0a8a2131937536bbf363b09 (patch)
treef7747739526597173cd4507d7d0d52cacb75463b /Sora/Views/Post/Grid/PostGridThumbnailView.swift
parentfeat: Development commit (diff)
downloadsora-testing-6ba8342d43ecca29b0a8a2131937536bbf363b09.tar.xz
sora-testing-6ba8342d43ecca29b0a8a2131937536bbf363b09.zip
feat: Development commit
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()