Use redux hooks on movies components

This commit is contained in:
Grégoire Delattre 2020-04-03 16:24:00 +02:00
parent 6ac382b659
commit 2e83c3169f
2 changed files with 27 additions and 37 deletions

View File

@ -1,35 +1,32 @@
import React from "react"; import React from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { List } from "immutable"; import { List } from "immutable";
import { connect } from "react-redux"; import { useDispatch } from "react-redux";
import { searchMovieSubtitles } from "../../actions/subtitles"; import { searchMovieSubtitles } from "../../actions/subtitles";
import { SubtitlesButton } from "../buttons/subtitles"; import { SubtitlesButton } from "../buttons/subtitles";
const movieSubtitlesButton = ({ export const MovieSubtitlesButton = ({
inLibrary, inLibrary,
imdbId, imdbId,
searching, searching,
searchMovieSubtitles,
subtitles, subtitles,
}) => ( }) => {
const dispatch = useDispatch();
return (
<SubtitlesButton <SubtitlesButton
inLibrary={inLibrary} inLibrary={inLibrary}
searching={searching} searching={searching}
subtitles={subtitles} subtitles={subtitles}
search={() => searchMovieSubtitles(imdbId)} search={() => dispatch(searchMovieSubtitles(imdbId))}
/> />
); );
};
movieSubtitlesButton.propTypes = { MovieSubtitlesButton.propTypes = {
searching: PropTypes.bool, searching: PropTypes.bool,
inLibrary: PropTypes.bool, inLibrary: PropTypes.bool,
imdbId: PropTypes.string, imdbId: PropTypes.string,
searchMovieSubtitles: PropTypes.func,
subtitles: PropTypes.instanceOf(List), subtitles: PropTypes.instanceOf(List),
}; };
export const MovieSubtitlesButton = connect(null, { searchMovieSubtitles })(
movieSubtitlesButton
);

View File

@ -1,33 +1,26 @@
import React from "react"; import React from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { List } from "immutable"; import { List } from "immutable";
import { connect } from "react-redux"; import { useDispatch } from "react-redux";
import { getMovieDetails } from "../../actions/movies"; import { getMovieDetails } from "../../actions/movies";
import { TorrentsButton } from "../buttons/torrents"; import { TorrentsButton } from "../buttons/torrents";
const movieTorrentsButton = ({ export const MovieTorrentsButton = ({ torrents, imdbId, title, searching }) => {
torrents, const dispatch = useDispatch();
imdbId, return (
title,
searching,
getMovieDetails,
}) => (
<TorrentsButton <TorrentsButton
torrents={torrents} torrents={torrents}
searching={searching} searching={searching}
search={() => getMovieDetails(imdbId)} search={() => dispatch(getMovieDetails(imdbId))}
url={`#/torrents/search/movies/${encodeURI(title)}`} url={`#/torrents/search/movies/${encodeURI(title)}`}
/> />
); );
movieTorrentsButton.propTypes = { };
MovieTorrentsButton.propTypes = {
torrents: PropTypes.instanceOf(List), torrents: PropTypes.instanceOf(List),
imdbId: PropTypes.string, imdbId: PropTypes.string,
title: PropTypes.string, title: PropTypes.string,
searching: PropTypes.bool, searching: PropTypes.bool,
getMovieDetails: PropTypes.func, getMovieDetails: PropTypes.func,
}; };
export const MovieTorrentsButton = connect(null, { getMovieDetails })(
movieTorrentsButton
);