New: Persist search settings in add new artist and album

(cherry picked from commit fc3bea370facb22fd1b2f3cc264bf5d0a84f30e1)

Closes #1967
pull/4346/head
Michael Casey 3 years ago committed by Bogdan
parent b12adacd6b
commit 651abf9faa

@ -15,26 +15,11 @@ import styles from './AddNewAlbumModalContent.css';
class AddNewAlbumModalContent extends Component {
//
// Lifecycle
constructor(props, context) {
super(props, context);
this.state = {
searchForNewAlbum: false
};
}
//
// Listeners
onSearchForNewAlbumChange = ({ value }) => {
this.setState({ searchForNewAlbum: value });
};
onAddAlbumPress = () => {
this.props.onAddAlbumPress(this.state.searchForNewAlbum);
this.props.onAddAlbumPress();
};
//
@ -47,10 +32,12 @@ class AddNewAlbumModalContent extends Component {
disambiguation,
overview,
images,
searchForNewAlbum,
isAdding,
isExistingArtist,
isSmallScreen,
onModalClose,
onInputChange,
...otherProps
} = this.props;
@ -105,6 +92,7 @@ class AddNewAlbumModalContent extends Component {
<AddArtistOptionsForm
artistName={artistName}
includeNoneMetadataProfile={true}
onInputChange={onInputChange}
{...otherProps}
/>
}
@ -115,15 +103,15 @@ class AddNewAlbumModalContent extends Component {
<ModalFooter className={styles.modalFooter}>
<label className={styles.searchForNewAlbumLabelContainer}>
<span className={styles.searchForNewAlbumLabel}>
Start search for new album
{translate('AddNewAlbumSearchForNewAlbum')}
</span>
<CheckInput
containerClassName={styles.searchForNewAlbumContainer}
className={styles.searchForNewAlbumInput}
name="searchForNewAlbum"
value={this.state.searchForNewAlbum}
onChange={this.onSearchForNewAlbumChange}
onChange={onInputChange}
{...searchForNewAlbum}
/>
</label>
@ -133,7 +121,7 @@ class AddNewAlbumModalContent extends Component {
isSpinning={isAdding}
onPress={this.onAddAlbumPress}
>
Add {albumTitle}
{translate('AddAlbumWithTitle', { albumTitle })}
</SpinnerButton>
</ModalFooter>
</ModalContent>
@ -149,9 +137,11 @@ AddNewAlbumModalContent.propTypes = {
images: PropTypes.arrayOf(PropTypes.object).isRequired,
isAdding: PropTypes.bool.isRequired,
addError: PropTypes.object,
searchForNewAlbum: PropTypes.object.isRequired,
isExistingArtist: PropTypes.bool.isRequired,
isSmallScreen: PropTypes.bool.isRequired,
onModalClose: PropTypes.func.isRequired,
onInputChange: PropTypes.func.isRequired,
onAddAlbumPress: PropTypes.func.isRequired
};

@ -83,7 +83,7 @@ class AddNewAlbumModalContentConnector extends Component {
this.props.setAddDefault({ [name]: value });
};
onAddAlbumPress = (searchForNewAlbum) => {
onAddAlbumPress = () => {
const {
foreignAlbumId,
rootFolderPath,
@ -91,6 +91,7 @@ class AddNewAlbumModalContentConnector extends Component {
monitorNewItems,
qualityProfileId,
metadataProfileId,
searchForNewAlbum,
tags
} = this.props;
@ -101,8 +102,8 @@ class AddNewAlbumModalContentConnector extends Component {
monitorNewItems: monitorNewItems.value,
qualityProfileId: qualityProfileId.value,
metadataProfileId: metadataProfileId.value,
tags: tags.value,
searchForNewAlbum
searchForNewAlbum: searchForNewAlbum.value,
tags: tags.value
});
};
@ -129,6 +130,7 @@ AddNewAlbumModalContentConnector.propTypes = {
qualityProfileId: PropTypes.object,
metadataProfileId: PropTypes.object,
noneMetadataProfileId: PropTypes.number.isRequired,
searchForNewAlbum: PropTypes.object.isRequired,
tags: PropTypes.object.isRequired,
onModalClose: PropTypes.func.isRequired,
setAddDefault: PropTypes.func.isRequired,

@ -15,26 +15,11 @@ import styles from './AddNewArtistModalContent.css';
class AddNewArtistModalContent extends Component {
//
// Lifecycle
constructor(props, context) {
super(props, context);
this.state = {
searchForMissingAlbums: false
};
}
//
// Listeners
onSearchForMissingAlbumsChange = ({ value }) => {
this.setState({ searchForMissingAlbums: value });
};
onAddArtistPress = () => {
this.props.onAddArtistPress(this.state.searchForMissingAlbums);
this.props.onAddArtistPress();
};
//
@ -46,9 +31,11 @@ class AddNewArtistModalContent extends Component {
disambiguation,
overview,
images,
searchForMissingAlbums,
isAdding,
isSmallScreen,
onModalClose,
onInputChange,
...otherProps
} = this.props;
@ -96,6 +83,7 @@ class AddNewArtistModalContent extends Component {
<AddArtistOptionsForm
includeNoneMetadataProfile={false}
onInputChange={onInputChange}
{...otherProps}
/>
@ -106,15 +94,15 @@ class AddNewArtistModalContent extends Component {
<ModalFooter className={styles.modalFooter}>
<label className={styles.searchForMissingAlbumsLabelContainer}>
<span className={styles.searchForMissingAlbumsLabel}>
Start search for missing albums
{translate('AddNewArtistSearchForMissingAlbums')}
</span>
<CheckInput
containerClassName={styles.searchForMissingAlbumsContainer}
className={styles.searchForMissingAlbumsInput}
name="searchForMissingAlbums"
value={this.state.searchForMissingAlbums}
onChange={this.onSearchForMissingAlbumsChange}
onChange={onInputChange}
{...searchForMissingAlbums}
/>
</label>
@ -124,7 +112,7 @@ class AddNewArtistModalContent extends Component {
isSpinning={isAdding}
onPress={this.onAddArtistPress}
>
Add {artistName}
{translate('AddArtistWithName', { artistName })}
</SpinnerButton>
</ModalFooter>
</ModalContent>
@ -139,9 +127,11 @@ AddNewArtistModalContent.propTypes = {
images: PropTypes.arrayOf(PropTypes.object).isRequired,
isAdding: PropTypes.bool.isRequired,
addError: PropTypes.object,
searchForMissingAlbums: PropTypes.object.isRequired,
isSmallScreen: PropTypes.bool.isRequired,
isWindows: PropTypes.bool.isRequired,
onModalClose: PropTypes.func.isRequired,
onInputChange: PropTypes.func.isRequired,
onAddArtistPress: PropTypes.func.isRequired
};

@ -55,7 +55,7 @@ class AddNewArtistModalContentConnector extends Component {
this.props.setAddDefault({ [name]: value });
};
onAddArtistPress = (searchForMissingAlbums) => {
onAddArtistPress = () => {
const {
foreignArtistId,
rootFolderPath,
@ -63,6 +63,7 @@ class AddNewArtistModalContentConnector extends Component {
monitorNewItems,
qualityProfileId,
metadataProfileId,
searchForMissingAlbums,
tags
} = this.props;
@ -73,8 +74,8 @@ class AddNewArtistModalContentConnector extends Component {
monitorNewItems: monitorNewItems.value,
qualityProfileId: qualityProfileId.value,
metadataProfileId: metadataProfileId.value,
tags: tags.value,
searchForMissingAlbums
searchForMissingAlbums: searchForMissingAlbums.value,
tags: tags.value
});
};
@ -99,6 +100,7 @@ AddNewArtistModalContentConnector.propTypes = {
monitorNewItems: PropTypes.object.isRequired,
qualityProfileId: PropTypes.object,
metadataProfileId: PropTypes.object,
searchForMissingAlbums: PropTypes.object.isRequired,
tags: PropTypes.object.isRequired,
onModalClose: PropTypes.func.isRequired,
setAddDefault: PropTypes.func.isRequired,

@ -36,6 +36,8 @@ export const defaultState = {
monitorNewItems: monitorNewItemsOptions[0].key,
qualityProfileId: 0,
metadataProfileId: 0,
searchForMissingAlbums: false,
searchForNewAlbum: false,
tags: []
}
};

@ -8,6 +8,8 @@
"Actions": "Actions",
"Activity": "Activity",
"Add": "Add",
"AddAlbumWithTitle": "Add {albumTitle}",
"AddArtistWithName": "Add {artistName}",
"AddAutoTag": "Add Auto Tag",
"AddAutoTagError": "Unable to add a new auto tag, please try again.",
"AddCondition": "Add Condition",
@ -30,8 +32,10 @@
"AddMissing": "Add missing",
"AddNew": "Add New",
"AddNewAlbum": "Add New Album",
"AddNewAlbumSearchForNewAlbum": "Start search for new album",
"AddNewArtist": "Add New Artist",
"AddNewArtistRootFolderHelpText": "'{folder}' subfolder will be created automatically",
"AddNewArtistSearchForMissingAlbums": "Start search for missing albums",
"AddNewItem": "Add New Item",
"AddQualityProfile": "Add Quality Profile",
"AddReleaseProfile": "Add Release Profile",

Loading…
Cancel
Save