Lidarr/frontend/src/Activity/History/HistoryRowConnector.js

76 lines
1.7 KiB
JavaScript
Raw Normal View History

2017-09-04 02:20:56 +00:00
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import { fetchHistory, markAsFailed } from 'Store/Actions/historyActions';
2017-10-02 03:05:28 +00:00
import createArtistSelector from 'Store/Selectors/createArtistSelector';
2017-09-04 02:20:56 +00:00
import createEpisodeSelector from 'Store/Selectors/createEpisodeSelector';
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
import HistoryRow from './HistoryRow';
function createMapStateToProps() {
return createSelector(
2017-10-02 03:05:28 +00:00
createArtistSelector(),
2017-09-04 02:20:56 +00:00
createEpisodeSelector(),
createUISettingsSelector(),
2017-10-06 03:27:12 +00:00
(artist, album, uiSettings) => {
2017-09-04 02:20:56 +00:00
return {
2017-10-02 03:05:28 +00:00
artist,
2017-10-06 03:27:12 +00:00
album,
2017-09-04 02:20:56 +00:00
shortDateFormat: uiSettings.shortDateFormat,
timeFormat: uiSettings.timeFormat
};
}
);
}
const mapDispatchToProps = {
fetchHistory,
markAsFailed
};
class HistoryRowConnector extends Component {
2017-10-02 03:05:28 +00:00
//
// Lifecycle
2017-09-04 02:20:56 +00:00
componentDidUpdate(prevProps) {
if (
prevProps.isMarkingAsFailed &&
!this.props.isMarkingAsFailed &&
!this.props.markAsFailedError
) {
this.props.fetchHistory();
}
}
//
// Listeners
onMarkAsFailedPress = () => {
this.props.markAsFailed({ id: this.props.id });
}
//
// Render
render() {
return (
<HistoryRow
{...this.props}
onMarkAsFailedPress={this.onMarkAsFailedPress}
/>
);
}
}
HistoryRowConnector.propTypes = {
id: PropTypes.number.isRequired,
isMarkingAsFailed: PropTypes.bool,
markAsFailedError: PropTypes.object,
fetchHistory: PropTypes.func.isRequired,
markAsFailed: PropTypes.func.isRequired
};
export default connect(createMapStateToProps, mapDispatchToProps)(HistoryRowConnector);