New: Remember add import list exclusion when removing artists

(cherry picked from commit d8f6eaebdcf7e9b8170fe2baf1fe232fe02a1331)

Closes #3260
Closes #326
pull/4223/head
Mark McDowall 2 years ago committed by Bogdan
parent f509ca0f72
commit 28ac640103

@ -23,8 +23,7 @@ class DeleteArtistModalContent extends Component {
super(props, context); super(props, context);
this.state = { this.state = {
deleteFiles: false, deleteFiles: false
addImportListExclusion: false
}; };
} }
@ -35,16 +34,11 @@ class DeleteArtistModalContent extends Component {
this.setState({ deleteFiles: value }); this.setState({ deleteFiles: value });
}; };
onAddImportListExclusionChange = ({ value }) => {
this.setState({ addImportListExclusion: value });
};
onDeleteArtistConfirmed = () => { onDeleteArtistConfirmed = () => {
const deleteFiles = this.state.deleteFiles; const deleteFiles = this.state.deleteFiles;
const addImportListExclusion = this.state.addImportListExclusion; const addImportListExclusion = this.props.deleteOptions.addImportListExclusion;
this.setState({ deleteFiles: false }); this.setState({ deleteFiles: false });
this.setState({ addImportListExclusion: false });
this.props.onDeletePress(deleteFiles, addImportListExclusion); this.props.onDeletePress(deleteFiles, addImportListExclusion);
}; };
@ -56,7 +50,9 @@ class DeleteArtistModalContent extends Component {
artistName, artistName,
path, path,
statistics, statistics,
onModalClose deleteOptions,
onModalClose,
onDeleteOptionChange
} = this.props; } = this.props;
const { const {
@ -65,7 +61,7 @@ class DeleteArtistModalContent extends Component {
} = statistics; } = statistics;
const deleteFiles = this.state.deleteFiles; const deleteFiles = this.state.deleteFiles;
const addImportListExclusion = this.state.addImportListExclusion; const addImportListExclusion = deleteOptions.addImportListExclusion;
let deleteFilesLabel = `Delete ${trackFileCount} Track Files`; let deleteFilesLabel = `Delete ${trackFileCount} Track Files`;
let deleteFilesHelpText = translate('DeleteFilesHelpText'); let deleteFilesHelpText = translate('DeleteFilesHelpText');
@ -117,7 +113,7 @@ class DeleteArtistModalContent extends Component {
value={addImportListExclusion} value={addImportListExclusion}
helpText={translate('AddImportListExclusionArtistHelpText')} helpText={translate('AddImportListExclusionArtistHelpText')}
kind={kinds.DANGER} kind={kinds.DANGER}
onChange={this.onAddImportListExclusionChange} onChange={onDeleteOptionChange}
/> />
</FormGroup> </FormGroup>
@ -158,6 +154,8 @@ DeleteArtistModalContent.propTypes = {
artistName: PropTypes.string.isRequired, artistName: PropTypes.string.isRequired,
path: PropTypes.string.isRequired, path: PropTypes.string.isRequired,
statistics: PropTypes.object.isRequired, statistics: PropTypes.object.isRequired,
deleteOptions: PropTypes.object.isRequired,
onDeleteOptionChange: PropTypes.func.isRequired,
onDeletePress: PropTypes.func.isRequired, onDeletePress: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired onModalClose: PropTypes.func.isRequired
}; };

@ -1,56 +1,44 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { deleteArtist } from 'Store/Actions/artistActions'; import { deleteArtist, setDeleteOption } from 'Store/Actions/artistActions';
import createArtistSelector from 'Store/Selectors/createArtistSelector'; import createArtistSelector from 'Store/Selectors/createArtistSelector';
import DeleteArtistModalContent from './DeleteArtistModalContent'; import DeleteArtistModalContent from './DeleteArtistModalContent';
function createMapStateToProps() { function createMapStateToProps() {
return createSelector( return createSelector(
(state) => state.artist.deleteOptions,
createArtistSelector(), createArtistSelector(),
(artist) => { (deleteOptions, artist) => {
return artist; return {
...artist,
deleteOptions
};
} }
); );
} }
const mapDispatchToProps = { function createMapDispatchToProps(dispatch, props) {
deleteArtist return {
}; onDeleteOptionChange(option) {
dispatch(
class DeleteArtistModalContentConnector extends Component { setDeleteOption({
[option.name]: option.value
// })
// Listeners );
},
onDeletePress = (deleteFiles, addImportListExclusion) => {
this.props.deleteArtist({ onDeletePress(deleteFiles, addImportListExclusion) {
id: this.props.artistId, dispatch(
deleteFiles, deleteArtist({
addImportListExclusion id: props.artistId,
}); deleteFiles,
addImportListExclusion
this.props.onModalClose(true); })
);
props.onModalClose(true);
}
}; };
//
// Render
render() {
return (
<DeleteArtistModalContent
{...this.props}
onDeletePress={this.onDeletePress}
/>
);
}
} }
DeleteArtistModalContentConnector.propTypes = { export default connect(createMapStateToProps, createMapDispatchToProps)(DeleteArtistModalContent);
artistId: PropTypes.number.isRequired,
onModalClose: PropTypes.func.isRequired,
deleteArtist: PropTypes.func.isRequired
};
export default connect(createMapStateToProps, mapDispatchToProps)(DeleteArtistModalContentConnector);

@ -157,9 +157,16 @@ export const defaultState = {
items: [], items: [],
sortKey: 'sortName', sortKey: 'sortName',
sortDirection: sortDirections.ASCENDING, sortDirection: sortDirections.ASCENDING,
pendingChanges: {} pendingChanges: {},
deleteOptions: {
addImportListExclusion: false
}
}; };
export const persistState = [
'artist.deleteOptions'
];
// //
// Actions Types // Actions Types
@ -171,6 +178,8 @@ export const DELETE_ARTIST = 'artist/deleteArtist';
export const TOGGLE_ARTIST_MONITORED = 'artist/toggleArtistMonitored'; export const TOGGLE_ARTIST_MONITORED = 'artist/toggleArtistMonitored';
export const TOGGLE_ALBUM_MONITORED = 'artist/toggleAlbumMonitored'; export const TOGGLE_ALBUM_MONITORED = 'artist/toggleAlbumMonitored';
export const SET_DELETE_OPTION = 'artist/setDeleteOption';
// //
// Action Creators // Action Creators
@ -211,6 +220,8 @@ export const setArtistValue = createAction(SET_ARTIST_VALUE, (payload) => {
}; };
}); });
export const setDeleteOption = createAction(SET_DELETE_OPTION);
// //
// Helpers // Helpers
@ -340,6 +351,15 @@ export const actionHandlers = handleThunks({
export const reducers = createHandleActions({ export const reducers = createHandleActions({
[SET_ARTIST_VALUE]: createSetSettingValueReducer(section) [SET_ARTIST_VALUE]: createSetSettingValueReducer(section),
[SET_DELETE_OPTION]: (state, { payload }) => {
return {
...state,
deleteOptions: {
...payload
}
};
}
}, defaultState, section); }, defaultState, section);

Loading…
Cancel
Save