Refactor list view. Fix some images not appearing.

This commit is contained in:
Aiden Vigue 2021-06-23 15:21:44 -04:00
parent 7c9b443bc7
commit d6f6378bda
No known key found for this signature in database
GPG Key ID: B9A09843AB079D5B
2 changed files with 33 additions and 24 deletions

View File

@ -57,26 +57,30 @@ struct LibraryListView: View {
.padding(.bottom, 15) .padding(.bottom, 15)
ForEach(viewModel.libraries, id: \.id) { library in ForEach(viewModel.libraries, id: \.id) { library in
NavigationLink(destination: LazyView { if(library.collectionType ?? "" == "movies" || library.collectionType ?? "" == "tvshows") {
LibraryView(viewModel: .init(parentID: library.id), title: library.name ?? "") NavigationLink(destination: LazyView {
}) { LibraryView(viewModel: .init(parentID: library.id), title: library.name ?? "")
ZStack() { }) {
ImageView(src: library.getPrimaryImage(maxWidth: 500)) ZStack() {
.opacity(0.4) ImageView(src: library.getPrimaryImage(maxWidth: 500), bh: library.getPrimaryImageBlurHash())
HStack() { .opacity(0.4)
Spacer() HStack() {
Text(library.name ?? "") Spacer()
.foregroundColor(.white) Text(library.name ?? "")
.font(.title2) .foregroundColor(.white)
.fontWeight(.semibold) .font(.title2)
Spacer() .fontWeight(.semibold)
}.padding(32) Spacer()
}.background(Color.black) }.padding(32)
.frame(minWidth: 100, maxWidth: .infinity) }.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(.leading, 16)
.padding(.trailing, 16) .padding(.trailing, 16)

View File

@ -49,6 +49,7 @@ extension BaseItemDto {
func getBackdropImage(maxWidth: Int) -> URL { func getBackdropImage(maxWidth: Int) -> URL {
var imageType = "" var imageType = ""
var imageTag = "" var imageTag = ""
var imageItemId = self.id ?? ""
if self.primaryImageAspectRatio ?? 0.0 < 1.0 { if self.primaryImageAspectRatio ?? 0.0 < 1.0 {
imageType = "Backdrop" imageType = "Backdrop"
@ -60,15 +61,16 @@ extension BaseItemDto {
imageTag = self.imageTags?["Primary"] ?? "" imageTag = self.imageTags?["Primary"] ?? ""
} }
if imageTag == "" { if imageTag == "" || imageItemId == "" {
imageType = "Backdrop" imageType = "Backdrop"
if !(self.parentBackdropImageTags?.isEmpty ?? true) { if !(self.parentBackdropImageTags?.isEmpty ?? true) {
imageTag = (self.parentBackdropImageTags ?? [""])[0] imageTag = (self.parentBackdropImageTags ?? [""])[0]
imageItemId = self.parentBackdropItemId ?? ""
} }
} }
let x = UIScreen.main.nativeScale * CGFloat(maxWidth) 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)! return URL(string: urlString)!
} }
@ -92,13 +94,16 @@ extension BaseItemDto {
func getPrimaryImage(maxWidth: Int) -> URL { func getPrimaryImage(maxWidth: Int) -> URL {
let imageType = "Primary" let imageType = "Primary"
var imageTag = self.imageTags?["Primary"] ?? "" var imageTag = self.imageTags?["Primary"] ?? ""
var imageItemId = self.id ?? ""
if imageTag == "" {
if imageTag == "" || imageItemId == "" {
imageTag = self.seriesPrimaryImageTag ?? "" imageTag = self.seriesPrimaryImageTag ?? ""
imageItemId = self.seriesId ?? ""
} }
let x = UIScreen.main.nativeScale * CGFloat(maxWidth) 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)! return URL(string: urlString)!
} }