mirror of
https://github.com/p-stream/p-stream.git
synced 2026-03-11 17:55:33 +00:00
add top 10 list
This commit is contained in:
parent
dcbf21f3f9
commit
49e1423a0e
6 changed files with 42 additions and 11 deletions
|
|
@ -1442,7 +1442,8 @@
|
|||
"genreMovies": "{{genre}} Movies",
|
||||
"genreShows": "{{genre}} Shows",
|
||||
"categoryMovies": "{{category}} Movies",
|
||||
"categoryShows": "{{category}} Shows"
|
||||
"categoryShows": "{{category}} Shows",
|
||||
"top10": "Top 10"
|
||||
},
|
||||
"change": "Change",
|
||||
"more": "View more"
|
||||
|
|
|
|||
|
|
@ -303,6 +303,7 @@ export const getParamountTVShows = () => fetchFromTrakt("/paramounttv");
|
|||
// Popular content
|
||||
export const getPopularTVShows = () => fetchFromTrakt("/populartv");
|
||||
export const getPopularMovies = () => fetchFromTrakt("/popularmovies");
|
||||
export const getTop10Movies = () => fetchFromTrakt("/top10");
|
||||
|
||||
// Discovery content used for the featured carousel
|
||||
export const getDiscoverContent = () =>
|
||||
|
|
|
|||
|
|
@ -192,16 +192,20 @@ export function MediaCarousel({
|
|||
]);
|
||||
|
||||
// Fetch media using our hook
|
||||
const { media, sectionTitle, actualContentType } = useDiscoverMedia({
|
||||
contentType,
|
||||
mediaType,
|
||||
id: selectedProviderId || selectedGenreId || selectedRecommendationId,
|
||||
fallbackType: content.fallback,
|
||||
genreName: selectedGenreName,
|
||||
providerName: selectedProviderName,
|
||||
mediaTitle: selectedRecommendationTitle,
|
||||
isCarouselView: true,
|
||||
});
|
||||
const { media, sectionTitle, actualContentType, error, isLoading } =
|
||||
useDiscoverMedia({
|
||||
contentType,
|
||||
mediaType,
|
||||
id: selectedProviderId || selectedGenreId || selectedRecommendationId,
|
||||
fallbackType: content.fallback,
|
||||
genreName: selectedGenreName,
|
||||
providerName: selectedProviderName,
|
||||
mediaTitle: selectedRecommendationTitle,
|
||||
isCarouselView: true,
|
||||
});
|
||||
|
||||
// Hide section if there's an error or no content (after loading is complete)
|
||||
const shouldHide = !isLoading && (error || media.length === 0);
|
||||
|
||||
// Find active button
|
||||
const activeButton = React.useMemo(() => {
|
||||
|
|
@ -304,6 +308,11 @@ export function MediaCarousel({
|
|||
actualContentType,
|
||||
]);
|
||||
|
||||
// Hide the entire section if there's an error or no content
|
||||
if (shouldHide) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="flex items-center justify-between ml-2 md:ml-8 mt-2">
|
||||
|
|
|
|||
|
|
@ -76,6 +76,19 @@ export function DiscoverContent() {
|
|||
);
|
||||
}
|
||||
|
||||
// Top 10 Movies
|
||||
carousels.push(
|
||||
<LazyMediaCarousel
|
||||
key="movie-top10"
|
||||
content={{ type: "top10" }}
|
||||
isTVShow={false}
|
||||
carouselRefs={carouselRefs}
|
||||
onShowDetails={handleShowDetails}
|
||||
moreContent
|
||||
priority={carousels.length < 2}
|
||||
/>,
|
||||
);
|
||||
|
||||
// Latest Releases
|
||||
carousels.push(
|
||||
<LazyMediaCarousel
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import {
|
|||
getParamountTVShows,
|
||||
getPrimeMovies,
|
||||
getPrimeTVShows,
|
||||
getTop10Movies,
|
||||
} from "@/backend/metadata/traktApi";
|
||||
import { paginateResults } from "@/backend/metadata/traktFunctions";
|
||||
import { TMDBContentTypes } from "@/backend/metadata/types/tmdb";
|
||||
|
|
@ -481,6 +482,11 @@ export function useDiscoverMedia({
|
|||
}
|
||||
break;
|
||||
|
||||
case "top10":
|
||||
data = await fetchTraktMedia(getTop10Movies);
|
||||
setSectionTitle(t("discover.carousel.title.top10"));
|
||||
break;
|
||||
|
||||
case "latest":
|
||||
data = await fetchTraktMedia(getLatestReleases);
|
||||
setSectionTitle(t("discover.carousel.title.latestReleases"));
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ export type DiscoverContentType =
|
|||
| "latest"
|
||||
| "latest4k"
|
||||
| "latesttv"
|
||||
| "top10"
|
||||
| "genre"
|
||||
| "provider"
|
||||
| "editorPicks"
|
||||
|
|
|
|||
Loading…
Reference in a new issue