Clean up container/component relationship

This commit is contained in:
Ken-Håvard Lieng 2017-05-27 07:30:22 +02:00
parent 8b0a53b375
commit 993d29242e
22 changed files with 384 additions and 372 deletions

View file

@ -1,48 +1,17 @@
import React, { PureComponent } from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import { createStructuredSelector } from 'reselect';
import Navicon from '../components/Navicon';
import FileInput from '../components/FileInput';
import Settings from '../components/pages/Settings';
import { getSettings, setCert, setKey, uploadCert } from '../state/settings';
class Settings extends PureComponent {
handleCertChange = (name, data) => this.props.dispatch(setCert(name, data));
handleKeyChange = (name, data) => this.props.dispatch(setKey(name, data));
handleCertUpload = () => this.props.dispatch(uploadCert());
render() {
const { settings } = this.props;
const status = settings.get('uploadingCert') ? 'Uploading...' : 'Upload';
const error = settings.get('certError');
return (
<div className="settings">
<Navicon />
<h1>Settings</h1>
<h2>Client Certificate</h2>
<div>
<p>Certificate</p>
<FileInput
name={settings.get('certFile') || 'Select Certificate'}
onChange={this.handleCertChange}
/>
</div>
<div>
<p>Private Key</p>
<FileInput
name={settings.get('keyFile') || 'Select Key'}
onChange={this.handleKeyChange}
/>
</div>
<button onClick={this.handleCertUpload}>{status}</button>
{ error ? <p className="error">{error}</p> : null }
</div>
);
}
}
const mapState = createStructuredSelector({
settings: getSettings
});
export default connect(mapState)(Settings);
const mapDispatch = dispatch => ({
onCertChange(name, data) { dispatch(setCert(name, data)); },
onKeyChange(name, data) { dispatch(setKey(name, data)); },
...bindActionCreators({ uploadCert }, dispatch)
});
export default connect(mapState, mapDispatch)(Settings);