summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/Details/PostDetailsView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Views/Post/Details/PostDetailsView.swift')
-rw-r--r--Sora/Views/Post/Details/PostDetailsView.swift43
1 files changed, 25 insertions, 18 deletions
diff --git a/Sora/Views/Post/Details/PostDetailsView.swift b/Sora/Views/Post/Details/PostDetailsView.swift
index 8d62f67..8051cf2 100644
--- a/Sora/Views/Post/Details/PostDetailsView.swift
+++ b/Sora/Views/Post/Details/PostDetailsView.swift
@@ -4,7 +4,11 @@ struct PostDetailsView: View {
@EnvironmentObject var manager: BooruManager
@EnvironmentObject var settings: SettingsManager
let post: BooruPost
+ @Binding var navigationPath: NavigationPath
@State private var loadingStage: BooruPostLoadingState = .loadingPreview
+ @State private var isTagsSheetPresented = false
+ let posts: [BooruPost]?
+
private var imageURL: URL? {
switch settings.detailViewQuality {
case .preview:
@@ -17,11 +21,17 @@ struct PostDetailsView: View {
post.fileURL
}
}
- @State private var isTagsSheetPresented = false
+
+ init(post: BooruPost, navigationPath: Binding<NavigationPath>, posts: [BooruPost]? = nil) {
+ self.post = post
+ self._navigationPath = navigationPath
+ self.posts = posts
+ }
var filteredPosts: [BooruPost] {
- manager.posts
- .filter { settings.displayRatings.contains($0.rating) }
+ let sourcePosts = posts ?? manager.posts
+
+ return sourcePosts.filter { settings.displayRatings.contains($0.rating) }
}
var body: some View {
@@ -110,14 +120,7 @@ struct PostDetailsView: View {
}
#endif
}
- .sheet(
- isPresented: $isTagsSheetPresented,
- onDismiss: {
- Task(priority: .userInitiated) {
- await manager.performSearch(settings: settings)
- }
- }
- ) {
+ .sheet(isPresented: $isTagsSheetPresented) {
if #available(macOS 15.0, *) {
tagsSheetContent()
#if os(macOS)
@@ -131,12 +134,16 @@ struct PostDetailsView: View {
@ViewBuilder
private func tagsSheetContent() -> some View {
- PostDetailsTagsView(isPresented: $isTagsSheetPresented, tags: post.tags)
- #if os(macOS)
- .frame(
- minHeight: (NSScreen.main?.frame.height ?? 1_080) / 2,
- maxHeight: .infinity
- )
- #endif
+ PostDetailsTagsView(
+ isPresented: $isTagsSheetPresented,
+ navigationPath: $navigationPath,
+ tags: post.tags
+ )
+ #if os(macOS)
+ .frame(
+ minHeight: (NSScreen.main?.frame.height ?? 1_080) / 2,
+ maxHeight: .infinity
+ )
+ #endif
}
}