New: Advanced settings toggle in indexer edit/add modal

(cherry picked from commit 94a8ef63044f47b615facbb6e04200bdd3797189)

Fixes #2506
This commit is contained in:
Qstick 2021-07-05 13:12:06 -04:00 committed by Bogdan
parent 751ade0338
commit 1a3e5fd738
4 changed files with 40 additions and 12 deletions

View file

@ -10,13 +10,14 @@ import styles from './AdvancedSettingsButton.css';
function AdvancedSettingsButton(props) { function AdvancedSettingsButton(props) {
const { const {
advancedSettings, advancedSettings,
onAdvancedSettingsPress onAdvancedSettingsPress,
showLabel
} = props; } = props;
return ( return (
<Link <Link
className={styles.button} className={styles.button}
title={advancedSettings ? translate('AdvancedSettingsShownClickToHide') : translate('AdvancedSettingsHiddenClickToShow')} title={advancedSettings ? translate('ShownClickToHide') : translate('HiddenClickToShow')}
onPress={onAdvancedSettingsPress} onPress={onAdvancedSettingsPress}
> >
<Icon <Icon
@ -43,18 +44,27 @@ function AdvancedSettingsButton(props) {
/> />
</span> </span>
<div className={styles.labelContainer}> {
<div className={styles.label}> showLabel ?
{advancedSettings ? 'Hide Advanced' : 'Show Advanced'} <div className={styles.labelContainer}>
</div> <div className={styles.label}>
</div> {advancedSettings ? translate('HideAdvanced') : translate('ShowAdvanced')}
</div>
</div> :
null
}
</Link> </Link>
); );
} }
AdvancedSettingsButton.propTypes = { AdvancedSettingsButton.propTypes = {
advancedSettings: PropTypes.bool.isRequired, advancedSettings: PropTypes.bool.isRequired,
onAdvancedSettingsPress: PropTypes.func.isRequired onAdvancedSettingsPress: PropTypes.func.isRequired,
showLabel: PropTypes.bool.isRequired
};
AdvancedSettingsButton.defaultProps = {
showLabel: true
}; };
export default AdvancedSettingsButton; export default AdvancedSettingsButton;

View file

@ -13,6 +13,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter'; import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader'; import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes, kinds } from 'Helpers/Props'; import { inputTypes, kinds } from 'Helpers/Props';
import AdvancedSettingsButton from 'Settings/AdvancedSettingsButton';
import translate from 'Utilities/String/translate'; import translate from 'Utilities/String/translate';
import styles from './EditIndexerModalContent.css'; import styles from './EditIndexerModalContent.css';
@ -31,6 +32,7 @@ function EditIndexerModalContent(props) {
onSavePress, onSavePress,
onTestPress, onTestPress,
onDeleteIndexerPress, onDeleteIndexerPress,
onAdvancedSettingsPress,
...otherProps ...otherProps
} = props; } = props;
@ -212,6 +214,12 @@ function EditIndexerModalContent(props) {
</Button> </Button>
} }
<AdvancedSettingsButton
advancedSettings={advancedSettings}
onAdvancedSettingsPress={onAdvancedSettingsPress}
showLabel={false}
/>
<SpinnerErrorButton <SpinnerErrorButton
isSpinning={isTesting} isSpinning={isTesting}
error={saveError} error={saveError}
@ -251,6 +259,7 @@ EditIndexerModalContent.propTypes = {
onModalClose: PropTypes.func.isRequired, onModalClose: PropTypes.func.isRequired,
onSavePress: PropTypes.func.isRequired, onSavePress: PropTypes.func.isRequired,
onTestPress: PropTypes.func.isRequired, onTestPress: PropTypes.func.isRequired,
onAdvancedSettingsPress: PropTypes.func.isRequired,
onDeleteIndexerPress: PropTypes.func onDeleteIndexerPress: PropTypes.func
}; };

View file

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { createSelector } from 'reselect'; import { createSelector } from 'reselect';
import { saveIndexer, setIndexerFieldValue, setIndexerValue, testIndexer } from 'Store/Actions/settingsActions'; import { saveIndexer, setIndexerFieldValue, setIndexerValue, testIndexer, toggleAdvancedSettings } from 'Store/Actions/settingsActions';
import createProviderSettingsSelector from 'Store/Selectors/createProviderSettingsSelector'; import createProviderSettingsSelector from 'Store/Selectors/createProviderSettingsSelector';
import EditIndexerModalContent from './EditIndexerModalContent'; import EditIndexerModalContent from './EditIndexerModalContent';
@ -23,7 +23,8 @@ const mapDispatchToProps = {
setIndexerValue, setIndexerValue,
setIndexerFieldValue, setIndexerFieldValue,
saveIndexer, saveIndexer,
testIndexer testIndexer,
toggleAdvancedSettings
}; };
class EditIndexerModalContentConnector extends Component { class EditIndexerModalContentConnector extends Component {
@ -56,6 +57,10 @@ class EditIndexerModalContentConnector extends Component {
this.props.testIndexer({ id: this.props.id }); this.props.testIndexer({ id: this.props.id });
}; };
onAdvancedSettingsPress = () => {
this.props.toggleAdvancedSettings();
};
// //
// Render // Render
@ -65,6 +70,7 @@ class EditIndexerModalContentConnector extends Component {
{...this.props} {...this.props}
onSavePress={this.onSavePress} onSavePress={this.onSavePress}
onTestPress={this.onTestPress} onTestPress={this.onTestPress}
onAdvancedSettingsPress={this.onAdvancedSettingsPress}
onInputChange={this.onInputChange} onInputChange={this.onInputChange}
onFieldChange={this.onFieldChange} onFieldChange={this.onFieldChange}
/> />
@ -80,6 +86,7 @@ EditIndexerModalContentConnector.propTypes = {
item: PropTypes.object.isRequired, item: PropTypes.object.isRequired,
setIndexerValue: PropTypes.func.isRequired, setIndexerValue: PropTypes.func.isRequired,
setIndexerFieldValue: PropTypes.func.isRequired, setIndexerFieldValue: PropTypes.func.isRequired,
toggleAdvancedSettings: PropTypes.func.isRequired,
saveIndexer: PropTypes.func.isRequired, saveIndexer: PropTypes.func.isRequired,
testIndexer: PropTypes.func.isRequired, testIndexer: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired onModalClose: PropTypes.func.isRequired

View file

@ -13,8 +13,6 @@
"AddNewItem": "Add New Item", "AddNewItem": "Add New Item",
"AddedAuthorSettings": "Added Author Settings", "AddedAuthorSettings": "Added Author Settings",
"AddingTag": "Adding tag", "AddingTag": "Adding tag",
"AdvancedSettingsHiddenClickToShow": "Hidden, click to show",
"AdvancedSettingsShownClickToHide": "Shown, click to hide",
"AgeWhenGrabbed": "Age (when grabbed)", "AgeWhenGrabbed": "Age (when grabbed)",
"All": "All", "All": "All",
"AllAuthorBooks": "All Author Books", "AllAuthorBooks": "All Author Books",
@ -325,6 +323,8 @@
"HasPendingChangesNoChanges": "No Changes", "HasPendingChangesNoChanges": "No Changes",
"HasPendingChangesSaveChanges": "Save Changes", "HasPendingChangesSaveChanges": "Save Changes",
"HealthNoIssues": "No issues with your configuration", "HealthNoIssues": "No issues with your configuration",
"HiddenClickToShow": "Hidden, click to show",
"HideAdvanced": "Hide Advanced",
"HideBooks": "Hide books", "HideBooks": "Hide books",
"History": "History", "History": "History",
"Host": "Host", "Host": "Host",
@ -731,6 +731,7 @@
"ShouldMonitorExistingHelpText": "Automatically monitor books on this list which are already in Readarr", "ShouldMonitorExistingHelpText": "Automatically monitor books on this list which are already in Readarr",
"ShouldMonitorHelpText": "Monitor new authors and books added from this list", "ShouldMonitorHelpText": "Monitor new authors and books added from this list",
"ShouldSearchHelpText": "Search indexers for newly added items. Use with caution for large lists.", "ShouldSearchHelpText": "Search indexers for newly added items. Use with caution for large lists.",
"ShowAdvanced": "Show Advanced",
"ShowBanners": "Show Banners", "ShowBanners": "Show Banners",
"ShowBannersHelpText": "Show banners instead of names", "ShowBannersHelpText": "Show banners instead of names",
"ShowBookCount": "Show Book Count", "ShowBookCount": "Show Book Count",
@ -754,6 +755,7 @@
"ShowTitleHelpText": "Show author name under poster", "ShowTitleHelpText": "Show author name under poster",
"ShowUnknownAuthorItems": "Show Unknown Author Items", "ShowUnknownAuthorItems": "Show Unknown Author Items",
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Shown above each column when week is the active view", "ShownAboveEachColumnWhenWeekIsTheActiveView": "Shown above each column when week is the active view",
"ShownClickToHide": "Shown, click to hide",
"Size": " Size", "Size": " Size",
"SizeLimit": "Size Limit", "SizeLimit": "Size Limit",
"SkipBooksWithMissingReleaseDate": "Skip books with missing release date", "SkipBooksWithMissingReleaseDate": "Skip books with missing release date",