diff --git a/frontend/src/Series/Delete/DeleteSeriesModalContent.js b/frontend/src/Series/Delete/DeleteSeriesModalContent.js
index d1873d42f..018027e95 100644
--- a/frontend/src/Series/Delete/DeleteSeriesModalContent.js
+++ b/frontend/src/Series/Delete/DeleteSeriesModalContent.js
@@ -22,8 +22,7 @@ class DeleteSeriesModalContent extends Component {
super(props, context);
this.state = {
- deleteFiles: false,
- addImportListExclusion: false
+ deleteFiles: false
};
}
@@ -34,15 +33,11 @@ class DeleteSeriesModalContent extends Component {
this.setState({ deleteFiles: value });
};
- onAddImportListExclusionChange = ({ value }) => {
- this.setState({ addImportListExclusion: value });
- };
-
onDeleteSeriesConfirmed = () => {
const deleteFiles = this.state.deleteFiles;
- const addImportListExclusion = this.state.addImportListExclusion;
+ const addImportListExclusion = this.props.deleteOptions.addImportListExclusion;
- this.setState({ deleteFiles: false, addImportListExclusion: false });
+ this.setState({ deleteFiles: false });
this.props.onDeletePress(deleteFiles, addImportListExclusion);
};
@@ -54,7 +49,9 @@ class DeleteSeriesModalContent extends Component {
title,
path,
statistics,
- onModalClose
+ deleteOptions,
+ onModalClose,
+ onDeleteOptionChange
} = this.props;
const {
@@ -63,7 +60,7 @@ class DeleteSeriesModalContent extends Component {
} = statistics;
const deleteFiles = this.state.deleteFiles;
- const addImportListExclusion = this.state.addImportListExclusion;
+ const addImportListExclusion = deleteOptions.addImportListExclusion;
let deleteFilesLabel = `Delete ${episodeFileCount} Episode Files`;
let deleteFilesHelpText = 'Delete the episode files and series folder';
@@ -98,7 +95,7 @@ class DeleteSeriesModalContent extends Component {
name="addImportListExclusion"
value={addImportListExclusion}
helpText="Prevent series from being added to Sonarr by lists"
- onChange={this.onAddImportListExclusionChange}
+ onChange={onDeleteOptionChange}
/>
@@ -150,6 +147,9 @@ DeleteSeriesModalContent.propTypes = {
title: PropTypes.string.isRequired,
path: PropTypes.string.isRequired,
statistics: PropTypes.object.isRequired,
+ deleteOptions: PropTypes.object.isRequired,
+ onDeleteOptionChange: PropTypes.func.isRequired,
+ onAddImportListExclusionChange: PropTypes.func.isRequired,
onDeletePress: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired
};
diff --git a/frontend/src/Series/Delete/DeleteSeriesModalContentConnector.js b/frontend/src/Series/Delete/DeleteSeriesModalContentConnector.js
index 8078a06fc..17d512a19 100644
--- a/frontend/src/Series/Delete/DeleteSeriesModalContentConnector.js
+++ b/frontend/src/Series/Delete/DeleteSeriesModalContentConnector.js
@@ -1,56 +1,44 @@
-import PropTypes from 'prop-types';
-import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
-import { deleteSeries } from 'Store/Actions/seriesActions';
+import { deleteSeries, setDeleteOption } from 'Store/Actions/seriesActions';
import createSeriesSelector from 'Store/Selectors/createSeriesSelector';
import DeleteSeriesModalContent from './DeleteSeriesModalContent';
function createMapStateToProps() {
return createSelector(
+ (state) => state.series.deleteOptions,
createSeriesSelector(),
- (series) => {
- return series;
+ (deleteOptions, series) => {
+ return {
+ ...series,
+ deleteOptions
+ };
}
);
}
-const mapDispatchToProps = {
- deleteSeries
-};
+function createMapDispatchToProps(dispatch, props) {
+ return {
+ setDeleteOption(option) {
+ dispatch(
+ setDeleteOption({
+ [option.name]: option.value
+ })
+ );
+ },
-class DeleteSeriesModalContentConnector extends Component {
+ onDeleteSelectedPress(deleteFiles, addImportListExclusion) {
+ dispatch(
+ deleteSeries({
+ id: props.seriesId,
+ deleteFiles,
+ addImportListExclusion
+ })
+ );
- //
- // Listeners
-
- onDeletePress = (deleteFiles, addImportListExclusion) => {
- this.props.deleteSeries({
- id: this.props.seriesId,
- deleteFiles,
- addImportListExclusion
- });
-
- this.props.onModalClose(true);
+ props.onModalClose(true);
+ }
};
-
- //
- // Render
-
- render() {
- return (
-
- );
- }
}
-DeleteSeriesModalContentConnector.propTypes = {
- seriesId: PropTypes.number.isRequired,
- onModalClose: PropTypes.func.isRequired,
- deleteSeries: PropTypes.func.isRequired
-};
-
-export default connect(createMapStateToProps, mapDispatchToProps)(DeleteSeriesModalContentConnector);
+export default connect(createMapStateToProps, createMapDispatchToProps)(DeleteSeriesModalContent);
diff --git a/frontend/src/Series/Editor/Delete/DeleteSeriesModalContent.js b/frontend/src/Series/Editor/Delete/DeleteSeriesModalContent.js
index 2692c3b7c..aa173d99e 100644
--- a/frontend/src/Series/Editor/Delete/DeleteSeriesModalContent.js
+++ b/frontend/src/Series/Editor/Delete/DeleteSeriesModalContent.js
@@ -20,8 +20,7 @@ class DeleteSeriesModalContent extends Component {
super(props, context);
this.state = {
- deleteFiles: false,
- addImportListExclusion: false
+ deleteFiles: false
};
}
@@ -32,17 +31,11 @@ class DeleteSeriesModalContent extends Component {
this.setState({ deleteFiles: value });
};
- onAddImportListExclusionChange = ({ value }) => {
- this.setState({ addImportListExclusion: value });
- };
-
onDeleteSeriesConfirmed = () => {
- const {
- addImportListExclusion,
- deleteFiles
- } = this.state;
+ const deleteFiles = this.state.deleteFiles;
+ const addImportListExclusion = this.props.deleteOptions.addImportListExclusion;
- this.setState({ deleteFiles: false, addImportListExclusion: false });
+ this.setState({ deleteFiles: false });
this.props.onDeleteSelectedPress(deleteFiles, addImportListExclusion);
};
@@ -52,11 +45,12 @@ class DeleteSeriesModalContent extends Component {
render() {
const {
series,
- onModalClose
+ deleteOptions,
+ onModalClose,
+ setDeleteOption
} = this.props;
const {
- addImportListExclusion,
deleteFiles
} = this.state;
@@ -74,9 +68,9 @@ class DeleteSeriesModalContent extends Component {
@@ -140,7 +134,9 @@ class DeleteSeriesModalContent extends Component {
DeleteSeriesModalContent.propTypes = {
series: PropTypes.arrayOf(PropTypes.object).isRequired,
+ deleteOptions: PropTypes.arrayOf(PropTypes.object).isRequired,
onModalClose: PropTypes.func.isRequired,
+ setDeleteOption: PropTypes.func.isRequired,
onDeleteSelectedPress: PropTypes.func.isRequired
};
diff --git a/frontend/src/Series/Editor/Delete/DeleteSeriesModalContentConnector.js b/frontend/src/Series/Editor/Delete/DeleteSeriesModalContentConnector.js
index b7d6b1d38..39c9ac4a4 100644
--- a/frontend/src/Series/Editor/Delete/DeleteSeriesModalContentConnector.js
+++ b/frontend/src/Series/Editor/Delete/DeleteSeriesModalContentConnector.js
@@ -1,6 +1,7 @@
import _ from 'lodash';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
+import { setDeleteOption } from 'Store/Actions/seriesActions';
import { bulkDeleteSeries } from 'Store/Actions/seriesEditorActions';
import createAllSeriesSelector from 'Store/Selectors/createAllSeriesSelector';
import DeleteSeriesModalContent from './DeleteSeriesModalContent';
@@ -8,8 +9,9 @@ import DeleteSeriesModalContent from './DeleteSeriesModalContent';
function createMapStateToProps() {
return createSelector(
(state, { seriesIds }) => seriesIds,
+ (state) => state.series.deleteOptions,
createAllSeriesSelector(),
- (seriesIds, allSeries) => {
+ (seriesIds, deleteOptions, allSeries) => {
const selectedSeries = _.intersectionWith(allSeries, seriesIds, (s, id) => {
return s.id === id;
});
@@ -23,7 +25,8 @@ function createMapStateToProps() {
});
return {
- series
+ series,
+ deleteOptions
};
}
);
@@ -31,12 +34,22 @@ function createMapStateToProps() {
function createMapDispatchToProps(dispatch, props) {
return {
+ setDeleteOption(option) {
+ dispatch(
+ setDeleteOption({
+ [option.name]: option.value
+ })
+ );
+ },
+
onDeleteSelectedPress(deleteFiles, addImportListExclusion) {
- dispatch(bulkDeleteSeries({
- seriesIds: props.seriesIds,
- deleteFiles,
- addImportListExclusion
- }));
+ dispatch(
+ bulkDeleteSeries({
+ seriesIds: props.seriesIds,
+ deleteFiles,
+ addImportListExclusion
+ })
+ );
props.onModalClose();
}
diff --git a/frontend/src/Store/Actions/seriesActions.js b/frontend/src/Store/Actions/seriesActions.js
index 3efad465f..3c695b675 100644
--- a/frontend/src/Store/Actions/seriesActions.js
+++ b/frontend/src/Store/Actions/seriesActions.js
@@ -384,9 +384,16 @@ export const defaultState = {
items: [],
sortKey: 'sortTitle',
sortDirection: sortDirections.ASCENDING,
- pendingChanges: {}
+ pendingChanges: {},
+ deleteOptions: {
+ addImportListExclusion: false
+ }
};
+export const persistState = [
+ 'series.deleteOptions'
+];
+
//
// Actions Types
@@ -399,6 +406,8 @@ export const TOGGLE_SERIES_MONITORED = 'series/toggleSeriesMonitored';
export const TOGGLE_SEASON_MONITORED = 'series/toggleSeasonMonitored';
export const UPDATE_SERIES_MONITOR = 'series/updateSeriesMonitor';
+export const SET_DELETE_OPTION = 'series/setDeleteOption';
+
//
// Action Creators
@@ -440,6 +449,8 @@ export const setSeriesValue = createAction(SET_SERIES_VALUE, (payload) => {
};
});
+export const setDeleteOption = createAction(SET_DELETE_OPTION);
+
//
// Helpers
@@ -655,6 +666,15 @@ export const actionHandlers = handleThunks({
export const reducers = createHandleActions({
- [SET_SERIES_VALUE]: createSetSettingValueReducer(section)
+ [SET_SERIES_VALUE]: createSetSettingValueReducer(section),
+
+ [SET_DELETE_OPTION]: (state, { payload }) => {
+ return {
+ ...state,
+ deleteOptions: {
+ ...payload
+ }
+ };
+ }
}, defaultState, section);