summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/Grid/PostGridView.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-06-24 05:58:43 -0700
committerFuwn <[email protected]>2025-06-24 05:58:43 -0700
commit7403b6143b834174345ee300faad4f82fcee5461 (patch)
tree3c37c3289be132e606470006faf74e83991c9151 /Sora/Views/Post/Grid/PostGridView.swift
parentfeat: Development commit (diff)
downloadsora-testing-7403b6143b834174345ee300faad4f82fcee5461.tar.xz
sora-testing-7403b6143b834174345ee300faad4f82fcee5461.zip
feat: Development commit
Diffstat (limited to 'Sora/Views/Post/Grid/PostGridView.swift')
-rw-r--r--Sora/Views/Post/Grid/PostGridView.swift16
1 files changed, 15 insertions, 1 deletions
diff --git a/Sora/Views/Post/Grid/PostGridView.swift b/Sora/Views/Post/Grid/PostGridView.swift
index 5b44a10..9eef5f7 100644
--- a/Sora/Views/Post/Grid/PostGridView.swift
+++ b/Sora/Views/Post/Grid/PostGridView.swift
@@ -162,6 +162,11 @@ struct PostGridView: View { // swiftlint:disable:this type_body_length
updateViewState(for: queryID, currentPage: newPage)
}
}
+ .onChange(of: manager.selectedPost) { _, newPost in
+ let queryID = manager.searchHistory.last { $0.tags == manager.tags }?.id ?? UUID()
+
+ updateViewState(for: queryID, selectedPost: newPost, resetSelectedPost: newPost == nil)
+ }
.onChange(of: manager.historyIndex) { _, newIndex in
guard newIndex >= 0 && newIndex < manager.searchHistory.count else { return }
@@ -170,6 +175,7 @@ struct PostGridView: View { // swiftlint:disable:this type_body_length
if let state = viewStates[queryID] {
manager.posts = state.posts
manager.currentPage = state.currentPage
+ manager.selectedPost = state.selectedPost
} else {
manager.posts = []
manager.currentPage = 1
@@ -341,7 +347,9 @@ struct PostGridView: View { // swiftlint:disable:this type_body_length
private func updateViewState(
for queryID: UUID,
posts: [BooruPost] = [],
- currentPage: Int? = nil
+ currentPage: Int? = nil,
+ selectedPost: BooruPost? = nil,
+ resetSelectedPost: Bool = false
) {
var state = viewStates[queryID] ?? PostGridViewState()
@@ -349,6 +357,12 @@ struct PostGridView: View { // swiftlint:disable:this type_body_length
if let currentPage { state.currentPage = currentPage }
+ if let selectedPost {
+ state.selectedPost = selectedPost
+ } else if resetSelectedPost {
+ state.selectedPost = nil
+ }
+
viewStates[queryID] = state
}
}