diff options
Diffstat (limited to 'Sora/Views/Post/Details/PostDetailsView.swift')
| -rw-r--r-- | Sora/Views/Post/Details/PostDetailsView.swift | 130 |
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) + } } } } |