83 lines
2.4 KiB
JavaScript
83 lines
2.4 KiB
JavaScript
import React from "react"
|
|
import PropTypes from "prop-types"
|
|
import { Map } from "immutable"
|
|
import { connect } from "react-redux"
|
|
|
|
import { addShowToWishlist, deleteShowFromWishlist } from "../../../actions/shows"
|
|
|
|
import Tooltip from "react-bootstrap/Tooltip"
|
|
import OverlayTrigger from "react-bootstrap/OverlayTrigger"
|
|
|
|
export const trackHeader = (props) => {
|
|
const trackedSeason = props.data.get("tracked_season");
|
|
const trackedEpisode = props.data.get("tracked_episode");
|
|
const imdbId = props.data.get("imdb_id");
|
|
const wishlisted = (trackedSeason !== null && trackedEpisode !== null);
|
|
|
|
const handleClick = () => {
|
|
if (wishlisted) {
|
|
props.deleteShowFromWishlist(imdbId);
|
|
} else {
|
|
props.addShowToWishlist(imdbId);
|
|
}
|
|
}
|
|
|
|
if (wishlisted) {
|
|
const msg = (trackedSeason !== 0 && trackedEpisode !== 0)
|
|
? (<p>Show tracked from <strong>season {trackedSeason} episode {trackedEpisode}</strong></p>)
|
|
: (<p>Whole show tracked</p>);
|
|
|
|
return (
|
|
<span className="card-text">
|
|
{msg}
|
|
<a className="btn btn-sm btn-danger" onClick={handleClick}>
|
|
<i className="fa fa-bookmark"></i> Untrack the show
|
|
</a>
|
|
</span>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<span className="card-text">
|
|
<p>Tracking inactive</p>
|
|
<a className="btn btn-sm btn-info" onClick={(e) => handleClick(e)}>
|
|
<i className="fa fa-bookmark-o"></i> Track the whole show
|
|
</a>
|
|
</span>
|
|
);
|
|
}
|
|
trackHeader.propTypes = {
|
|
data: PropTypes.instanceOf(Map),
|
|
addShowToWishlist: PropTypes.func,
|
|
deleteShowFromWishlist: PropTypes.func,
|
|
};
|
|
export const TrackHeader = connect(null, {
|
|
addShowToWishlist,
|
|
deleteShowFromWishlist,
|
|
})(trackHeader);
|
|
|
|
export const trackButton = (props) => {
|
|
const imdbId = props.data.get("show_imdb_id");
|
|
const season = props.data.get("season");
|
|
const episode = props.data.get("episode");
|
|
|
|
const tooltipId = `tooltip-${props.data.season}-${props.data.episode}`;
|
|
const tooltip = (
|
|
<Tooltip id={tooltipId}>Track show from here</Tooltip>
|
|
);
|
|
|
|
return (
|
|
<OverlayTrigger placement="top" overlay={tooltip}>
|
|
<span className="btn clickable"
|
|
onClick={() => props.addShowToWishlist(imdbId, season, episode)}>
|
|
<i className="fa fa-bookmark"></i>
|
|
</span>
|
|
</OverlayTrigger>
|
|
);
|
|
}
|
|
trackButton.propTypes = {
|
|
data: PropTypes.instanceOf(Map),
|
|
addShowToWishlist: PropTypes.func,
|
|
};
|
|
export const TrackButton = connect(null, {addShowToWishlist})(trackButton);
|