client/src/components/Settings.js
author ymh <ymh.work@gmail.com>
Wed, 18 Jul 2018 17:32:09 +0200
changeset 142 56850f5c73f6
parent 129 d48946d164c6
child 143 cfcbf4bc66f1
permissions -rw-r--r--
- upgrade libraries - python 3.7 compatibility - First protocol management implementation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     1
import React, { Component } from 'react';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     2
import { connect } from 'react-redux';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     3
import { bindActionCreators } from 'redux';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     4
import { Grid, Row, Col, Button, FormGroup, ControlLabel, FormControl } from 'react-bootstrap';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     5
import '../App.css';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     6
import Navbar from './Navbar';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     7
import * as userActions from '../actions/userActions';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     8
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     9
class Settings extends Component {
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    10
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    11
  updateSettings = () => {
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    12
    const username = this.props.currentUser.username;
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    13
    const firstname = this.firstname.value;
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    14
    const lastname = this.lastname.value;
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    15
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    16
    this.props.userActions.updateSettings(username, firstname, lastname);
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    17
  }
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    18
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    19
  render() {
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    20
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    21
    const firstname = this.props.currentUser ? this.props.currentUser.first_name : '';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    22
    const lastname = this.props.currentUser ? this.props.currentUser.last_name : '';
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    23
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    24
    return (
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    25
      <div>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    26
        <Navbar history={this.props.history} />
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    27
        <Grid fluid>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    28
          <Row>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    29
            <Col md={6} mdOffset={3}>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    30
              <form>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    31
                <FormGroup>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    32
                  <ControlLabel>First name</ControlLabel>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    33
                  <FormControl
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    34
                    name="firstname"
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    35
                    defaultValue={ firstname }
142
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    36
                    placeholder="First Name"
53
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    37
                    inputRef={ ref => { this.firstname = ref; } }
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    38
                  />
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    39
                </FormGroup>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    40
                <FormGroup>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    41
                  <ControlLabel>Last name</ControlLabel>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    42
                  <FormControl
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    43
                    name="lastname"
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    44
                    defaultValue={ lastname }
142
56850f5c73f6 - upgrade libraries
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    45
                    placeholder="Last Name"
53
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    46
                    inputRef={ ref => { this.lastname = ref; } }
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    47
                  />
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    48
                </FormGroup>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    49
              </form>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    50
              <Button block bsStyle="success" onClick={this.updateSettings}>Save settings</Button>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    51
            </Col>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    52
          </Row>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    53
        </Grid>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    54
      </div>
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    55
    );
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    56
  }
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    57
}
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    58
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    59
function mapStateToProps(state, props) {
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    60
  return {
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 66
diff changeset
    61
    currentUser: state.getIn(['authStatus', 'currentUser']),
53
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    62
  };
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    63
}
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    64
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    65
function mapDispatchToProps(dispatch) {
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    66
  return {
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    67
    userActions: bindActionCreators(userActions, dispatch)
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    68
  }
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    69
}
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    70
d8588379529e Add settings page.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    71
export default connect(mapStateToProps, mapDispatchToProps)(Settings);