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)
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)

View File

@ -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)!
}