Radarr/frontend/src/Movie/Index/MovieIndexFilterModal.tsx

57 lines
1.4 KiB
TypeScript

import React, { useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { createSelector } from 'reselect';
import AppState from 'App/State/AppState';
import FilterModal from 'Components/Filter/FilterModal';
import { setMovieFilter } from 'Store/Actions/movieIndexActions';
function createMovieSelector() {
return createSelector(
(state: AppState) => state.movies.items,
(movies) => {
return movies;
}
);
}
function createFilterBuilderPropsSelector() {
return createSelector(
(state: AppState) => state.movieIndex.filterBuilderProps,
(filterBuilderProps) => {
return filterBuilderProps;
}
);
}
interface MovieIndexFilterModalProps {
isOpen: boolean;
}
export default function MovieIndexFilterModal(
props: MovieIndexFilterModalProps
) {
const sectionItems = useSelector(createMovieSelector());
const filterBuilderProps = useSelector(createFilterBuilderPropsSelector());
const customFilterType = 'movieIndex';
const dispatch = useDispatch();
const dispatchSetFilter = useCallback(
(payload: unknown) => {
dispatch(setMovieFilter(payload));
},
[dispatch]
);
return (
<FilterModal
// TODO: Don't spread all the props
{...props}
sectionItems={sectionItems}
filterBuilderProps={filterBuilderProps}
customFilterType={customFilterType}
dispatchSetFilter={dispatchSetFilter}
/>
);
}