import PersonCard from '@app/components/PersonCard'; import TitleCard from '@app/components/TitleCard'; import TmdbTitleCard from '@app/components/TitleCard/TmdbTitleCard'; import { Permission, useUser } from '@app/hooks/useUser'; import useVerticalScroll from '@app/hooks/useVerticalScroll'; import globalMessages from '@app/i18n/globalMessages'; import { MediaStatus } from '@server/constants/media'; import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces'; import type { CollectionResult, MovieResult, PersonResult, TvResult, } from '@server/models/Search'; import { useIntl } from 'react-intl'; type ListViewProps = { items?: (TvResult | MovieResult | PersonResult | CollectionResult)[]; plexItems?: WatchlistItem[]; isEmpty?: boolean; isLoading?: boolean; isReachingEnd?: boolean; onScrollBottom: () => void; mutateParent?: () => void; }; const ListView = ({ items, isEmpty, isLoading, onScrollBottom, isReachingEnd, plexItems, mutateParent, }: ListViewProps) => { const intl = useIntl(); const { hasPermission } = useUser(); useVerticalScroll(onScrollBottom, !isLoading && !isEmpty && !isReachingEnd); const blocklistVisibility = hasPermission( [Permission.MANAGE_BLOCKLIST, Permission.VIEW_BLOCKLIST], { type: 'or' } ); return ( <> {isEmpty && (