From d6f6378bda7307b91723125304da2245f999a7a6 Mon Sep 17 00:00:00 2001 From: Aiden Vigue Date: Wed, 23 Jun 2021 15:21:44 -0400 Subject: [PATCH] Refactor list view. Fix some images not appearing. --- JellyfinPlayer/LibraryListView.swift | 42 +++++++++++++++------------ Shared/Extensions/APIExtensions.swift | 15 ++++++---- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/JellyfinPlayer/LibraryListView.swift b/JellyfinPlayer/LibraryListView.swift index e527841d..9cf11ecd 100644 --- a/JellyfinPlayer/LibraryListView.swift +++ b/JellyfinPlayer/LibraryListView.swift @@ -57,26 +57,30 @@ struct LibraryListView: View { .padding(.bottom, 15) ForEach(viewModel.libraries, id: \.id) { library in - NavigationLink(destination: LazyView { - LibraryView(viewModel: .init(parentID: library.id), title: library.name ?? "") - }) { - ZStack() { - ImageView(src: library.getPrimaryImage(maxWidth: 500)) - .opacity(0.4) - HStack() { - Spacer() - Text(library.name ?? "") - .foregroundColor(.white) - .font(.title2) - .fontWeight(.semibold) - Spacer() - }.padding(32) - }.background(Color.black) - .frame(minWidth: 100, maxWidth: .infinity) + if(library.collectionType ?? "" == "movies" || library.collectionType ?? "" == "tvshows") { + NavigationLink(destination: LazyView { + LibraryView(viewModel: .init(parentID: library.id), title: library.name ?? "") + }) { + ZStack() { + ImageView(src: library.getPrimaryImage(maxWidth: 500), bh: library.getPrimaryImageBlurHash()) + .opacity(0.4) + HStack() { + Spacer() + Text(library.name ?? "") + .foregroundColor(.white) + .font(.title2) + .fontWeight(.semibold) + Spacer() + }.padding(32) + }.background(Color.black) + .frame(minWidth: 100, maxWidth: .infinity) + } + .cornerRadius(10) + .shadow(radius: 5) + .padding(.bottom, 5) + } else { + EmptyView() } - .cornerRadius(10) - .shadow(radius: 5) - .padding(.bottom, 5) } }.padding(.leading, 16) .padding(.trailing, 16) diff --git a/Shared/Extensions/APIExtensions.swift b/Shared/Extensions/APIExtensions.swift index 03d865e5..139842f2 100644 --- a/Shared/Extensions/APIExtensions.swift +++ b/Shared/Extensions/APIExtensions.swift @@ -49,6 +49,7 @@ extension BaseItemDto { func getBackdropImage(maxWidth: Int) -> URL { var imageType = "" var imageTag = "" + var imageItemId = self.id ?? "" if self.primaryImageAspectRatio ?? 0.0 < 1.0 { imageType = "Backdrop" @@ -60,15 +61,16 @@ extension BaseItemDto { imageTag = self.imageTags?["Primary"] ?? "" } - if imageTag == "" { + if imageTag == "" || imageItemId == "" { imageType = "Backdrop" if !(self.parentBackdropImageTags?.isEmpty ?? true) { imageTag = (self.parentBackdropImageTags ?? [""])[0] + imageItemId = self.parentBackdropItemId ?? "" } } let x = UIScreen.main.nativeScale * CGFloat(maxWidth) - let urlString = "\(ServerEnvironment.current.server.baseURI!)/Items/\(self.id ?? "")/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=60&tag=\(imageTag)" + let urlString = "\(ServerEnvironment.current.server.baseURI!)/Items/\(imageItemId)/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=60&tag=\(imageTag)" return URL(string: urlString)! } @@ -92,13 +94,16 @@ extension BaseItemDto { func getPrimaryImage(maxWidth: Int) -> URL { let imageType = "Primary" var imageTag = self.imageTags?["Primary"] ?? "" - - if imageTag == "" { + var imageItemId = self.id ?? "" + + if imageTag == "" || imageItemId == "" { imageTag = self.seriesPrimaryImageTag ?? "" + imageItemId = self.seriesId ?? "" } + let x = UIScreen.main.nativeScale * CGFloat(maxWidth) - let urlString = "\(ServerEnvironment.current.server.baseURI!)/Items/\(self.id ?? "")/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=60&tag=\(imageTag)" + let urlString = "\(ServerEnvironment.current.server.baseURI!)/Items/\(imageItemId)/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=60&tag=\(imageTag)" return URL(string: urlString)! }