summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/PostGridView.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-22 00:07:44 -0800
committerFuwn <[email protected]>2025-02-22 00:07:44 -0800
commite42fa12dafe264c665d2574c93b54ddafe7f2e1f (patch)
treea362b3b78ea97dc28ce5cc3682801bf89688f546 /Sora/Views/Post/PostGridView.swift
parentfeat: Development commit (diff)
downloadsora-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.swift171
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)
+ }
}
+ }
}