diff --git a/JellyfinPlayer tvOS/Components/PortraitItemElement.swift b/JellyfinPlayer tvOS/Components/PortraitItemElement.swift index 37c611ab..e2290ee3 100644 --- a/JellyfinPlayer tvOS/Components/PortraitItemElement.swift +++ b/JellyfinPlayer tvOS/Components/PortraitItemElement.swift @@ -57,6 +57,22 @@ struct PortraitItemElement: View { .opacity(1), alignment: .topTrailing).opacity(1) Text(item.title) .frame(width: 200, height: 30, alignment: .center) + if item.type == "Movie" || item.type == "Series" { + Text("\(String(item.productionYear ?? 0)) • \(item.officialRating ?? "N/A")") + .foregroundColor(.secondary) + .font(.caption) + .fontWeight(.medium) + } else if item.type == "Season" { + Text("\(item.name ?? "") • \(String(item.productionYear ?? 0))") + .foregroundColor(.secondary) + .font(.caption) + .fontWeight(.medium) + } else { + Text("S\(String(item.parentIndexNumber ?? 0)):E\(String(item.indexNumber ?? 0))") + .foregroundColor(.secondary) + .font(.caption) + .fontWeight(.medium) + } } .onChange(of: envFocused) { envFocus in withAnimation(.linear(duration: 0.15)) { diff --git a/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift b/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift index fd59664a..0ca800bd 100644 --- a/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift +++ b/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift @@ -37,7 +37,7 @@ struct ContinueWatchingView: View { } Spacer().frame(width: 45) } - }.frame(height: 330) + }.frame(height: 350) } else { EmptyView() } diff --git a/JellyfinPlayer tvOS/Views/LatestMediaView.swift b/JellyfinPlayer tvOS/Views/LatestMediaView.swift index 4034892a..92be14d8 100644 --- a/JellyfinPlayer tvOS/Views/LatestMediaView.swift +++ b/JellyfinPlayer tvOS/Views/LatestMediaView.swift @@ -48,7 +48,7 @@ struct LatestMediaView: View { } Spacer().frame(width: 45) } - }.frame(height: 396) + }.frame(height: 480) .onAppear(perform: onAppear) } } diff --git a/JellyfinPlayer tvOS/Views/LibraryView.swift b/JellyfinPlayer tvOS/Views/LibraryView.swift index d4f05aeb..ca272c9e 100644 --- a/JellyfinPlayer tvOS/Views/LibraryView.swift +++ b/JellyfinPlayer tvOS/Views/LibraryView.swift @@ -87,8 +87,11 @@ struct LibraryView: View { .frame(maxWidth: .infinity, maxHeight: .infinity) .ignoresSafeArea(.all) } else { - Button { } label: { + VStack { Text("No results.") + Button { } label: { + Text("Reload") + } } } } diff --git a/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift b/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift index 4a78d1cb..9e388718 100644 --- a/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift +++ b/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift @@ -76,7 +76,14 @@ struct MovieLibrariesView: View { .frame(maxWidth: .infinity, maxHeight: .infinity) .ignoresSafeArea(.all) } else { - Text("No results.") + VStack { + Text("No results.") + Button { + print("movieLibraries reload") + } label: { + Text("Reload") + } + } } } } diff --git a/JellyfinPlayer tvOS/Views/NextUpView.swift b/JellyfinPlayer tvOS/Views/NextUpView.swift index 8a61a3e5..3de41d6b 100644 --- a/JellyfinPlayer tvOS/Views/NextUpView.swift +++ b/JellyfinPlayer tvOS/Views/NextUpView.swift @@ -35,7 +35,7 @@ struct NextUpView: View { } Spacer().frame(width: 45) } - }.frame(height: 330) + }.frame(height: 350) .offset(y: -10) } else { EmptyView() diff --git a/JellyfinPlayer tvOS/Views/TVLibrariesView.swift b/JellyfinPlayer tvOS/Views/TVLibrariesView.swift index 725a13d6..3ae4d8df 100644 --- a/JellyfinPlayer tvOS/Views/TVLibrariesView.swift +++ b/JellyfinPlayer tvOS/Views/TVLibrariesView.swift @@ -56,7 +56,9 @@ struct TVLibrariesView: View { GeometryReader { _ in if let item = cell.item { if item.type != "Folder" { - Button {} label: { + Button { + self.tvLibrariesRouter.route(to: \.library, item) + } label: { PortraitItemElement(item: item) } .buttonStyle(PlainNavigationLinkButtonStyle()) @@ -74,7 +76,14 @@ struct TVLibrariesView: View { .frame(maxWidth: .infinity, maxHeight: .infinity) .ignoresSafeArea(.all) } else { - Text("No results.") + VStack { + Text("No results.") + Button { + print("tvLibraries reload") + } label: { + Text("Reload") + } + } } } } diff --git a/Shared/ViewModels/MovieLibrariesViewModel.swift b/Shared/ViewModels/MovieLibrariesViewModel.swift index a7c1a678..17bd4567 100644 --- a/Shared/ViewModels/MovieLibrariesViewModel.swift +++ b/Shared/ViewModels/MovieLibrariesViewModel.swift @@ -51,12 +51,10 @@ final class MovieLibrariesViewModel: ViewModel { self.libraries.append(library) } } + self.rows = self.calculateRows() if self.libraries.count == 1, let library = self.libraries.first { // show library self.router?.route(to: \.library, library) - } else { - // display list of libraries - self.rows = self.calculateRows() } } }) @@ -76,7 +74,6 @@ final class MovieLibrariesViewModel: ViewModel { var rowCells = [LibraryRowCell]() for item in libraries[firstItemIndex..