import { useQuery } from "@tanstack/react-query"; import { router, useSegments } from "expo-router"; import type React from "react"; import { useCallback } from "react"; import { TouchableOpacity, type ViewProps } from "react-native"; import GenericSlideCard from "@/components/jellyseerr/discover/GenericSlideCard"; import Slide, { type SlideProps } from "@/components/jellyseerr/discover/Slide"; import { Endpoints, useJellyseerr } from "@/hooks/useJellyseerr"; import { DiscoverSliderType } from "@/utils/jellyseerr/server/constants/discover"; import type { GenreSliderItem } from "@/utils/jellyseerr/server/interfaces/api/discoverInterfaces"; import { genreColorMap } from "@/utils/jellyseerr/src/components/Discover/constants"; 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 } = 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;