import Header from '@app/components/Common/Header'; import ListView from '@app/components/Common/ListView'; import PageTitle from '@app/components/Common/PageTitle'; import useDiscover, { encodeURIExtraParams } from '@app/hooks/useDiscover'; import globalMessages from '@app/i18n/globalMessages'; import Error from '@app/pages/_error'; import type { TmdbKeyword } from '@server/api/themoviedb/interfaces'; import type { MovieResult } from '@server/models/Search'; import { useRouter } from 'next/router'; import { defineMessages, useIntl } from 'react-intl'; const messages = defineMessages({ keywordMovies: '{keywordTitle} Movies', }); const DiscoverMovieKeyword = () => { const router = useRouter(); const intl = useIntl(); const { isLoadingInitialData, isEmpty, isLoadingMore, isReachingEnd, titles, fetchMore, error, firstResultData, } = useDiscover( `/api/v1/discover/movies`, { keywords: encodeURIExtraParams(router.query.keywords as string), } ); if (error) { return ; } const title = isLoadingInitialData ? intl.formatMessage(globalMessages.loading) : intl.formatMessage(messages.keywordMovies, { keywordTitle: firstResultData?.keywords .map((k) => `${k.name[0].toUpperCase()}${k.name.substring(1)}`) .join(', '), }); return ( <>
{title}
0) } isReachingEnd={isReachingEnd} onScrollBottom={fetchMore} /> ); }; export default DiscoverMovieKeyword;