import { connect } from 'react-redux'; import { push } from 'connected-react-router'; import { createSelector } from 'reselect'; import createAllMoviesSelector from 'Store/Selectors/createAllMoviesSelector'; import createTagsSelector from 'Store/Selectors/createTagsSelector'; import MovieSearchInput from './MovieSearchInput'; function createCleanMovieSelector() { return createSelector( createAllMoviesSelector(), createTagsSelector(), (allMovies, allTags) => { return allMovies.map((movie) => { const { title, titleSlug, sortTitle, images, alternateTitles = [], tags = [] } = movie; return { title, titleSlug, sortTitle, images, alternateTitles, tags: tags.map((id) => { return allTags.find((tag) => tag.id === id); }) }; }); } ); } function createMapStateToProps() { return createSelector( createCleanMovieSelector(), (movies) => { return { movies }; } ); } function createMapDispatchToProps(dispatch, props) { return { onGoToMovie(titleSlug) { dispatch(push(`${window.Radarr.urlBase}/movie/${titleSlug}`)); }, onGoToAddNewMovie(query) { dispatch(push(`${window.Radarr.urlBase}/add/new?term=${encodeURIComponent(query)}`)); } }; } export default connect(createMapStateToProps, createMapDispatchToProps)(MovieSearchInput);