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.swift130
1 files changed, 65 insertions, 65 deletions
diff --git a/Sora/Views/Post/Details/PostDetailsView.swift b/Sora/Views/Post/Details/PostDetailsView.swift
index ba81b65..a7693a5 100644
--- a/Sora/Views/Post/Details/PostDetailsView.swift
+++ b/Sora/Views/Post/Details/PostDetailsView.swift
@@ -2,116 +2,116 @@ import SwiftUI
struct PostDetailsView: View {
@EnvironmentObject var settings: SettingsManager
- let post: BooruPost
- @ObservedObject var manager: BooruManager
@State private var loadingStage: BooruPostLoadingState = .loadingPreview
private var imageURL: URL? {
+ guard let post = selectedPost.post else { return nil }
+
switch settings.detailViewQuality {
case .preview:
- post.previewURL
+ return post.previewURL
case .sample:
- post.sampleURL
+ return post.sampleURL
case .original:
- post.fileURL
+ return post.fileURL
}
}
@State private var isTagsSheetPresented = false
@Binding var selectedPost: (post: BooruPost?, manager: BooruManager?)
var filteredPosts: [BooruPost] {
- manager.posts
+ selectedPost.manager!.posts
.filter { settings.displayRatings.contains($0.rating) }
}
var body: some View {
- VStack(spacing: 0) {
- #if os(macOS)
+ if let post = selectedPost.post {
+ VStack(spacing: 0) {
+#if os(macOS)
PostDetailsImageView(
url: imageURL,
loadingStage: $loadingStage,
- manager: manager,
- finalLoadingState: .loaded,
- post: post
+ selectedPost: $selectedPost,
+ finalLoadingState: .loaded
) {
PostDetailsImageView(
url: post.previewURL,
loadingStage: $loadingStage,
- manager: manager
+ selectedPost: $selectedPost
)
.id(post.previewURL)
}
.id(imageURL)
- #else
+#else
PostDetailsCarouselView(
posts: filteredPosts,
loadingStage: $loadingStage,
focusedPost: post,
- manager: _manager
+ selectedPost: $selectedPost
)
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
- #endif
+#endif
- if settings.displayDetailsInformationBar {
- VStack(spacing: 5) {
- HStack {
- Text(post.createdAt.formatted())
- .frame(maxWidth: .infinity, alignment: .leading)
+ if settings.displayDetailsInformationBar {
+ VStack(spacing: 5) {
+ HStack {
+ Text(post.createdAt.formatted())
+ .frame(maxWidth: .infinity, alignment: .leading)
- Group {
- switch loadingStage {
- case .loadingPreview:
- Text("Loading Preview…")
+ Group {
+ switch loadingStage {
+ case .loadingPreview:
+ Text("Loading Preview…")
- case .loadingFile:
- Text("Loading \(settings.detailViewQuality.rawValue)…")
+ case .loadingFile:
+ Text("Loading \(settings.detailViewQuality.rawValue)…")
- case .loaded:
- EmptyView()
+ case .loaded:
+ EmptyView()
+ }
}
+ .padding(.trailing, 5)
}
- .padding(.trailing, 5)
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .foregroundStyle(.secondary)
}
- .frame(maxWidth: .infinity, alignment: .leading)
- .foregroundStyle(.secondary)
- }
- .padding(.horizontal, 10)
- .padding(.vertical, 10 / 1.33)
- .textSelection(.enabled)
- .font(.footnote)
- #if os(iOS)
+ .padding(.horizontal, 10)
+ .padding(.vertical, 10 / 1.33)
+ .textSelection(.enabled)
+ .font(.footnote)
+#if os(iOS)
.background(.ultraThinMaterial)
- #else
+#else
.background(.opacity(0.1))
- #endif
- .zIndex(1)
+#endif
+ .zIndex(1)
+ }
}
- }
- .navigationTitle("Details")
- #if os(iOS)
+ .navigationTitle("Details")
+#if os(iOS)
.navigationBarTitleDisplayMode(.inline)
.toolbarBackground(.visible, for: .navigationBar)
.toolbarBackground(.ultraThinMaterial, for: .navigationBar)
- #endif
- .toolbar {
- #if !os(macOS)
- if manager.isLoading || loadingStage != .loaded {
+#endif
+ .toolbar {
+#if !os(macOS)
+ if selectedPost.manager?.isLoading != false || loadingStage != .loaded {
ToolbarItem {
ProgressView()
}
}
- #endif
+#endif
- ToolbarItem {
- Button(action: {
- isTagsSheetPresented.toggle()
- }) {
- Label("Tags", systemImage: "tag")
+ ToolbarItem {
+ Button(action: {
+ isTagsSheetPresented.toggle()
+ }) {
+ Label("Tags", systemImage: "tag")
+ }
}
- }
- #if os(macOS)
+#if os(macOS)
if settings.enableShareShortcut {
ToolbarItem {
ShareLink(item: imageURL!) {
@@ -119,16 +119,16 @@ struct PostDetailsView: View {
}
}
}
- #endif
- }
- .sheet(isPresented: $isTagsSheetPresented) {
- PostDetailsTagsView(
- manager: manager,
- isPresented: $isTagsSheetPresented,
- tags: post.tags,
- selectedPost: $selectedPost
- )
- .frame(minHeight: 250)
+#endif
+ }
+ .sheet(isPresented: $isTagsSheetPresented) {
+ PostDetailsTagsView(
+ isPresented: $isTagsSheetPresented,
+ tags: post.tags,
+ selectedPost: $selectedPost
+ )
+ .frame(minHeight: 250)
+ }
}
}
}