client/src/components/SessionForm.js
author Alexandre Segura <mex.zktk@gmail.com>
Thu, 29 Jun 2017 17:11:56 +0200
changeset 108 732adc46c8b8
parent 106 fffefefed507
child 129 d48946d164c6
permissions -rw-r--r--
Change add group button design.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     1
import React, { Component } from 'react';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     2
import { connect } from 'react-redux';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     3
import { bindActionCreators } from 'redux';
108
732adc46c8b8 Change add group button design.
Alexandre Segura <mex.zktk@gmail.com>
parents: 106
diff changeset
     4
import { Panel, FormGroup, ControlLabel, FormControl, Button, InputGroup, HelpBlock, Glyphicon } from 'react-bootstrap';
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     5
import '../App.css';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     6
import * as sessionsActions from '../actions/sessionsActions';
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
     7
import * as authActions from '../actions/authActions';
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     8
import _ from 'lodash';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     9
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    10
class SessionForm extends Component {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    11
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    12
  state = {
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    13
    createGroup: false
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    14
  }
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    15
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    16
  toggleCreateGroup = (e) => {
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    17
    e.preventDefault();
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    18
    const { createGroup } = this.state;
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    19
    this.setState({ createGroup: !createGroup });
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    20
  }
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    21
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    22
  onClickCreateGroup = (e) => {
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    23
    e.preventDefault();
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    24
    const groupName = this.groupName.value;
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    25
    this.props.sessionsActions.createGroupAndUpdateSession(this.props.currentSession, groupName);
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    26
  }
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    27
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    28
  onChange = (e) => {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    29
    const { name, value } = e.target;
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    30
    const changes = { [name]: value }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    31
    this.onChangeThrottle(changes);
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    32
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    33
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    34
  onChangeThrottle = _.debounce((changes) => {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    35
    this.props.sessionsActions.updateSession(this.props.currentSession, changes);
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    36
  }, 750)
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    37
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    38
  onGroupChange = (e) => {
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    39
    const groupId = parseInt(this.group.value, 10);
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    40
    const group = this.props.groups.find(group => group.id === groupId);
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    41
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    42
    this.props.sessionsActions.updateSession(this.props.currentSession, { group });
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    43
  }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    44
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    45
  componentWillUpdate = (nextProps, nextState) => {
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    46
    if (nextState.createGroup && nextProps.createGroup.get('success')) {
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    47
      this.setState({ createGroup: false })
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    48
    }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    49
  }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    50
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    51
  renderCreateGroup = () => {
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    52
    const { createGroup } = this.props;
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    53
    const hasErrors = true === createGroup.get('error') && createGroup.get('errorMessages').has('name');
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    54
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    55
    let errors = [];
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    56
    if (hasErrors) {
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    57
      const errorMessages = createGroup.get('errorMessages').toArray();
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    58
      errors = errorMessages.map((message, key) => {
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    59
        return (
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    60
          <HelpBlock key={ key }>{ message }</HelpBlock>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    61
        )
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    62
      })
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    63
    }
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    64
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    65
    if (this.state.createGroup) {
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    66
      return (
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    67
        <FormGroup validationState={ hasErrors ? 'error' : null }>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    68
          <InputGroup>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    69
            <FormControl
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    70
              type="text"
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    71
              placeholder="Enter a name for your group"
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    72
              inputRef={ ref => { this.groupName = ref; } } />
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    73
            <InputGroup.Button>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    74
              <Button bsStyle="primary" onClick={ this.onClickCreateGroup }>Create</Button>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    75
            </InputGroup.Button>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    76
          </InputGroup>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    77
          { errors }
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    78
          <hr />
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    79
          <Button onClick={ this.toggleCreateGroup }>Cancel</Button>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    80
        </FormGroup>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    81
      )
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    82
    }
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    83
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    84
    return (
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    85
      <FormGroup>
108
732adc46c8b8 Change add group button design.
Alexandre Segura <mex.zktk@gmail.com>
parents: 106
diff changeset
    86
        <Button className="pull-right" bsSize="small" onClick={ this.toggleCreateGroup }>
732adc46c8b8 Change add group button design.
Alexandre Segura <mex.zktk@gmail.com>
parents: 106
diff changeset
    87
          <Glyphicon glyph="plus" />  Create a new group
732adc46c8b8 Change add group button design.
Alexandre Segura <mex.zktk@gmail.com>
parents: 106
diff changeset
    88
        </Button>
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    89
      </FormGroup>
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    90
    )
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    91
  }
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    92
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    93
  render() {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    94
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    95
    if (!this.props.currentSession) {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    96
      return (
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    97
        <form></form>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    98
      )
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    99
    }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   100
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   101
    return (
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   102
      <Panel>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   103
        <form onSubmit={ e => { e.preventDefault() } }>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   104
          <FormGroup>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   105
            <ControlLabel>Title</ControlLabel>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   106
            <FormControl
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   107
              name="title"
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   108
              defaultValue={ this.props.currentSession.title }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   109
              onChange={ this.onChange }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   110
              type="text"
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   111
              placeholder="Enter a title"
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   112
              inputRef={ ref => { this.title = ref; } }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   113
            />
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   114
          </FormGroup>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   115
          <FormGroup>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   116
            <ControlLabel>Description</ControlLabel>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   117
            <FormControl
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   118
              name="description"
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   119
              componentClass="textarea"
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   120
              defaultValue={ this.props.currentSession.description }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   121
              onChange={ this.onChange }
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   122
              placeholder="Enter a description"
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   123
              inputRef={ ref => { this.description = ref; } }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   124
            />
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   125
          </FormGroup>
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
   126
          <FormGroup>
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   127
            <ControlLabel>Group</ControlLabel>
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   128
            <FormControl
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   129
              name="group"
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   130
              componentClass="select"
106
fffefefed507 Fix bug when there is no group.
Alexandre Segura <mex.zktk@gmail.com>
parents: 101
diff changeset
   131
              value={ this.props.group ? this.props.group.id : '' }
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   132
              onChange={ this.onGroupChange }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   133
              inputRef={ ref => { this.group = ref; } }>
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   134
              <option />
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   135
              { this.props.groups.map((group, key) =>
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   136
                <option key={ key } value={ group.id }>{ group.name }</option>
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   137
              ) }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   138
            </FormControl>
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   139
          </FormGroup>
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   140
          <FormGroup>
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
   141
            { this.renderCreateGroup() }
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
   142
          </FormGroup>
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   143
        </form>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   144
      </Panel>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   145
    );
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   146
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   147
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   148
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   149
function mapStateToProps(state, props) {
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   150
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   151
  let group;
106
fffefefed507 Fix bug when there is no group.
Alexandre Segura <mex.zktk@gmail.com>
parents: 101
diff changeset
   152
  if (props.session && props.session.group) {
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   153
    group = state.groups.find(group => props.session.group.get('id') === group.id)
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   154
  }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   155
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   156
  return {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   157
    currentSession: props.session,
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   158
    createGroup: state.createGroup,
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   159
    groups: state.groups,
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   160
    group
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   161
  };
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   162
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   163
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   164
function mapDispatchToProps(dispatch) {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   165
  return {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   166
    sessionsActions: bindActionCreators(sessionsActions, dispatch),
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
   167
    authActions: bindActionCreators(authActions, dispatch),
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   168
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   169
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   170
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   171
export default connect(mapStateToProps, mapDispatchToProps)(SessionForm);