summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Sora/Views/Post/Grid/PostGridView.swift18
1 files changed, 16 insertions, 2 deletions
diff --git a/Sora/Views/Post/Grid/PostGridView.swift b/Sora/Views/Post/Grid/PostGridView.swift
index a63bf97..955abd4 100644
--- a/Sora/Views/Post/Grid/PostGridView.swift
+++ b/Sora/Views/Post/Grid/PostGridView.swift
@@ -19,6 +19,21 @@ struct PostGridView: View { // swiftlint:disable:this type_body_length
@State private var scrollID: String?
@State private var cachedColumnsData: ColumnsDataCache?
@State private var scrollDebounceTask: Task<Void, Never>?
+ @State private var lastScrollCaptureTime: CFTimeInterval = CFAbsoluteTimeGetCurrent()
+
+ private var throttledScrollID: Binding<String?> {
+ Binding(
+ get: { scrollID },
+ set: { newValue in
+ let now = CFAbsoluteTimeGetCurrent()
+
+ if now - lastScrollCaptureTime > 0.5 {
+ lastScrollCaptureTime = now
+ scrollID = newValue
+ }
+ }
+ )
+ }
@Environment(\.isSearching)
private var isSearching
@@ -145,8 +160,7 @@ struct PostGridView: View { // swiftlint:disable:this type_body_length
.id(queryID)
.transition(.opacity)
}
- .scrollPosition(id: $scrollID, anchor: .top)
- .scrollTargetBehavior(.viewAligned)
+ .scrollPosition(id: throttledScrollID, anchor: .top)
#if os(iOS)
.searchable(
text: $manager.searchText,