/* global localStorage */ var React = require('react/addons') var ReactRouter = require('react-router') var Link = ReactRouter.Link var AuthFilter = require('../Mixins/AuthFilter') var LinkedState = require('../Mixins/LinkedState') var Hq = require('../Services/Hq') var socket = require('../Services/socket') module.exports = React.createClass({ mixins: [LinkedState, ReactRouter.Navigation, AuthFilter.OnlyGuest], getInitialState: function () { return { user: {}, authenticationFailed: false, connectionFailed: false, isSending: false } }, onListen: function (res) { if (res.status === 'failedToLogIn') { if (res.data.status === 401) { // Wrong E-mail or Password this.setState({ authenticationFailed: true, connectionFailed: false, isSending: false }) return } // Connection Failed or Whatever this.setState({ authenticationFailed: false, connectionFailed: true, isSending: false }) return } }, handleSubmit: function (e) { this.setState({ authenticationFailed: false, connectionFailed: false, isSending: true }, function () { Hq.login(this.state.user) .then(function (res) { localStorage.setItem('token', res.body.token) localStorage.setItem('currentUser', JSON.stringify(res.body.user)) socket.reconnect() this.transitionTo('userHome', {userName: res.body.user.name}) }.bind(this)) .catch(function (err) { if (err.status === 401) { this.setState({ authenticationFailed: true, connectionFailed: false, isSending: false }) return } this.setState({ authenticationFailed: false, connectionFailed: true, isSending: false }) }.bind(this)) }) e.preventDefault() }, render: function () { return (
{this.state.isSending ? (

Logging in...

) : null} {this.state.connectionFailed ? (

Please try again.

) : null} {this.state.authenticationFailed ? (

Wrong E-mail or Password.

) : null}
) } })