Advertisement
Guest User

Untitled

a guest
Aug 27th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. /* @flow */
  2.  
  3. import React from 'react';
  4. import Relay from 'react-relay';
  5.  
  6. import cookies from 'browser-cookies';
  7.  
  8. import LoginForm from './LoginForm';
  9. import LoginMutation from './mutations/LoginMutation';
  10.  
  11.  
  12. class Login extends React.Component {
  13. props: {
  14. relay: Object,
  15. viewer: Object,
  16. };
  17.  
  18. state: {
  19. isSubmitting: boolean,
  20. errorMsg: ?string,
  21. };
  22.  
  23. constructor(props) {
  24. super(props);
  25. this.state = {
  26. isSubmitting: false,
  27. errorMsg: null,
  28. };
  29. }
  30.  
  31. submit = (values) => {
  32. const { relay, viewer } = this.props;
  33.  
  34. this.setState({isSubmitting: true});
  35.  
  36. relay.commitUpdate(
  37. new LoginMutation({
  38. values,
  39. viewer,
  40. }), {
  41. onSuccess: ({ login }) => {
  42. const { token } = login;
  43. const { currentUser } = login.viewer;
  44.  
  45. if (token && currentUser) {
  46. cookies.set('token', token);
  47. /* do something else, like navigate, or close the form */
  48. } else {
  49. this.setState({errorMsg: 'BAD!', isSubmitting: false});
  50. }
  51. }
  52. },
  53. );
  54. };
  55.  
  56. render() {
  57. const { errorMsg, isSubmitting } = this.state;
  58.  
  59. return (
  60. <div>
  61. {errorMsg}
  62. <LoginForm isSubmitting={isSubmitting} onSubmit={this.submit} initialModel={{
  63. username: '',
  64. password: '',
  65. }} />
  66. </div>
  67. );
  68. }
  69. }
  70.  
  71.  
  72. export default Relay.createContainer(Login, {
  73. fragments: {
  74. node: () => Relay.QL`
  75. fragment on Viewer {
  76. ${LoginMutation.getFragment('viewer')}
  77. }
  78. `,
  79. },
  80. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement