diff options
Diffstat (limited to 'Sora')
| -rw-r--r-- | Sora/Views/Post/Details/PostDetailsTagsView.swift | 25 | ||||
| -rw-r--r-- | Sora/Views/Post/Grid/PostGridView.swift | 4 |
2 files changed, 18 insertions, 11 deletions
diff --git a/Sora/Views/Post/Details/PostDetailsTagsView.swift b/Sora/Views/Post/Details/PostDetailsTagsView.swift index 8eac11a..684422e 100644 --- a/Sora/Views/Post/Details/PostDetailsTagsView.swift +++ b/Sora/Views/Post/Details/PostDetailsTagsView.swift @@ -26,24 +26,25 @@ struct PostDetailsTagsView: View { Button(action: { Task { @MainActor in if isNestedContext { - let mainTokens = manager.tags let baseTokens = (baseSearchText ?? "") .components(separatedBy: .whitespaces) .filter { !$0.isEmpty } - var merged = Array(Set(mainTokens + baseTokens)).sorted() + var merged = Array(Set(baseTokens)).sorted() if !merged.contains(tag) { merged.append(tag) } - manager.searchText = merged.joined(separator: " ") - navigationPath = NavigationPath() - isPresented = false + let combinedSearchText = merged.joined(separator: " ") - let localManager = manager - let localSettings = settings + var newPath = navigationPath - Task(priority: .userInitiated) { - await localManager.performSearch(settings: localSettings) + if !newPath.isEmpty { + newPath.removeLast() } + + newPath.append(combinedSearchText) + + navigationPath = newPath + isPresented = false } else { var tokens = manager.tags @@ -63,7 +64,11 @@ struct PostDetailsTagsView: View { }) { Label("Add to Search", systemImage: "plus") } - .disabled(manager.tags.contains(tag)) + .disabled( + isNestedContext + ? (baseSearchText?.components(separatedBy: .whitespaces).contains(tag) ?? false) + : manager.tags.contains(tag) + ) BookmarkMenuButtonView( tags: [tag], diff --git a/Sora/Views/Post/Grid/PostGridView.swift b/Sora/Views/Post/Grid/PostGridView.swift index 62706c2..6d96bdc 100644 --- a/Sora/Views/Post/Grid/PostGridView.swift +++ b/Sora/Views/Post/Grid/PostGridView.swift @@ -241,7 +241,9 @@ struct PostGridView: View { // swiftlint:disable:this type_body_length } .onAppear { if let initialTag { - localSearchText = initialTag + if localSearchText.isEmpty || !hasAppearedBefore { + localSearchText = initialTag + } if !hasAppearedBefore { hasAppearedBefore = true |