import { ArrowCircleRightIcon } from '@heroicons/react/outline'; import Link from 'next/link'; import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; import type { WatchlistItem } from '../../../server/interfaces/api/discoverInterfaces'; import type { MediaResultsResponse } from '../../../server/interfaces/api/mediaInterfaces'; import type { RequestResultsResponse } from '../../../server/interfaces/api/requestInterfaces'; import { Permission, UserType, useUser } from '../../hooks/useUser'; import PageTitle from '../Common/PageTitle'; import MediaSlider from '../MediaSlider'; import RequestCard from '../RequestCard'; import Slider from '../Slider'; import TmdbTitleCard from '../TitleCard/TmdbTitleCard'; import MovieGenreSlider from './MovieGenreSlider'; import NetworkSlider from './NetworkSlider'; import StudioSlider from './StudioSlider'; import TvGenreSlider from './TvGenreSlider'; const messages = defineMessages({ discover: 'Discover', recentrequests: 'Recent Requests', popularmovies: 'Popular Movies', populartv: 'Popular Series', upcomingtv: 'Upcoming Series', recentlyAdded: 'Recently Added', noRequests: 'No requests.', upcoming: 'Upcoming Movies', trending: 'Trending', plexwatchlist: 'Your Plex Watchlist', }); const Discover = () => { const intl = useIntl(); const { user, hasPermission } = useUser(); const { data: media, error: mediaError } = useSWR( '/api/v1/media?filter=allavailable&take=20&sort=mediaAdded', { revalidateOnMount: true } ); const { data: requests, error: requestError } = useSWR( '/api/v1/request?filter=all&take=10&sort=modified&skip=0', { revalidateOnMount: true, } ); const { data: watchlistItems, error: watchlistError } = useSWR<{ page: number; totalPages: number; totalResults: number; results: WatchlistItem[]; }>(user?.userType === UserType.PLEX ? '/api/v1/discover/watchlist' : null, { revalidateOnMount: true, }); return ( <> {hasPermission([Permission.MANAGE_REQUESTS, Permission.RECENT_VIEW], { type: 'or', }) && ( <>
{intl.formatMessage(messages.recentlyAdded)}
( ))} /> )} ( ))} placeholder={} emptyMessage={intl.formatMessage(messages.noRequests)} /> {(!watchlistItems || !!watchlistItems.results.length) && !watchlistError && ( <> ( ))} /> )} ); }; export default Discover;