From b232bebd735913ac9508c453278181b12a970c7f Mon Sep 17 00:00:00 2001 From: herrrta <73949927+herrrta@users.noreply.github.com> Date: Mon, 6 Jan 2025 12:06:58 -0500 Subject: [PATCH] [Jellyseerr] Show genre/studio/network discover sliders implements #326 --- .../jellyseerr/[personId].tsx | 247 ------------------ .../jellyseerr/company/[companyId].tsx | 136 ++++++++++ .../jellyseerr/genre/[genreId].tsx | 128 +++++++++ .../jellyseerr/person/[personId].tsx | 151 +++++++++++ app/(auth)/(tabs)/(search)/_layout.tsx | 4 +- bun.lockb | Bin 594152 -> 592269 bytes components/ParallaxPage.tsx | 13 +- components/jellyseerr/JellyseerrIndexPage.tsx | 12 +- components/jellyseerr/ParallaxSlideShow.tsx | 155 +++++++++++ components/jellyseerr/PersonPoster.tsx | 2 +- .../jellyseerr/discover/CompanySlide.tsx | 41 +++ components/jellyseerr/discover/Discover.tsx | 47 ++++ .../jellyseerr/discover/GenericSlideCard.tsx | 59 +++++ components/jellyseerr/discover/GenreSlide.tsx | 56 ++++ .../MovieTvSlide.tsx} | 59 ++--- components/jellyseerr/discover/Slide.tsx | 55 ++++ hooks/useJellyseerr.ts | 22 +- utils/jellyseerr | 2 +- 18 files changed, 887 insertions(+), 302 deletions(-) delete mode 100644 app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/[personId].tsx create mode 100644 app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/company/[companyId].tsx create mode 100644 app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/genre/[genreId].tsx create mode 100644 app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/person/[personId].tsx create mode 100644 components/jellyseerr/ParallaxSlideShow.tsx create mode 100644 components/jellyseerr/discover/CompanySlide.tsx create mode 100644 components/jellyseerr/discover/Discover.tsx create mode 100644 components/jellyseerr/discover/GenericSlideCard.tsx create mode 100644 components/jellyseerr/discover/GenreSlide.tsx rename components/jellyseerr/{DiscoverSlide.tsx => discover/MovieTvSlide.tsx} (58%) create mode 100644 components/jellyseerr/discover/Slide.tsx diff --git a/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/[personId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/[personId].tsx deleted file mode 100644 index 5a930982..00000000 --- a/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/[personId].tsx +++ /dev/null @@ -1,247 +0,0 @@ -import { - router, - useLocalSearchParams, - useNavigation, - useSegments, -} from "expo-router"; -import React, { - useCallback, - useEffect, - useMemo, - useRef, - useState, -} from "react"; -import { TouchableOpacity, View } from "react-native"; -import { useQuery } from "@tanstack/react-query"; -import { useJellyseerr } from "@/hooks/useJellyseerr"; -import { useSafeAreaInsets } from "react-native-safe-area-context"; -import { ParallaxScrollView } from "@/components/ParallaxPage"; -import { Text } from "@/components/common/Text"; -import { Animated } from "react-native"; -import { Image } from "expo-image"; -import { OverviewText } from "@/components/OverviewText"; -import { orderBy } from "lodash"; -import { FlashList } from "@shopify/flash-list"; -import { PersonCreditCast } from "@/utils/jellyseerr/server/models/Person"; -import Poster from "@/components/posters/Poster"; -import JellyseerrMediaIcon from "@/components/jellyseerr/JellyseerrMediaIcon"; - -const ANIMATION_ENTER = 250; -const ANIMATION_EXIT = 250; -const BACKDROP_DURATION = 5000; - -export default function page() { - const insets = useSafeAreaInsets(); - const local = useLocalSearchParams(); - const segments = useSegments(); - const { jellyseerrApi, jellyseerrUser } = useJellyseerr(); - - const { personId } = local as { personId: string }; - const from = segments[2]; - - const [currentIndex, setCurrentIndex] = useState(0); - const fadeAnim = useRef(new Animated.Value(0)).current; - - const { data, isLoading, isFetching } = useQuery({ - queryKey: ["jellyseerr", "person", personId], - queryFn: async () => ({ - details: await jellyseerrApi?.personDetails(personId), - combinedCredits: await jellyseerrApi?.personCombinedCredits(personId), - }), - enabled: !!jellyseerrApi && !!personId, - }); - - const locale = useMemo(() => { - return jellyseerrUser?.settings?.locale || "en"; - }, [jellyseerrUser]); - - const region = useMemo( - () => jellyseerrUser?.settings?.region || "US", - [jellyseerrUser] - ); - - const castedRoles: PersonCreditCast[] = useMemo( - () => - orderBy( - data?.combinedCredits?.cast, - ["voteCount", "voteAverage"], - "desc" - ), - [data?.combinedCredits] - ); - - const backdrops = useMemo( - () => castedRoles.map((c) => c.backdropPath), - [data?.combinedCredits] - ); - - const enterAnimation = useCallback( - () => - Animated.timing(fadeAnim, { - toValue: 1, - duration: ANIMATION_ENTER, - useNativeDriver: true, - }), - [fadeAnim] - ); - - const exitAnimation = useCallback( - () => - Animated.timing(fadeAnim, { - toValue: 0, - duration: ANIMATION_EXIT, - useNativeDriver: true, - }), - [fadeAnim] - ); - - useEffect(() => { - if (backdrops?.length) { - enterAnimation().start(); - const intervalId = setInterval(() => { - exitAnimation().start((end) => { - if (end.finished) - setCurrentIndex((prevIndex) => (prevIndex + 1) % backdrops?.length); - }); - }, BACKDROP_DURATION); - - return () => clearInterval(intervalId); - } - }, [backdrops, enterAnimation, exitAnimation, setCurrentIndex, currentIndex]); - - const viewDetails = (credit: PersonCreditCast) => { - router.push({ - //@ts-ignore - pathname: `/(auth)/(tabs)/${from}/jellyseerr/page`, - //@ts-ignore - params: { - ...credit, - mediaTitle: credit.title, - releaseYear: new Date(credit.releaseDate).getFullYear(), - canRequest: "false", - posterSrc: jellyseerrApi?.imageProxy( - credit.posterPath, - "w300_and_h450_face" - ), - }, - }); - }; - - return ( - - - } - logo={ - - } - > - - - - - {data?.details?.name} - - - Born{" "} - {new Date(data?.details?.birthday!!).toLocaleDateString( - `${locale}-${region}`, - { - year: "numeric", - month: "long", - day: "numeric", - } - )}{" "} - | {data?.details?.placeOfBirth} - - - - - - - - - No results - - - } - contentInsetAdjustmentBehavior="automatic" - ListHeaderComponent={ - Appearances - } - renderItem={({ item }) => ( - viewDetails(item)} - > - - - {/*{item.title}*/} - {item.character && ( - - as {item.character} - - )} - - )} - keyExtractor={(item) => item.id.toString()} - estimatedItemSize={255} - numColumns={3} - contentContainerStyle={{ paddingBottom: 24 }} - ItemSeparatorComponent={() => } - /> - - - - - ); -} diff --git a/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/company/[companyId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/company/[companyId].tsx new file mode 100644 index 00000000..02762a51 --- /dev/null +++ b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/company/[companyId].tsx @@ -0,0 +1,136 @@ +import {router, useLocalSearchParams, useSegments,} from "expo-router"; +import React, {useMemo,} from "react"; +import {TouchableOpacity} from "react-native"; +import {useInfiniteQuery} from "@tanstack/react-query"; +import {Endpoints, useJellyseerr} from "@/hooks/useJellyseerr"; +import {Text} from "@/components/common/Text"; +import {Image} from "expo-image"; +import Poster from "@/components/posters/Poster"; +import JellyseerrMediaIcon from "@/components/jellyseerr/JellyseerrMediaIcon"; +import {DiscoverSliderType} from "@/utils/jellyseerr/server/constants/discover"; +import ParallaxSlideShow from "@/components/jellyseerr/ParallaxSlideShow"; +import {MovieResult, Results, TvResult} from "@/utils/jellyseerr/server/models/Search"; +import {COMPANY_LOGO_IMAGE_FILTER} from "@/utils/jellyseerr/src/components/Discover/NetworkSlider"; +import {uniqBy} from "lodash"; + +export default function page() { + const local = useLocalSearchParams(); + const segments = useSegments(); + const {jellyseerrApi} = useJellyseerr(); + + const from = segments[2]; + const {companyId, name, image, type} = local as unknown as { + companyId: string, + name: string, + image: string, + type: DiscoverSliderType + }; + + const {data, fetchNextPage, hasNextPage} = useInfiniteQuery({ + queryKey: ["jellyseerr", "company", type, companyId], + queryFn: async ({pageParam}) => { + let params: any = { + page: Number(pageParam), + }; + + return jellyseerrApi?.discover( + ( + type == DiscoverSliderType.NETWORKS + ? Endpoints.DISCOVER_TV_NETWORK + : Endpoints.DISCOVER_MOVIES_STUDIO + ) + `/${companyId}`, + params + ) + }, + enabled: !!jellyseerrApi && !!companyId, + initialPageParam: 1, + getNextPageParam: (lastPage, pages) => + (lastPage?.page || pages?.findLast((p) => p?.results.length)?.page || 1) + + 1, + staleTime: 0, + }); + + const flatData = useMemo( + () => uniqBy(data?.pages?.filter((p) => p?.results.length).flatMap((p) => p?.results ?? []), "id")?? [], + [data] + ); + + const backdrops = useMemo( + () => jellyseerrApi + ? flatData.map((r) => jellyseerrApi.imageProxy((r as TvResult | MovieResult).backdropPath, "w1920_and_h800_multi_faces")) + : [], + [jellyseerrApi, flatData] + ); + + const viewDetails = (result: Results) => { + router.push({ + //@ts-ignore + pathname: `/(auth)/(tabs)/${from}/jellyseerr/page`, + //@ts-ignore + params: { + ...result, + mediaTitle: getName(result), + releaseYear: getYear(result), + canRequest: "false", + posterSrc: jellyseerrApi?.imageProxy( + (result as MovieResult | TvResult).posterPath, + "w300_and_h450_face" + ), + }, + }); + }; + + const getName = (result: Results) => { + return (result as TvResult).name || (result as MovieResult).title + } + + const getYear = (result: Results) => { + return new Date((result as TvResult).firstAirDate || (result as MovieResult).releaseDate).getFullYear() + } + + return ( + item.id.toString()} + onEndReached={() => { + if (hasNextPage) { + fetchNextPage() + } + }} + logo={ + + } + renderItem={(item, index) => ( + viewDetails(item)} + > + + + {getName(item)} + {getYear(item)} + + )} + /> + ); +} diff --git a/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/genre/[genreId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/genre/[genreId].tsx new file mode 100644 index 00000000..34a4fc7b --- /dev/null +++ b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/genre/[genreId].tsx @@ -0,0 +1,128 @@ +import {router, useLocalSearchParams, useSegments,} from "expo-router"; +import React, {useMemo,} from "react"; +import {TouchableOpacity} from "react-native"; +import {useInfiniteQuery} from "@tanstack/react-query"; +import {Endpoints, useJellyseerr} from "@/hooks/useJellyseerr"; +import {Text} from "@/components/common/Text"; +import Poster from "@/components/posters/Poster"; +import JellyseerrMediaIcon from "@/components/jellyseerr/JellyseerrMediaIcon"; +import {DiscoverSliderType} from "@/utils/jellyseerr/server/constants/discover"; +import ParallaxSlideShow from "@/components/jellyseerr/ParallaxSlideShow"; +import {MovieResult, Results, TvResult} from "@/utils/jellyseerr/server/models/Search"; +import {uniqBy} from "lodash"; +import {textShadowStyle} from "@/components/jellyseerr/discover/GenericSlideCard"; + +export default function page() { + const local = useLocalSearchParams(); + const segments = useSegments(); + const {jellyseerrApi} = useJellyseerr(); + + const from = segments[2]; + const {genreId, name, type} = local as unknown as { + genreId: string, + name: string, + type: DiscoverSliderType + }; + + const {data, fetchNextPage, hasNextPage} = useInfiniteQuery({ + queryKey: ["jellyseerr", "company", type, genreId], + queryFn: async ({pageParam}) => { + let params: any = { + page: Number(pageParam), + genre: genreId + }; + + return jellyseerrApi?.discover( + type == DiscoverSliderType.MOVIE_GENRES + ? Endpoints.DISCOVER_MOVIES + : Endpoints.DISCOVER_TV, + params + ) + }, + enabled: !!jellyseerrApi && !!genreId, + initialPageParam: 1, + getNextPageParam: (lastPage, pages) => + (lastPage?.page || pages?.findLast((p) => p?.results.length)?.page || 1) + + 1, + staleTime: 0, + }); + + const flatData = useMemo( + () => uniqBy(data?.pages?.filter((p) => p?.results.length).flatMap((p) => p?.results ?? []), "id")?? [], + [data] + ); + + const backdrops = useMemo( + () => jellyseerrApi + ? flatData.map((r) => jellyseerrApi.imageProxy((r as TvResult | MovieResult).backdropPath, "w1920_and_h800_multi_faces")) + : [], + [jellyseerrApi, flatData] + ); + + const viewDetails = (result: Results) => { + router.push({ + //@ts-ignore + pathname: `/(auth)/(tabs)/${from}/jellyseerr/page`, + //@ts-ignore + params: { + ...result, + mediaTitle: getName(result), + releaseYear: getYear(result), + canRequest: "false", + posterSrc: jellyseerrApi?.imageProxy( + (result as MovieResult | TvResult).posterPath, + "w300_and_h450_face" + ), + }, + }); + }; + + const getName = (result: Results) => { + return (result as TvResult).name || (result as MovieResult).title + } + + const getYear = (result: Results) => { + return new Date((result as TvResult).firstAirDate || (result as MovieResult).releaseDate).getFullYear() + } + + return ( + item.id.toString()} + onEndReached={() => { + if (hasNextPage) { + fetchNextPage() + } + }} + logo={ + + {name} + + } + renderItem={(item, index) => ( + viewDetails(item)} + > + + + {getName(item)} + {getYear(item)} + + )} + /> + ); +} diff --git a/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/person/[personId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/person/[personId].tsx new file mode 100644 index 00000000..84f59f4b --- /dev/null +++ b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/person/[personId].tsx @@ -0,0 +1,151 @@ +import { + router, + useLocalSearchParams, + useSegments, +} from "expo-router"; +import React, { useMemo } from "react"; +import { TouchableOpacity } from "react-native"; +import { useQuery } from "@tanstack/react-query"; +import { useJellyseerr } from "@/hooks/useJellyseerr"; +import { Text } from "@/components/common/Text"; +import { Image } from "expo-image"; +import { OverviewText } from "@/components/OverviewText"; +import { orderBy } from "lodash"; +import { PersonCreditCast } from "@/utils/jellyseerr/server/models/Person"; +import Poster from "@/components/posters/Poster"; +import JellyseerrMediaIcon from "@/components/jellyseerr/JellyseerrMediaIcon"; +import ParallaxSlideShow from "@/components/jellyseerr/ParallaxSlideShow"; + +export default function page() { + const local = useLocalSearchParams(); + const segments = useSegments(); + const { jellyseerrApi, jellyseerrUser } = useJellyseerr(); + + const { personId } = local as { personId: string }; + const from = segments[2]; + + const { data, isLoading, isFetching } = useQuery({ + queryKey: ["jellyseerr", "person", personId], + queryFn: async () => ({ + details: await jellyseerrApi?.personDetails(personId), + combinedCredits: await jellyseerrApi?.personCombinedCredits(personId), + }), + enabled: !!jellyseerrApi && !!personId, + }); + + const locale = useMemo(() => { + return jellyseerrUser?.settings?.locale || "en"; + }, [jellyseerrUser]); + + const region = useMemo( + () => jellyseerrUser?.settings?.region || "US", + [jellyseerrUser] + ); + + const castedRoles: PersonCreditCast[] = useMemo( + () => + orderBy( + data?.combinedCredits?.cast, + ["voteCount", "voteAverage"], + "desc" + ), + [data?.combinedCredits] + ); + const backdrops = useMemo( + () => jellyseerrApi + ? castedRoles.map((c) => jellyseerrApi.imageProxy(c.backdropPath, "w1920_and_h800_multi_faces")) + : [], + [jellyseerrApi, data?.combinedCredits] + ); + + const viewDetails = (credit: PersonCreditCast) => { + router.push({ + //@ts-ignore + pathname: `/(auth)/(tabs)/${from}/jellyseerr/page`, + //@ts-ignore + params: { + ...credit, + mediaTitle: credit.title, + releaseYear: new Date(credit.releaseDate).getFullYear(), + canRequest: "false", + posterSrc: jellyseerrApi?.imageProxy( + credit.posterPath, + "w300_and_h450_face" + ), + }, + }); + }; + + return ( + item.id.toString()} + logo={ + + } + HeaderContent={() => ( + <> + + {data?.details?.name} + + + Born{" "} + {new Date(data?.details?.birthday!!).toLocaleDateString( + `${locale}-${region}`, + { + year: "numeric", + month: "long", + day: "numeric", + } + )}{" "} + | {data?.details?.placeOfBirth} + + + )} + MainContent={() => ( + + )} + renderItem={(item, index) => ( + viewDetails(item)} + > + + + {item.character && ( + + as {item.character} + + )} + + )} + /> + ); +} diff --git a/app/(auth)/(tabs)/(search)/_layout.tsx b/app/(auth)/(tabs)/(search)/_layout.tsx index 1119e2a4..1f6a3c8b 100644 --- a/app/(auth)/(tabs)/(search)/_layout.tsx +++ b/app/(auth)/(tabs)/(search)/_layout.tsx @@ -36,7 +36,9 @@ export default function SearchLayout() { }} /> - + + + ); } diff --git a/bun.lockb b/bun.lockb index 3a1947ce30c440a8d00177577d1bbabe3f3ebd0e..ce47c71ee7edf7cbb7368deee0e1c1e12a8774a9 100755 GIT binary patch delta 118774 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
wk9ph~socSzrc)jIx* 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 U%&EaKi=GU*oc<}t;-1g{0TZ3<%m4rY delta 119525 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 diff --git a/components/ParallaxPage.tsx b/components/ParallaxPage.tsx index daebca6b..5d7b28e0 100644 --- a/components/ParallaxPage.tsx +++ b/components/ParallaxPage.tsx @@ -1,6 +1,6 @@ import { LinearGradient } from "expo-linear-gradient"; import { type PropsWithChildren, type ReactElement } from "react"; -import { View, ViewProps } from "react-native"; +import {NativeScrollEvent, NativeSyntheticEvent, View, ViewProps} from "react-native"; import Animated, { interpolate, useAnimatedRef, @@ -13,6 +13,7 @@ interface Props extends ViewProps { logo?: ReactElement; episodePoster?: ReactElement; headerHeight?: number; + onEndReached?: (() => void) | null | undefined; } export const ParallaxScrollView: React.FC> = ({ @@ -21,6 +22,7 @@ export const ParallaxScrollView: React.FC> = ({ episodePoster, headerHeight = 400, logo, + onEndReached, ...props }: Props) => { const scrollRef = useAnimatedRef(); @@ -47,6 +49,11 @@ export const ParallaxScrollView: React.FC> = ({ }; }); + + function isCloseToBottom({layoutMeasurement, contentOffset, contentSize}: NativeScrollEvent) { + return layoutMeasurement.height + contentOffset.y >= contentSize.height - 20; + } + return ( > = ({ }} ref={scrollRef} scrollEventThrottle={16} + onScroll={e => { + if (isCloseToBottom(e.nativeEvent)) + onEndReached?.() + }} > {logo && ( = ({ searchQuery }) => { if (!searchQuery.length) return ( - {sortBy?.( - jellyseerrDiscoverSettings?.filter((s) => s.enabled), - "order" - ).map((slide) => ( - - ))} + ); diff --git a/components/jellyseerr/ParallaxSlideShow.tsx b/components/jellyseerr/ParallaxSlideShow.tsx new file mode 100644 index 00000000..1e3d3f4f --- /dev/null +++ b/components/jellyseerr/ParallaxSlideShow.tsx @@ -0,0 +1,155 @@ +import React, { + PropsWithChildren, + useCallback, + useEffect, + useRef, + useState, +} from "react"; +import {Dimensions, View, ViewProps} from "react-native"; +import { useSafeAreaInsets } from "react-native-safe-area-context"; +import { ParallaxScrollView } from "@/components/ParallaxPage"; +import { Text } from "@/components/common/Text"; +import { Animated } from "react-native"; +import { FlashList } from "@shopify/flash-list"; +import {useFocusEffect} from "expo-router"; + +const ANIMATION_ENTER = 250; +const ANIMATION_EXIT = 250; +const BACKDROP_DURATION = 5000; + +type Render = React.ComponentType + | React.ReactElement + | null + | undefined; + +interface Props { + data: T[] + images: string[]; + logo?: React.ReactElement; + HeaderContent?: () => React.ReactElement; + MainContent?: () => React.ReactElement; + listHeader: string; + renderItem: (item: T, index: number) => Render; + keyExtractor: (item: T) => string; + onEndReached?: (() => void) | null | undefined; +} + +const ParallaxSlideShow = ({ + data, + images, + logo, + HeaderContent, + MainContent, + listHeader, + renderItem, + keyExtractor, + onEndReached, + ...props +}: PropsWithChildren & ViewProps> +) => { + const insets = useSafeAreaInsets(); + + const [currentIndex, setCurrentIndex] = useState(0); + const [onEnd, setOnEnd] = useState(true); + const fadeAnim = useRef(new Animated.Value(0)).current; + + const enterAnimation = useCallback( + () => + Animated.timing(fadeAnim, { + toValue: 1, + duration: ANIMATION_ENTER, + useNativeDriver: true, + }), + [fadeAnim] + ); + + const exitAnimation = useCallback( + () => + Animated.timing(fadeAnim, { + toValue: 0, + duration: ANIMATION_EXIT, + useNativeDriver: true, + }), + [fadeAnim] + ); + + useEffect(() => { + if (images?.length) { + enterAnimation().start(); + const intervalId = setInterval(() => { + exitAnimation().start((end) => { + if (end.finished) + setCurrentIndex((prevIndex) => (prevIndex + 1) % images?.length); + }); + }, BACKDROP_DURATION); + + return () => clearInterval(intervalId); + } + }, [images, enterAnimation, exitAnimation, setCurrentIndex, currentIndex]); + + return ( + + + } + logo={logo} + > + + + + {HeaderContent && HeaderContent()} + + + {MainContent && MainContent()} + + + + No results + + + } + contentInsetAdjustmentBehavior="automatic" + ListHeaderComponent={ + {listHeader} + } + nestedScrollEnabled + showsVerticalScrollIndicator={false} + //@ts-ignore + renderItem={({ item, index}) => renderItem(item, index)} + keyExtractor={keyExtractor} + numColumns={3} + estimatedItemSize={214} + ItemSeparatorComponent={() => } + /> + + + + + ); +} + +export default ParallaxSlideShow; \ No newline at end of file diff --git a/components/jellyseerr/PersonPoster.tsx b/components/jellyseerr/PersonPoster.tsx index 57ff9f58..6e7d9aa6 100644 --- a/components/jellyseerr/PersonPoster.tsx +++ b/components/jellyseerr/PersonPoster.tsx @@ -26,7 +26,7 @@ const PersonPoster: React.FC = ({ if (from === "(home)" || from === "(search)" || from === "(libraries)") return ( - router.push(`/(auth)/(tabs)/${from}/jellyseerr/${id}`)}> + router.push(`/(auth)/(tabs)/${from}/jellyseerr/person/${id}`)}> = ({ slide, data, ...props }) => { + const segments = useSegments(); + const { jellyseerrApi } = useJellyseerr(); + const from = segments[2]; + + const navigate = useCallback(({id, image, name}: Network | Studio) => router.push({ + pathname: `/(auth)/(tabs)/${from}/jellyseerr/company/${id}`, + params: {id, image, name, type: slide.type } + }), [slide]); + + return ( + item.id.toString()} + renderItem={(item, index) => ( + navigate(item)}> + + + )} + /> + ); +}; + +export default CompanySlide; diff --git a/components/jellyseerr/discover/Discover.tsx b/components/jellyseerr/discover/Discover.tsx new file mode 100644 index 00000000..6270ad2b --- /dev/null +++ b/components/jellyseerr/discover/Discover.tsx @@ -0,0 +1,47 @@ +import React, {useMemo} from "react"; +import DiscoverSlider from "@/utils/jellyseerr/server/entity/DiscoverSlider"; +import {DiscoverSliderType} from "@/utils/jellyseerr/server/constants/discover"; +import {sortBy} from "lodash"; +import MovieTvSlide from "@/components/jellyseerr/discover/MovieTvSlide"; +import CompanySlide from "@/components/jellyseerr/discover/CompanySlide"; +import {View} from "react-native"; +import {networks} from "@/utils/jellyseerr/src/components/Discover/NetworkSlider"; +import {studios} from "@/utils/jellyseerr/src/components/Discover/StudioSlider"; +import GenreSlide from "@/components/jellyseerr/discover/GenreSlide"; + +interface Props { + sliders?: DiscoverSlider[]; +} +const Discover: React.FC = ({ sliders }) => { + if (!sliders) + return; + + const sortedSliders = useMemo( + () => sortBy(sliders.filter((s) => s.enabled), 'order', 'asc'), + [sliders] + ); + + return ( + + {sortedSliders.map(slide => { + switch (slide.type) { + case DiscoverSliderType.NETWORKS: + return + case DiscoverSliderType.STUDIOS: + return + case DiscoverSliderType.MOVIE_GENRES: + case DiscoverSliderType.TV_GENRES: + return + case DiscoverSliderType.TRENDING: + case DiscoverSliderType.POPULAR_MOVIES: + case DiscoverSliderType.UPCOMING_MOVIES: + case DiscoverSliderType.POPULAR_TV: + case DiscoverSliderType.UPCOMING_TV: + return + } + })} + + ) +}; + +export default Discover; diff --git a/components/jellyseerr/discover/GenericSlideCard.tsx b/components/jellyseerr/discover/GenericSlideCard.tsx new file mode 100644 index 00000000..776d1424 --- /dev/null +++ b/components/jellyseerr/discover/GenericSlideCard.tsx @@ -0,0 +1,59 @@ +import React from "react"; +import {StyleSheet, View, ViewProps} from "react-native"; +import {Image, ImageContentFit} from "expo-image"; +import {Text} from "@/components/common/Text"; +import {LinearGradient} from "expo-linear-gradient"; + +export const textShadowStyle = StyleSheet.create({ + shadow: { + shadowColor: "#000", + shadowOffset: { + width: 1, + height: 1, + }, + shadowOpacity: 1, + shadowRadius: .5, + + elevation: 6, + } +}) + +const GenericSlideCard: React.FC<{id: string; url?: string, title?: string, colors?: string[], contentFit?: ImageContentFit} & ViewProps> = ({ + id, + url, + title, + colors = ['#9333ea', 'transparent'], + contentFit = "contain", + ...props +}) => ( + <> + + + + {title && + + {title} + + } + + + +); + +export default GenericSlideCard; \ No newline at end of file diff --git a/components/jellyseerr/discover/GenreSlide.tsx b/components/jellyseerr/discover/GenreSlide.tsx new file mode 100644 index 00000000..551ee2de --- /dev/null +++ b/components/jellyseerr/discover/GenreSlide.tsx @@ -0,0 +1,56 @@ +import React, {useCallback} from "react"; +import {Endpoints, useJellyseerr,} from "@/hooks/useJellyseerr"; +import {TouchableOpacity, ViewProps} from "react-native"; +import Slide, {SlideProps} from "@/components/jellyseerr/discover/Slide"; +import GenericSlideCard from "@/components/jellyseerr/discover/GenericSlideCard"; +import {router, useSegments} from "expo-router"; +import {useQuery} from "@tanstack/react-query"; +import {DiscoverSliderType} from "@/utils/jellyseerr/server/constants/discover"; +import {genreColorMap} from "@/utils/jellyseerr/src/components/Discover/constants"; +import {GenreSliderItem} from "@/utils/jellyseerr/server/interfaces/api/discoverInterfaces"; + +const GenreSlide: React.FC = ({ slide, ...props }) => { + const segments = useSegments(); + const { jellyseerrApi } = useJellyseerr(); + const from = segments[2]; + + const navigate = useCallback((genre: GenreSliderItem) => router.push({ + pathname: `/(auth)/(tabs)/${from}/jellyseerr/genre/${genre.id}`, + params: {type: slide.type, name: genre.name} + }), [slide]); + + const {data, isFetching, isLoading } = useQuery({ + queryKey: ['jellyseerr', 'discover', slide.type, slide.id], + queryFn: async () => { + return jellyseerrApi?.getGenreSliders( + slide.type == DiscoverSliderType.MOVIE_GENRES + ? Endpoints.MOVIE + : Endpoints.TV + ) + }, + enabled: !!jellyseerrApi + }) + + return ( + data && item.id.toString()} + renderItem={(item, index) => ( + navigate(item)}> + + + )} + /> + ); +}; + +export default GenreSlide; diff --git a/components/jellyseerr/DiscoverSlide.tsx b/components/jellyseerr/discover/MovieTvSlide.tsx similarity index 58% rename from components/jellyseerr/DiscoverSlide.tsx rename to components/jellyseerr/discover/MovieTvSlide.tsx index c7112def..723658c8 100644 --- a/components/jellyseerr/DiscoverSlide.tsx +++ b/components/jellyseerr/discover/MovieTvSlide.tsx @@ -1,5 +1,4 @@ -import React, { useMemo } from "react"; -import DiscoverSlider from "@/utils/jellyseerr/server/entity/DiscoverSlider"; +import React, {useMemo} from "react"; import { DiscoverSliderType } from "@/utils/jellyseerr/server/constants/discover"; import { DiscoverEndpoint, @@ -9,17 +8,13 @@ import { import { useInfiniteQuery } from "@tanstack/react-query"; import { MovieResult, TvResult } from "@/utils/jellyseerr/server/models/Search"; import JellyseerrPoster from "@/components/posters/JellyseerrPoster"; -import { Text } from "@/components/common/Text"; -import { FlashList } from "@shopify/flash-list"; -import { View } from "react-native"; +import Slide, {SlideProps} from "@/components/jellyseerr/discover/Slide"; +import {ViewProps} from "react-native"; -interface Props { - slide: DiscoverSlider; -} -const DiscoverSlide: React.FC = ({ slide }) => { +const MovieTvSlide: React.FC = ({ slide, ...props }) => { const { jellyseerrApi } = useJellyseerr(); - const { data, isFetching, fetchNextPage, hasNextPage } = useInfiniteQuery({ + const { data, fetchNextPage, hasNextPage } = useInfiniteQuery({ queryKey: ["jellyseerr", "discover", slide.id], queryFn: async ({ pageParam }) => { let endpoint: DiscoverEndpoint | undefined = undefined; @@ -62,42 +57,28 @@ const DiscoverSlide: React.FC = ({ slide }) => { }); const flatData = useMemo( - () => - data?.pages?.filter((p) => p?.results.length).flatMap((p) => p?.results), + () => data?.pages?.filter((p) => p?.results.length).flatMap((p) => p?.results), [data] ); return ( flatData && flatData?.length > 0 && ( - - - {DiscoverSliderType[slide.type].toString().toTitle()} - - item!!.id.toString()} - estimatedItemSize={250} - data={flatData} - onEndReachedThreshold={1} - onEndReached={() => { - if (hasNextPage) fetchNextPage(); - }} - renderItem={({ item }) => - item ? ( - - ) : ( - <> - ) - } - /> - + item!!.id.toString()} + onEndReached={() => { + if (hasNextPage) + fetchNextPage() + }} + renderItem={(item) => + + } + /> ) ); }; -export default DiscoverSlide; +export default MovieTvSlide; diff --git a/components/jellyseerr/discover/Slide.tsx b/components/jellyseerr/discover/Slide.tsx new file mode 100644 index 00000000..5a593b41 --- /dev/null +++ b/components/jellyseerr/discover/Slide.tsx @@ -0,0 +1,55 @@ +import React, {PropsWithChildren} from "react"; +import DiscoverSlider from "@/utils/jellyseerr/server/entity/DiscoverSlider"; +import { DiscoverSliderType } from "@/utils/jellyseerr/server/constants/discover"; +import { Text } from "@/components/common/Text"; +import { FlashList } from "@shopify/flash-list"; +import {View, ViewProps} from "react-native"; + +export interface SlideProps { + slide: DiscoverSlider; +} + +interface Props extends SlideProps { + data: T[] + renderItem: (item: T, index: number) => + | React.ComponentType + | React.ReactElement + | null + | undefined; + keyExtractor: (item: T) => string; + onEndReached?: (() => void) | null | undefined; +} + +const Slide = ({ + data, + slide, + renderItem, + keyExtractor, + onEndReached, + ...props +}: PropsWithChildren & ViewProps> +) => { + return ( + + + {DiscoverSliderType[slide.type].toString().toTitle()} + + item ? renderItem(item, index) : <>} + /> + + ); +}; + +export default Slide; diff --git a/hooks/useJellyseerr.ts b/hooks/useJellyseerr.ts index 815510fa..8d3eba30 100644 --- a/hooks/useJellyseerr.ts +++ b/hooks/useJellyseerr.ts @@ -33,6 +33,7 @@ import { PersonDetails, } from "@/utils/jellyseerr/server/models/Person"; import { useQueryClient } from "@tanstack/react-query"; +import {GenreSliderItem} from "@/utils/jellyseerr/server/interfaces/api/discoverInterfaces"; interface SearchParams { query: string; @@ -67,14 +68,20 @@ export enum Endpoints { ISSUE = "/issue", TV = "/tv", SETTINGS = "/settings", + NETWORK = "/network", + STUDIO = "/studio", + GENRE_SLIDER = "/genreslider", DISCOVER = "/discover", DISCOVER_TRENDING = DISCOVER + "/trending", DISCOVER_MOVIES = DISCOVER + "/movies", DISCOVER_TV = DISCOVER + TV, + DISCOVER_TV_NETWORK = DISCOVER + TV + NETWORK, + DISCOVER_MOVIES_STUDIO = DISCOVER + `${MOVIE}s` + STUDIO, AUTH_JELLYFIN = "/auth/jellyfin", } export type DiscoverEndpoint = + | Endpoints.DISCOVER_TV_NETWORK | Endpoints.DISCOVER_TRENDING | Endpoints.DISCOVER_MOVIES | Endpoints.DISCOVER_TV; @@ -181,7 +188,7 @@ export class JellyseerrApi { } async discover( - endpoint: DiscoverEndpoint, + endpoint: DiscoverEndpoint | string, params: any ): Promise { return this.axios @@ -189,6 +196,15 @@ export class JellyseerrApi { .then(({ data }) => data); } + async getGenreSliders( + endpoint: Endpoints.TV | Endpoints.MOVIE, + params: any = undefined + ): Promise { + return this.axios + ?.get(Endpoints.API_V1 + Endpoints.DISCOVER + Endpoints.GENRE_SLIDER + endpoint, { params }) + .then(({ data }) => data); + } + async search(params: SearchParams): Promise { const response = await this.axios?.get( Endpoints.API_V1 + Endpoints.SEARCH, @@ -268,7 +284,7 @@ export class JellyseerrApi { imageProxy( path?: string, - tmdbPath: string = "original", + filter: string = "original", width: number = 1920, quality: number = 75 ) { @@ -276,7 +292,7 @@ export class JellyseerrApi { ? this.axios.defaults.baseURL + `/_next/image?` + new URLSearchParams( - `url=https://image.tmdb.org/t/p/${tmdbPath}/${path}&w=${width}&q=${quality}` + `url=https://image.tmdb.org/t/p/${filter}/${path}&w=${width}&q=${quality}` ).toString() : this.axios?.defaults.baseURL + `/images/overseerr_poster_not_found_logo_top.png`; diff --git a/utils/jellyseerr b/utils/jellyseerr index e69d160e..a15f2ab3 160000 --- a/utils/jellyseerr +++ b/utils/jellyseerr @@ -1 +1 @@ -Subproject commit e69d160e25f0962cd77b01c861ce248050e1ad38 +Subproject commit a15f2ab336936f49e38ea37f8b224da40e12588e