Advertisement
Guest User

Untitled

a guest
Mar 12th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import { findDOMNode } from "react-dom";
  3. import { connect } from 'react-redux';
  4. import { loginSuccess } from '../../actions/login';
  5. import { browserHistory } from 'react-router';
  6. import superagent from 'superagent';
  7.  
  8. class LoginAndSignup extends Component {
  9.  
  10. constructor(props) {
  11. super(props);
  12. let url = this.props.route.path === '/registro' ? 'api/users' : 'api/users/authorize'
  13. this.state = {
  14. waiting: false,
  15. ready: false,
  16. url
  17. };
  18. }
  19.  
  20. doRequest(email, password) {
  21. superagent.post(this.state.url)
  22. .set('Accept', 'application/json')
  23. .send({
  24. user: {
  25. email: email,
  26. password: password
  27. }
  28. })
  29. .end((err, res) => {
  30. this.setState({ waiting: false });
  31. if (!err) {
  32. if (res.status === 200) {
  33. this.props.loginSuccess(res.body.token, res.body.user);
  34. }
  35. }
  36. });
  37. }
  38.  
  39. isReadyToSubmit() {
  40. let email = this.refs.emailInput.value;
  41. let password = this.refs.passwordInput.value;
  42. let ready = email.trim() && password.trim() ? true : false;
  43. this.setState({ready});
  44. }
  45.  
  46. onSubmit(e) {
  47. e && e.preventDefault();
  48. this.doRequest(this.refs.emailInput.value, this.refs.passwordInput.value);
  49. this.setState({waiting: true});
  50. }
  51.  
  52. shouldComponentUpdate(nextProps) {
  53. console.log(nextProps);
  54. if (nextProps.token) {
  55. console.log('token');
  56. browserHistory.push('/dashboard');
  57. return false;
  58. }
  59. return true;
  60. }
  61.  
  62. render() {
  63. let disabled = !!this.state.waiting || !!!this.state.ready;
  64. if (true) return (
  65. <form onSubmit={::this.onSubmit}>
  66. <div>
  67. <input type="email" placeholder="E-mail" ref="emailInput" onChange={::this.isReadyToSubmit}></input>
  68. </div>
  69. <div>
  70. <input type="password" placeholder="Contraseña" ref="passwordInput" onChange={::this.isReadyToSubmit}></input>
  71. </div>
  72. <div>
  73. <button disabled={disabled} type="submit">{this.props.route.path === '/registro' ? 'Regístrate' : 'Accede'}</button>
  74. </div>
  75. </form>
  76. );
  77. }
  78. }
  79.  
  80. export default connect(
  81. state => {
  82. return {
  83. session: state.session
  84. }
  85. },
  86. {
  87. loginSuccess
  88. }
  89. )(LoginAndSignup);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement