import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; import createMovieSelector from 'Store/Selectors/createMovieSelector'; import { fetchOrganizePreview } from 'Store/Actions/organizePreviewActions'; import { fetchNamingSettings } from 'Store/Actions/settingsActions'; import { executeCommand } from 'Store/Actions/commandActions'; import * as commandNames from 'Commands/commandNames'; import OrganizePreviewModalContent from './OrganizePreviewModalContent'; function createMapStateToProps() { return createSelector( (state) => state.organizePreview, (state) => state.settings.naming, createMovieSelector(), (organizePreview, naming, movie) => { const props = { ...organizePreview }; props.isFetching = organizePreview.isFetching || naming.isFetching; props.isPopulated = organizePreview.isPopulated && naming.isPopulated; props.error = organizePreview.error || naming.error; props.renameMovies = naming.item.renameMovies; props.standardMovieFormat = naming.item.standardMovieFormat; props.path = movie.path; return props; } ); } const mapDispatchToProps = { fetchOrganizePreview, fetchNamingSettings, executeCommand }; class OrganizePreviewModalContentConnector extends Component { // // Lifecycle componentDidMount() { const { movieId } = this.props; this.props.fetchOrganizePreview({ movieId }); this.props.fetchNamingSettings(); } // // Listeners onOrganizePress = (files) => { this.props.executeCommand({ name: commandNames.RENAME_FILES, movieId: this.props.movieId, files }); this.props.onModalClose(); } // // Render render() { return ( ); } } OrganizePreviewModalContentConnector.propTypes = { movieId: PropTypes.number.isRequired, fetchOrganizePreview: PropTypes.func.isRequired, fetchNamingSettings: PropTypes.func.isRequired, executeCommand: PropTypes.func.isRequired, onModalClose: PropTypes.func.isRequired }; export default connect(createMapStateToProps, mapDispatchToProps)(OrganizePreviewModalContentConnector);