89 lines
2.9 KiB
JavaScript
89 lines
2.9 KiB
JavaScript
import React from "react"
|
|
import PropTypes from "prop-types"
|
|
import { OrderedMap, Map } from "immutable"
|
|
import { connect } from "react-redux"
|
|
import { addTorrent } from "../../actions/torrents"
|
|
import { refreshSubtitles } from "../../actions/subtitles"
|
|
import { addMovieToWishlist, deleteMovie, deleteMovieFromWishlist,
|
|
getMovieDetails, selectMovie, updateFilter } from "../../actions/movies"
|
|
|
|
import ListPosters from "../list/posters"
|
|
import ListDetails from "../list/details"
|
|
import MovieButtons from "./buttons"
|
|
|
|
import Row from "react-bootstrap/Row"
|
|
|
|
function mapStateToProps(state) {
|
|
return {
|
|
loading : state.movieStore.get("loading"),
|
|
movies : state.movieStore.get("movies"),
|
|
filter : state.movieStore.get("filter"),
|
|
selectedImdbId : state.movieStore.get("selectedImdbId"),
|
|
lastFetchUrl : state.movieStore.get("lastFetchUrl"),
|
|
exploreOptions : state.movieStore.get("exploreOptions"),
|
|
};
|
|
}
|
|
const mapDispatchToProps = {
|
|
selectMovie, getMovieDetails, addTorrent,
|
|
addMovieToWishlist, deleteMovie, deleteMovieFromWishlist,
|
|
refreshSubtitles, updateFilter,
|
|
};
|
|
|
|
const MovieList = (props) => {
|
|
let selectedMovie = undefined;
|
|
if (props.movies !== undefined &&
|
|
props.movies.has(props.selectedImdbId)) {
|
|
selectedMovie = props.movies.get(props.selectedImdbId);
|
|
}
|
|
|
|
return (
|
|
<Row>
|
|
<ListPosters
|
|
data={props.movies}
|
|
type="movies"
|
|
placeHolder="Filter movies..."
|
|
exploreOptions={props.exploreOptions}
|
|
selectedImdbId={props.selectedImdbId}
|
|
updateFilter={props.updateFilter}
|
|
filter={props.filter}
|
|
onClick={props.selectMovie}
|
|
onDoubleClick={function() { return; }}
|
|
onKeyEnter={function() { return; }}
|
|
params={props.match.params}
|
|
loading={props.loading}
|
|
/>
|
|
<ListDetails data={selectedMovie} loading={props.loading}>
|
|
<MovieButtons
|
|
movie={selectedMovie}
|
|
getMovieDetails={props.getMovieDetails}
|
|
addTorrent={props.addTorrent}
|
|
deleteMovie={props.deleteMovie}
|
|
addToWishlist={props.addMovieToWishlist}
|
|
deleteFromWishlist={props.deleteMovieFromWishlist}
|
|
lastFetchUrl={props.lastFetchUrl}
|
|
refreshSubtitles={props.refreshSubtitles}
|
|
/>
|
|
</ListDetails>
|
|
</Row>
|
|
);
|
|
}
|
|
MovieList.propTypes = {
|
|
movies: PropTypes.instanceOf(OrderedMap),
|
|
exploreOptions: PropTypes.instanceOf(Map),
|
|
selectedImdbId: PropTypes.string,
|
|
filter: PropTypes.string,
|
|
loading: PropTypes.bool,
|
|
lastFetchUrl: PropTypes.string,
|
|
updateFilter: PropTypes.func,
|
|
selectMovie: PropTypes.func,
|
|
addMovieToWishlist: PropTypes.func,
|
|
deleteMovieFromWishlist: PropTypes.func,
|
|
deleteMovie: PropTypes.func,
|
|
addTorrent: PropTypes.func,
|
|
refreshSubtitles: PropTypes.func,
|
|
getMovieDetails: PropTypes.func,
|
|
match: PropTypes.object,
|
|
};
|
|
|
|
export default connect(mapStateToProps, mapDispatchToProps)(MovieList);
|