Lidarr/frontend/src/Settings/DownloadClients/DownloadClientSettings.js

102 lines
2.6 KiB
JavaScript
Raw Normal View History

import PropTypes from 'prop-types';
import React, { Component, Fragment } from 'react';
2017-09-04 02:20:56 +00:00
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
2020-09-07 01:33:10 +00:00
import { icons } from 'Helpers/Props';
2017-09-04 02:20:56 +00:00
import SettingsToolbarConnector from 'Settings/SettingsToolbarConnector';
2021-10-03 15:01:09 +00:00
import translate from 'Utilities/String/translate';
2017-09-04 02:20:56 +00:00
import DownloadClientsConnector from './DownloadClients/DownloadClientsConnector';
import DownloadClientOptionsConnector from './Options/DownloadClientOptionsConnector';
import RemotePathMappingsConnector from './RemotePathMappings/RemotePathMappingsConnector';
class DownloadClientSettings extends Component {
//
// Lifecycle
constructor(props, context) {
super(props, context);
this._saveCallback = null;
2017-09-04 02:20:56 +00:00
this.state = {
isSaving: false,
2017-09-04 02:20:56 +00:00
hasPendingChanges: false
};
}
//
// Listeners
onChildMounted = (saveCallback) => {
this._saveCallback = saveCallback;
2017-09-04 02:20:56 +00:00
}
onChildStateChange = (payload) => {
this.setState(payload);
2017-09-04 02:20:56 +00:00
}
onSavePress = () => {
if (this._saveCallback) {
this._saveCallback();
}
2017-09-04 02:20:56 +00:00
}
//
// Render
render() {
const {
isTestingAll,
dispatchTestAllDownloadClients
} = this.props;
const {
isSaving,
hasPendingChanges
} = this.state;
2017-09-04 02:20:56 +00:00
return (
2021-10-03 15:01:09 +00:00
<PageContent title={translate('DownloadClientSettings')}>
2017-09-04 02:20:56 +00:00
<SettingsToolbarConnector
isSaving={isSaving}
hasPendingChanges={hasPendingChanges}
additionalButtons={
<Fragment>
<PageToolbarSeparator />
<PageToolbarButton
2021-10-03 15:01:09 +00:00
label={translate('TestAllClients')}
iconName={icons.TEST}
isSpinning={isTestingAll}
onPress={dispatchTestAllDownloadClients}
/>
</Fragment>
}
2017-09-04 02:20:56 +00:00
onSavePress={this.onSavePress}
/>
<PageContentBody>
2017-09-04 02:20:56 +00:00
<DownloadClientsConnector />
<DownloadClientOptionsConnector
onChildMounted={this.onChildMounted}
onChildStateChange={this.onChildStateChange}
2017-09-04 02:20:56 +00:00
/>
<RemotePathMappingsConnector />
</PageContentBody>
2017-09-04 02:20:56 +00:00
</PageContent>
);
}
}
DownloadClientSettings.propTypes = {
isTestingAll: PropTypes.bool.isRequired,
dispatchTestAllDownloadClients: PropTypes.func.isRequired
};
2017-09-04 02:20:56 +00:00
export default DownloadClientSettings;