1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-09-17 15:02:34 +02:00

New: Add + Search on Discovery Bulk Add (#4657)

#4614
This commit is contained in:
nitsua 2020-07-29 23:51:24 -04:00 committed by GitHub
parent b7a617bc4e
commit c11928ffb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 21 deletions

View File

@ -2,6 +2,7 @@ import _ from 'lodash';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import AvailabilitySelectInput from 'Components/Form/AvailabilitySelectInput'; import AvailabilitySelectInput from 'Components/Form/AvailabilitySelectInput';
import CheckInput from 'Components/Form/CheckInput';
import QualityProfileSelectInputConnector from 'Components/Form/QualityProfileSelectInputConnector'; import QualityProfileSelectInputConnector from 'Components/Form/QualityProfileSelectInputConnector';
import RootFolderSelectInputConnector from 'Components/Form/RootFolderSelectInputConnector'; import RootFolderSelectInputConnector from 'Components/Form/RootFolderSelectInputConnector';
import SelectInput from 'Components/Form/SelectInput'; import SelectInput from 'Components/Form/SelectInput';
@ -25,7 +26,8 @@ class DiscoverMovieFooter extends Component {
defaultMonitor, defaultMonitor,
defaultQualityProfileId, defaultQualityProfileId,
defaultMinimumAvailability, defaultMinimumAvailability,
defaultRootFolderPath defaultRootFolderPath,
defaultSearchForMovie
} = props; } = props;
this.state = { this.state = {
@ -33,6 +35,7 @@ class DiscoverMovieFooter extends Component {
qualityProfileId: defaultQualityProfileId, qualityProfileId: defaultQualityProfileId,
minimumAvailability: defaultMinimumAvailability, minimumAvailability: defaultMinimumAvailability,
rootFolderPath: defaultRootFolderPath, rootFolderPath: defaultRootFolderPath,
searchForMovie: defaultSearchForMovie,
isExcludeMovieModalOpen: false, isExcludeMovieModalOpen: false,
destinationRootFolder: null destinationRootFolder: null
}; };
@ -43,14 +46,16 @@ class DiscoverMovieFooter extends Component {
defaultMonitor, defaultMonitor,
defaultQualityProfileId, defaultQualityProfileId,
defaultMinimumAvailability, defaultMinimumAvailability,
defaultRootFolderPath defaultRootFolderPath,
defaultSearchForMovie
} = this.props; } = this.props;
const { const {
monitor, monitor,
qualityProfileId, qualityProfileId,
minimumAvailability, minimumAvailability,
rootFolderPath rootFolderPath,
searchForMovie
} = this.state; } = this.state;
const newState = {}; const newState = {};
@ -71,6 +76,10 @@ class DiscoverMovieFooter extends Component {
newState.rootFolderPath = defaultRootFolderPath; newState.rootFolderPath = defaultRootFolderPath;
} }
if (searchForMovie !== defaultSearchForMovie) {
newState.searchForMovie = defaultSearchForMovie;
}
if (!_.isEmpty(newState)) { if (!_.isEmpty(newState)) {
this.setState(newState); this.setState(newState);
} }
@ -79,9 +88,6 @@ class DiscoverMovieFooter extends Component {
// //
// Listeners // Listeners
//
// Listeners
onExcludeSelectedPress = () => { onExcludeSelectedPress = () => {
this.setState({ isExcludeMovieModalOpen: true }); this.setState({ isExcludeMovieModalOpen: true });
} }
@ -95,14 +101,16 @@ class DiscoverMovieFooter extends Component {
monitor, monitor,
qualityProfileId, qualityProfileId,
minimumAvailability, minimumAvailability,
rootFolderPath rootFolderPath,
searchForMovie
} = this.state; } = this.state;
const addOptions = { const addOptions = {
monitor, monitor,
qualityProfileId, qualityProfileId,
minimumAvailability, minimumAvailability,
rootFolderPath rootFolderPath,
searchForMovie
}; };
this.props.onAddMoviesPress({ addOptions }); this.props.onAddMoviesPress({ addOptions });
@ -125,6 +133,7 @@ class DiscoverMovieFooter extends Component {
qualityProfileId, qualityProfileId,
minimumAvailability, minimumAvailability,
rootFolderPath, rootFolderPath,
searchForMovie,
isExcludeMovieModalOpen isExcludeMovieModalOpen
} = this.state; } = this.state;
@ -193,6 +202,20 @@ class DiscoverMovieFooter extends Component {
/> />
</div> </div>
<div className={styles.inputContainer}>
<DiscoverMovieFooterLabel
label="Search on Add"
isSaving={isAdding}
/>
<CheckInput
name="searchForMovie"
isDisabled={!selectedCount}
value={searchForMovie}
onChange={onInputChange}
/>
</div>
<div className={styles.buttonContainer}> <div className={styles.buttonContainer}>
<div className={styles.buttonContainerContent}> <div className={styles.buttonContainerContent}>
<DiscoverMovieFooterLabel <DiscoverMovieFooterLabel
@ -211,17 +234,17 @@ class DiscoverMovieFooter extends Component {
> >
{translate('AddMovies')} {translate('AddMovies')}
</SpinnerButton> </SpinnerButton>
</div>
<SpinnerButton <SpinnerButton
className={styles.excludeSelectedButton} className={styles.excludeSelectedButton}
kind={kinds.DANGER} kind={kinds.DANGER}
isSpinning={isExcluding} isSpinning={isExcluding}
isDisabled={!selectedCount || isExcluding} isDisabled={!selectedCount || isExcluding}
onPress={this.props.onExcludeMoviesPress} onPress={this.props.onExcludeMoviesPress}
> >
{translate('AddExclusion')} {translate('AddExclusion')}
</SpinnerButton> </SpinnerButton>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -245,6 +268,7 @@ DiscoverMovieFooter.propTypes = {
defaultQualityProfileId: PropTypes.number, defaultQualityProfileId: PropTypes.number,
defaultMinimumAvailability: PropTypes.string, defaultMinimumAvailability: PropTypes.string,
defaultRootFolderPath: PropTypes.string, defaultRootFolderPath: PropTypes.string,
defaultSearchForMovie: PropTypes.bool,
onInputChange: PropTypes.func.isRequired, onInputChange: PropTypes.func.isRequired,
onAddMoviesPress: PropTypes.func.isRequired, onAddMoviesPress: PropTypes.func.isRequired,
onExcludeMoviesPress: PropTypes.func.isRequired onExcludeMoviesPress: PropTypes.func.isRequired

View File

@ -15,7 +15,8 @@ function createMapStateToProps() {
monitor: defaultMonitor, monitor: defaultMonitor,
qualityProfileId: defaultQualityProfileId, qualityProfileId: defaultQualityProfileId,
minimumAvailability: defaultMinimumAvailability, minimumAvailability: defaultMinimumAvailability,
rootFolderPath: defaultRootFolderPath rootFolderPath: defaultRootFolderPath,
searchForMovie: defaultSearchForMovie
} = discoverMovie.defaults; } = discoverMovie.defaults;
const { const {
@ -33,7 +34,8 @@ function createMapStateToProps() {
defaultMonitor, defaultMonitor,
defaultQualityProfileId, defaultQualityProfileId,
defaultMinimumAvailability, defaultMinimumAvailability,
defaultRootFolderPath defaultRootFolderPath,
defaultSearchForMovie
}; };
} }
); );

View File

@ -45,7 +45,8 @@ export const defaultState = {
monitor: 'true', monitor: 'true',
qualityProfileId: 0, qualityProfileId: 0,
minimumAvailability: 'announced', minimumAvailability: 'announced',
tags: [] tags: [],
searchForMovie: false
}, },
posterOptions: { posterOptions: {