feat(frontend): add option to hide all available items from discovery (#699)

This commit is contained in:
sct
2021-01-20 18:56:45 +09:00
committed by GitHub
parent e1032ff5df
commit 6c1742e94c
19 changed files with 192 additions and 19 deletions

View File

@@ -9,6 +9,8 @@ import ListView from '../Common/ListView';
import { LanguageContext } from '../../context/LanguageContext';
import { defineMessages, FormattedMessage } from 'react-intl';
import Header from '../Common/Header';
import useSettings from '../../hooks/useSettings';
import { MediaStatus } from '../../../server/constants/media';
const messages = defineMessages({
trending: 'Trending',
@@ -22,6 +24,7 @@ interface SearchResult {
}
const Trending: React.FC = () => {
const settings = useSettings();
const { locale } = useContext(LanguageContext);
const { data, error, size, setSize } = useSWRInfinite<SearchResult>(
(pageIndex: number, previousPageData: SearchResult | null) => {
@@ -51,11 +54,20 @@ const Trending: React.FC = () => {
return <div>{error}</div>;
}
const titles = data?.reduce(
let titles = (data ?? []).reduce(
(a, v) => [...a, ...v.results],
[] as (MovieResult | TvResult | PersonResult)[]
);
if (settings.currentSettings.hideAvailable) {
titles = titles.filter(
(i) =>
(i.mediaType === 'movie' || i.mediaType === 'tv') &&
i.mediaInfo?.status !== MediaStatus.AVAILABLE &&
i.mediaInfo?.status !== MediaStatus.PARTIALLY_AVAILABLE
);
}
const isEmpty = !isLoadingInitialData && titles?.length === 0;
const isReachingEnd =
isEmpty || (data && data[data.length - 1]?.results.length < 20);