diff options
| author | Fuwn <[email protected]> | 2025-02-22 00:07:44 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-02-22 00:07:44 -0800 |
| commit | e42fa12dafe264c665d2574c93b54ddafe7f2e1f (patch) | |
| tree | a362b3b78ea97dc28ce5cc3682801bf89688f546 /Sora/Views/Post/PostGridView.swift | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-e42fa12dafe264c665d2574c93b54ddafe7f2e1f.tar.xz sora-testing-e42fa12dafe264c665d2574c93b54ddafe7f2e1f.zip | |
feat: Development commit
Diffstat (limited to 'Sora/Views/Post/PostGridView.swift')
| -rw-r--r-- | Sora/Views/Post/PostGridView.swift | 171 |
1 files changed, 86 insertions, 85 deletions
diff --git a/Sora/Views/Post/PostGridView.swift b/Sora/Views/Post/PostGridView.swift index 89c762a..842d0a6 100644 --- a/Sora/Views/Post/PostGridView.swift +++ b/Sora/Views/Post/PostGridView.swift @@ -2,98 +2,99 @@ import SwiftUI import WaterfallGrid struct PostGridView: View { - @EnvironmentObject var settings: Settings - @ObservedObject var manager: BooruManager - @Environment(\.isSearching) private var isSearching + @EnvironmentObject var settings: Settings + @ObservedObject var manager: BooruManager + @Environment(\.isSearching) private var isSearching - var filteredPosts: [BooruPost] { - (settings.showNSFWPosts ? manager.posts : manager.posts.filter { $0.rating == "s" || $0.rating == "q" }) - .sorted(by: { $0.id > $1.id }) - } + var filteredPosts: [BooruPost] { + (settings.showNSFWPosts + ? manager.posts : manager.posts.filter { $0.rating == "s" || $0.rating == "q" }) + .sorted(by: { $0.id > $1.id }) + } - var body: some View { - ScrollViewReader { _ in - ScrollView { - if filteredPosts.isEmpty { - ProgressView() - .padding() - } + var body: some View { + ScrollViewReader { _ in + ScrollView { + if filteredPosts.isEmpty { + ProgressView() + .padding() + } - WaterfallGrid(filteredPosts, id: \.id) { post in - Group { - #if os(macOS) - Button { - manager.selectedPost = post - } label: { - PostView( - post: post, - manager: manager, - posts: filteredPosts - ) - } - .buttonStyle(PlainButtonStyle()) - #else - NavigationLink(value: post) { - PostView( - post: post, - manager: manager, - posts: filteredPosts - ) - } - #endif - } - } - .gridStyle(columns: settings.columns) - } - .searchable(text: $manager.searchText, prompt: "Tags") - .searchSuggestions { - if settings.searchSuggestions { - SearchSuggestionsView( - tags: manager.allTags, - searchText: $manager.searchText - ) - } - } - .onSubmit(of: .search, manager.performSearch) - .navigationDestination(for: BooruPost.self) { post in - PostDetailsView(post: post) - } - .onChange(of: manager.searchText) { _, _ in - if manager.searchText.isEmpty, !isSearching { - Task { - manager.performSearch() - } - } + WaterfallGrid(filteredPosts, id: \.id) { post in + Group { + #if os(macOS) + Button { + manager.selectedPost = post + } label: { + PostView( + post: post, + manager: manager, + posts: filteredPosts + ) + } + .buttonStyle(PlainButtonStyle()) + #else + NavigationLink(value: post) { + PostView( + post: post, + manager: manager, + posts: filteredPosts + ) + } + #endif + } + } + .gridStyle(columns: settings.columns) + } + .searchable(text: $manager.searchText, prompt: "Tags") + .searchSuggestions { + if settings.searchSuggestions { + SearchSuggestionsView( + tags: manager.allTags, + searchText: $manager.searchText + ) + } + } + .onSubmit(of: .search, manager.performSearch) + .navigationDestination(for: BooruPost.self) { post in + PostDetailsView(post: post) + } + .onChange(of: manager.searchText) { _, _ in + if manager.searchText.isEmpty, !isSearching { + Task { + manager.performSearch() + } + } + } + .toolbar { + #if os(macOS) + ToolbarItem { + Button(action: { + Task { + await manager.fetchPosts(page: 1, tags: manager.tags, replace: true) + } + }) { + Label("Refresh", systemImage: "arrow.clockwise") } - .toolbar { - #if os(macOS) - ToolbarItem { - Button(action: { - Task { - await manager.fetchPosts(page: 1, tags: manager.tags, replace: true) - } - }) { - Label("Refresh", systemImage: "arrow.clockwise") - } - } - #endif + } + #endif - if !manager.tags.isEmpty { - #if os(macOS) - ToolbarItem { - PostGridBookmarkButtonView() - } - #else - ToolbarItem(placement: .bottomBar) { - PostGridBookmarkButtonView() - } - #endif - } + if !manager.tags.isEmpty { + #if os(macOS) + ToolbarItem { + PostGridBookmarkButtonView() } - .navigationTitle("Posts") - .refreshable { - await manager.fetchPosts(page: 1, tags: manager.tags, replace: true) + #else + ToolbarItem(placement: .bottomBar) { + PostGridBookmarkButtonView() } + #endif } + } + .navigationTitle("Posts") + .refreshable { + await manager.fetchPosts(page: 1, tags: manager.tags, replace: true) + } } + } } |