Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 35 additions & 1 deletion server/lib/settings/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,22 @@ export interface ProxySettings {
bypassLocalAddresses: boolean;
}

interface FilterSettings {
filterSearch: boolean;
filterTrending: boolean;
filterSimilarSeries: boolean;
filterTvRecommendations: boolean;
filterSimilarMovies: boolean;
filterMovieRecommendations: boolean;
filterTvUpcoming: boolean;
filterUpcomingMovies: boolean;
filterDiscoverMovies: boolean;
filterTvDiscover: boolean;
filterPopularMovies: boolean;
filterTvPopular: boolean;
filterCustomSliders: boolean;
}

export interface MainSettings {
apiKey: string;
applicationTitle: string;
Expand All @@ -146,6 +162,7 @@ export interface MainSettings {
enableSpecialEpisodes: boolean;
locale: string;
youtubeUrl: string;
filters: FilterSettings;
}

export interface ProxySettings {
Expand Down Expand Up @@ -177,7 +194,7 @@ interface PublicSettings {
initialized: boolean;
}

interface FullPublicSettings extends PublicSettings {
export interface FullPublicSettings extends PublicSettings {
applicationTitle: string;
applicationUrl: string;
hideAvailable: boolean;
Expand All @@ -203,6 +220,7 @@ interface FullPublicSettings extends PublicSettings {
userEmailRequired: boolean;
newPlexLogin: boolean;
youtubeUrl: string;
filters: FilterSettings;
}

export interface NotificationAgentConfig {
Expand Down Expand Up @@ -403,6 +421,21 @@ class Settings {
enableSpecialEpisodes: false,
locale: 'en',
youtubeUrl: '',
filters: {
filterSearch: false,
filterTrending: false,
filterSimilarSeries: false,
filterTvRecommendations: false,
filterSimilarMovies: false,
filterMovieRecommendations: false,
filterTvUpcoming: false,
filterUpcomingMovies: false,
filterDiscoverMovies: false,
filterTvDiscover: false,
filterPopularMovies: false,
filterTvPopular: false,
filterCustomSliders: false,
},
},
plex: {
name: '',
Expand Down Expand Up @@ -697,6 +730,7 @@ class Settings {
this.data.notifications.agents.email.options.userEmailRequired,
newPlexLogin: this.data.main.newPlexLogin,
youtubeUrl: this.data.main.youtubeUrl,
filters: this.data.main.filters,
};
}

Expand Down
14 changes: 12 additions & 2 deletions src/components/Discover/DiscoverMovieKeyword/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ 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 useFilterByLanguages from '@app/hooks/useFilterByLanguages';
import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error';
import { FilterByLanguage } from '@app/types/filters';
import defineMessages from '@app/utils/defineMessages';
import type { TmdbKeyword } from '@server/api/themoviedb/interfaces';
import type { MovieResult } from '@server/models/Search';
Expand Down Expand Up @@ -34,6 +36,13 @@ const DiscoverMovieKeyword = () => {
}
);

const filteredTitles = useFilterByLanguages({
titles,
movie: true,
tv: false,
key: FilterByLanguage.DISCOVER_MOVIES,
});

if (error) {
return <Error statusCode={500} />;
}
Expand All @@ -53,10 +62,11 @@ const DiscoverMovieKeyword = () => {
<Header>{title}</Header>
</div>
<ListView
items={titles}
items={filteredTitles}
isEmpty={isEmpty}
isLoading={
isLoadingInitialData || (isLoadingMore && (titles?.length ?? 0) > 0)
isLoadingInitialData ||
(isLoadingMore && (filteredTitles?.length ?? 0) > 0)
}
isReachingEnd={isReachingEnd}
onScrollBottom={fetchMore}
Expand Down
14 changes: 12 additions & 2 deletions src/components/Discover/DiscoverMovies/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import {
} from '@app/components/Discover/constants';
import FilterSlideover from '@app/components/Discover/FilterSlideover';
import useDiscover from '@app/hooks/useDiscover';
import useFilterByLanguages from '@app/hooks/useFilterByLanguages';
import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams';
import Error from '@app/pages/_error';
import { FilterByLanguage } from '@app/types/filters';
import defineMessages from '@app/utils/defineMessages';
import { BarsArrowDownIcon, FunnelIcon } from '@heroicons/react/24/solid';
import type { SortOptions as TMDBSortOptions } from '@server/api/themoviedb';
Expand Down Expand Up @@ -65,6 +67,13 @@ const DiscoverMovies = () => {
);
const [showFilters, setShowFilters] = useState(false);

const filteredTitles = useFilterByLanguages({
titles,
movie: true,
tv: false,
key: FilterByLanguage.DISCOVER_MOVIES,
});

if (error) {
return <Error statusCode={500} />;
}
Expand Down Expand Up @@ -133,10 +142,11 @@ const DiscoverMovies = () => {
</div>
</div>
<ListView
items={titles}
items={filteredTitles}
isEmpty={isEmpty}
isLoading={
isLoadingInitialData || (isLoadingMore && (titles?.length ?? 0) > 0)
isLoadingInitialData ||
(isLoadingMore && (filteredTitles?.length ?? 0) > 0)
}
isReachingEnd={isReachingEnd}
onScrollBottom={fetchMore}
Expand Down
14 changes: 12 additions & 2 deletions src/components/Discover/DiscoverTv/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import {
} from '@app/components/Discover/constants';
import FilterSlideover from '@app/components/Discover/FilterSlideover';
import useDiscover from '@app/hooks/useDiscover';
import useFilterByLanguages from '@app/hooks/useFilterByLanguages';
import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams';
import Error from '@app/pages/_error';
import { FilterByLanguage } from '@app/types/filters';
import defineMessages from '@app/utils/defineMessages';
import { BarsArrowDownIcon, FunnelIcon } from '@heroicons/react/24/solid';
import type { SortOptions as TMDBSortOptions } from '@server/api/themoviedb';
Expand Down Expand Up @@ -63,6 +65,13 @@ const DiscoverTv = () => {
...preparedFilters,
});

const filteredTitles = useFilterByLanguages({
titles,
movie: false,
tv: true,
key: FilterByLanguage.TV_DISCOVER,
});

if (error) {
return <Error statusCode={500} />;
}
Expand Down Expand Up @@ -131,11 +140,12 @@ const DiscoverTv = () => {
</div>
</div>
<ListView
items={titles}
items={filteredTitles}
isEmpty={isEmpty}
isReachingEnd={isReachingEnd}
isLoading={
isLoadingInitialData || (isLoadingMore && (titles?.length ?? 0) > 0)
isLoadingInitialData ||
(isLoadingMore && (filteredTitles?.length ?? 0) > 0)
}
onScrollBottom={fetchMore}
/>
Expand Down
14 changes: 12 additions & 2 deletions src/components/Discover/DiscoverTvKeyword/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ 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 useFilterByLanguages from '@app/hooks/useFilterByLanguages';
import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error';
import { FilterByLanguage } from '@app/types/filters';
import defineMessages from '@app/utils/defineMessages';
import type { TmdbKeyword } from '@server/api/themoviedb/interfaces';
import type { TvResult } from '@server/models/Search';
Expand Down Expand Up @@ -34,6 +36,13 @@ const DiscoverTvKeyword = () => {
}
);

const filteredTitles = useFilterByLanguages({
titles,
movie: false,
tv: true,
key: FilterByLanguage.TV_DISCOVER,
});

if (error) {
return <Error statusCode={500} />;
}
Expand All @@ -53,10 +62,11 @@ const DiscoverTvKeyword = () => {
<Header>{title}</Header>
</div>
<ListView
items={titles}
items={filteredTitles}
isEmpty={isEmpty}
isLoading={
isLoadingInitialData || (isLoadingMore && (titles?.length ?? 0) > 0)
isLoadingInitialData ||
(isLoadingMore && (filteredTitles?.length ?? 0) > 0)
}
isReachingEnd={isReachingEnd}
onScrollBottom={fetchMore}
Expand Down
14 changes: 12 additions & 2 deletions src/components/Discover/DiscoverTvUpcoming.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import Header from '@app/components/Common/Header';
import ListView from '@app/components/Common/ListView';
import PageTitle from '@app/components/Common/PageTitle';
import useDiscover from '@app/hooks/useDiscover';
import useFilterByLanguages from '@app/hooks/useFilterByLanguages';
import Error from '@app/pages/_error';
import { FilterByLanguage } from '@app/types/filters';
import defineMessages from '@app/utils/defineMessages';
import type { TvResult } from '@server/models/Search';
import { useIntl } from 'react-intl';
Expand All @@ -24,6 +26,13 @@ const DiscoverTvUpcoming = () => {
error,
} = useDiscover<TvResult>('/api/v1/discover/tv/upcoming');

const filteredTitles = useFilterByLanguages({
titles,
movie: false,
tv: true,
key: FilterByLanguage.TV_UPCOMING,
});

if (error) {
return <Error statusCode={500} />;
}
Expand All @@ -35,11 +44,12 @@ const DiscoverTvUpcoming = () => {
<Header>{intl.formatMessage(messages.upcomingtv)}</Header>
</div>
<ListView
items={titles}
items={filteredTitles}
isEmpty={isEmpty}
isReachingEnd={isReachingEnd}
isLoading={
isLoadingInitialData || (isLoadingMore && (titles?.length ?? 0) > 0)
isLoadingInitialData ||
(isLoadingMore && (filteredTitles?.length ?? 0) > 0)
}
onScrollBottom={fetchMore}
/>
Expand Down
1 change: 1 addition & 0 deletions src/components/Discover/FilterSlideover/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ const FilterSlideover = ({
setFieldValue={(_key, value) => {
updateQueryParams('language', value);
}}
isDisabled={!!currentSettings.originalLanguage}
/>
<span className="text-lg font-semibold">
{intl.formatMessage(messages.certification)}
Expand Down
14 changes: 12 additions & 2 deletions src/components/Discover/Trending.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import Header from '@app/components/Common/Header';
import ListView from '@app/components/Common/ListView';
import PageTitle from '@app/components/Common/PageTitle';
import useDiscover from '@app/hooks/useDiscover';
import useFilterByLanguages from '@app/hooks/useFilterByLanguages';
import Error from '@app/pages/_error';
import { FilterByLanguage } from '@app/types/filters';
import defineMessages from '@app/utils/defineMessages';
import type {
MovieResult,
Expand All @@ -29,6 +31,13 @@ const Trending = () => {
'/api/v1/discover/trending'
);

const filteredTitles = useFilterByLanguages({
titles,
movie: true,
tv: true,
key: FilterByLanguage.TRENDING,
});

if (error) {
return <Error statusCode={500} />;
}
Expand All @@ -40,10 +49,11 @@ const Trending = () => {
<Header>{intl.formatMessage(messages.trending)}</Header>
</div>
<ListView
items={titles}
items={filteredTitles}
isEmpty={isEmpty}
isLoading={
isLoadingInitialData || (isLoadingMore && (titles?.length ?? 0) > 0)
isLoadingInitialData ||
(isLoadingMore && (filteredTitles?.length ?? 0) > 0)
}
isReachingEnd={isReachingEnd}
onScrollBottom={fetchMore}
Expand Down
14 changes: 12 additions & 2 deletions src/components/Discover/Upcoming.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import Header from '@app/components/Common/Header';
import ListView from '@app/components/Common/ListView';
import PageTitle from '@app/components/Common/PageTitle';
import useDiscover from '@app/hooks/useDiscover';
import useFilterByLanguages from '@app/hooks/useFilterByLanguages';
import Error from '@app/pages/_error';
import { FilterByLanguage } from '@app/types/filters';
import defineMessages from '@app/utils/defineMessages';
import type { MovieResult } from '@server/models/Search';
import { useIntl } from 'react-intl';
Expand All @@ -24,6 +26,13 @@ const UpcomingMovies = () => {
error,
} = useDiscover<MovieResult>('/api/v1/discover/movies/upcoming');

const filteredTitles = useFilterByLanguages({
titles,
movie: true,
tv: false,
key: FilterByLanguage.UPCOMING_MOVIES,
});

if (error) {
return <Error statusCode={500} />;
}
Expand All @@ -35,10 +44,11 @@ const UpcomingMovies = () => {
<Header>{intl.formatMessage(messages.upcomingmovies)}</Header>
</div>
<ListView
items={titles}
items={filteredTitles}
isEmpty={isEmpty}
isLoading={
isLoadingInitialData || (isLoadingMore && (titles?.length ?? 0) > 0)
isLoadingInitialData ||
(isLoadingMore && (filteredTitles?.length ?? 0) > 0)
}
isReachingEnd={isReachingEnd}
onScrollBottom={fetchMore}
Expand Down
Loading