From cf5e311ed77dcead1f92fb00a32615e8d465c6c5 Mon Sep 17 00:00:00 2001 From: Aiden Vigue Date: Thu, 10 Jun 2021 08:49:27 -0700 Subject: [PATCH] don't force unwrap optionals that may be nil --- JellyfinPlayer/EpisodeItemView.swift | 4 ++-- JellyfinPlayer/LatestMediaView.swift | 24 ++++++++---------------- JellyfinPlayer/LibraryView.swift | 7 +++++++ JellyfinPlayer/MovieItemView.swift | 4 ++-- JellyfinPlayer/SeasonItemView.swift | 2 +- JellyfinPlayer/SeriesItemView.swift | 4 ++-- 6 files changed, 22 insertions(+), 23 deletions(-) diff --git a/JellyfinPlayer/EpisodeItemView.swift b/JellyfinPlayer/EpisodeItemView.swift index 464d10dc..fd1ae110 100644 --- a/JellyfinPlayer/EpisodeItemView.swift +++ b/JellyfinPlayer/EpisodeItemView.swift @@ -70,8 +70,8 @@ struct EpisodeItemView: View { .resizable() } .contentMode(.aspectFill) - .opacity(0.3) - .shadow(radius: 5) + .opacity(0.4) + .blur(radius: 2.0) } var portraitHeaderOverlayView: some View { diff --git a/JellyfinPlayer/LatestMediaView.swift b/JellyfinPlayer/LatestMediaView.swift index 26bd2f63..8db70053 100644 --- a/JellyfinPlayer/LatestMediaView.swift +++ b/JellyfinPlayer/LatestMediaView.swift @@ -42,13 +42,13 @@ struct LatestMediaView: View { LazyHStack() { Spacer().frame(width:16) ForEach(items, id: \.id) { item in - if(item.type == "Series" || item.type == "Movie" || item.type == "Episode") { + if(item.type == "Series" || item.type == "Movie") { NavigationLink(destination: ItemView(item: item)) { VStack(alignment: .leading) { Spacer().frame(height:10) - LazyImage(source: (item.type != "Episode" ? item.getPrimaryImage(baseURL: globalData.server.baseURI!, maxWidth: 100) : item.getSeriesPrimaryImage(baseURL: globalData.server.baseURI!, maxWidth: 100))) + LazyImage(source: item.getSeriesPrimaryImage(baseURL: globalData.server.baseURI!, maxWidth: 100)) .placeholderAndFailure { - Image(uiImage: UIImage(blurHash: item.getPrimaryImageBlurHash(), size: CGSize(width: 16, height: 20))!) + Image(uiImage: UIImage(blurHash: item.getSeriesPrimaryImageBlurHash(), size: CGSize(width: 16, height: 20))!) .resizable() .frame(width: 100, height: 150) .cornerRadius(10) @@ -61,19 +61,11 @@ struct LatestMediaView: View { .fontWeight(.semibold) .foregroundColor(.primary) .lineLimit(1) - if(item.type == "Episode") { - Text("S\(String(item.parentIndexNumber ?? 0)):E\(String(item.indexNumber ?? 0))") - .font(.caption) - .fontWeight(.semibold) - .foregroundColor(.secondary) - .lineLimit(1) - } else { - Text(String(item.productionYear ?? 0)) - .font(.caption) - .fontWeight(.semibold) - .foregroundColor(.secondary) - .lineLimit(1) - } + Text(String(item.productionYear ?? 0)) + .font(.caption) + .fontWeight(.semibold) + .foregroundColor(.secondary) + .lineLimit(1) }.frame(width: 100) Spacer().frame(width: 15) } diff --git a/JellyfinPlayer/LibraryView.swift b/JellyfinPlayer/LibraryView.swift index 2d00b364..df579adf 100644 --- a/JellyfinPlayer/LibraryView.swift +++ b/JellyfinPlayer/LibraryView.swift @@ -27,6 +27,7 @@ struct LibraryView: View { @State private var totalPages: Int = 0; @State private var currentPage: Int = 0; @State private var isSearching: String? = ""; + @State private var viewDidLoad: Bool = false; init(usingParentID: String, title: String) { self.usingParentID = usingParentID @@ -59,6 +60,11 @@ struct LibraryView: View { func onAppear() { recalcTracks() + + if(viewDidLoad) { + return + } + isLoading = true items = [] @@ -72,6 +78,7 @@ struct LibraryView: View { totalPages = Int(x) items = response.items ?? [] isLoading = false + viewDidLoad = true }) .store(in: &globalData.pendingAPIRequests) } diff --git a/JellyfinPlayer/MovieItemView.swift b/JellyfinPlayer/MovieItemView.swift index d051595a..691c6b7f 100644 --- a/JellyfinPlayer/MovieItemView.swift +++ b/JellyfinPlayer/MovieItemView.swift @@ -70,8 +70,8 @@ struct MovieItemView: View { .resizable() } .contentMode(.aspectFill) - .opacity(0.3) - .shadow(radius: 5) + .opacity(0.4) + .blur(radius: 2.0) } var portraitHeaderOverlayView: some View { diff --git a/JellyfinPlayer/SeasonItemView.swift b/JellyfinPlayer/SeasonItemView.swift index 8215b536..1af2b636 100644 --- a/JellyfinPlayer/SeasonItemView.swift +++ b/JellyfinPlayer/SeasonItemView.swift @@ -29,7 +29,7 @@ struct SeasonItemView: View { } DispatchQueue.global(qos: .userInitiated).async { - TvShowsAPI.getEpisodes(seriesId: item.seriesId!, userId: globalData.user.user_id!, fields: [.primaryImageAspectRatio,.seriesPrimaryImage,.seasonUserData,.overview,.genres,.people], seasonId: item.id!) + TvShowsAPI.getEpisodes(seriesId: item.seriesId ?? "", userId: globalData.user.user_id!, fields: [.primaryImageAspectRatio,.seriesPrimaryImage,.seasonUserData,.overview,.genres,.people], seasonId: item.id ?? "") .sink(receiveCompletion: { completion in HandleAPIRequestCompletion(globalData: globalData, completion: completion) isLoading = false diff --git a/JellyfinPlayer/SeriesItemView.swift b/JellyfinPlayer/SeriesItemView.swift index 55992c05..335d9bad 100644 --- a/JellyfinPlayer/SeriesItemView.swift +++ b/JellyfinPlayer/SeriesItemView.swift @@ -28,7 +28,7 @@ struct SeriesItemView: View { isLoading = true DispatchQueue.global(qos: .userInitiated).async { - TvShowsAPI.getSeasons(seriesId: item.id ?? "", fields: [.primaryImageAspectRatio,.seriesPrimaryImage,.seasonUserData,.overview,.genres,.people]) + TvShowsAPI.getSeasons(seriesId: item.id ?? "", fields: [.primaryImageAspectRatio,.seriesPrimaryImage,.seasonUserData,.overview,.genres,.people], isMissing: false) .sink(receiveCompletion: { completion in HandleAPIRequestCompletion(globalData: globalData, completion: completion) }, receiveValue: { response in @@ -74,7 +74,7 @@ struct SeriesItemView: View { .fontWeight(.semibold) .foregroundColor(.primary) .lineLimit(1) - if(season.productionYear != 0) { + if(season.productionYear != nil) { Text(String(season.productionYear!)) .foregroundColor(.secondary) .font(.caption)