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

79 lines
1.9 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';
import createAlbumSelector from 'Store/Selectors/createAlbumSelector';
2020-09-07 01:33:10 +00:00
import createArtistSelector from 'Store/Selectors/createArtistSelector';
import createTrackSelector from 'Store/Selectors/createTrackSelector';
2017-09-04 02:20:56 +00:00
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
import HistoryRow from './HistoryRow';
function createMapStateToProps() {
return createSelector(
2017-10-02 03:05:28 +00:00
createArtistSelector(),
createAlbumSelector(),
createTrackSelector(),
2017-09-04 02:20:56 +00:00
createUISettingsSelector(),
(artist, album, track, 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,
track,
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);