canape/frontend/js/components/shows/details/subtitlesButton.js
Grégoire Delattre 4b26080193
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
Update redux state management
Use immer with native javascript objects instead of immutablejs.
2020-04-07 18:22:26 +02:00

46 lines
1.3 KiB
JavaScript

import React from "react";
import PropTypes from "prop-types";
import { useDispatch, useSelector } from "react-redux";
import { searchEpisodeSubtitles } from "../../../actions/subtitles";
import { SubtitlesButton } from "../../buttons/subtitles";
export const EpisodeSubtitlesButton = ({ season, episode }) => {
const dispatch = useDispatch();
const imdbId = useSelector((state) => state.show.show.imdb_id);
const searching = useSelector((state) =>
state.show.show.seasons.get(season).get(episode).fetchingSubtitles
? state.show.show.seasons.get(season).get(episode).fetchingSubtitles
: false
);
const inLibrary = useSelector(
(state) =>
state.show.show.seasons.get(season).get(episode).polochon_url !== ""
);
const subtitles = useSelector((state) =>
state.show.show.seasons.get(season).get(episode).subtitles
? state.show.show.seasons.get(season).get(episode).subtitles
: []
);
const search = () => {
dispatch(searchEpisodeSubtitles(imdbId, season, episode));
};
return (
<SubtitlesButton
subtitles={subtitles}
inLibrary={inLibrary}
searching={searching}
search={search}
/>
);
};
EpisodeSubtitlesButton.propTypes = {
season: PropTypes.number.isRequired,
episode: PropTypes.number.isRequired,
};