diff options
| author | Fuwn <[email protected]> | 2025-06-24 05:58:43 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-06-24 05:58:43 -0700 |
| commit | 7403b6143b834174345ee300faad4f82fcee5461 (patch) | |
| tree | 3c37c3289be132e606470006faf74e83991c9151 /Sora/Views/Post/Grid/PostGridView.swift | |
| parent | feat: Development commit (diff) | |
| download | sora-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.swift | 16 |
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 } } |