import React, { Component } from 'react' import { graphql, gql } from 'react-apollo' import { CREATE_USER_MUTATION } from '../queries'; class Signup extends Component { constructor() { super(); const idToken = typeof window !== 'undefined' ? localStorage.getItem('auth0IdToken') || '' : ''; this.state = { email: '', name: '', idToken, error: undefined } } render() { return (
{ this.state.loading ? 'LOADING...' : 'Ready!' } { this.state.error ?

{this.state.error.message}

: '' }

Email this.setState({ email: e.target.value })} type='text' placeholder='email'/>

Name this.setState({ name: e.target.value })} type='text' placeholder='name'/>

idToken this.setState({ idToken: e.target.value })} type='text' placeholder='name'/>

) } _createUser = async (e) => { e.preventDefault(); // pull the values from state const { email, name, idToken } = this.state // create a mutation // TODO: handle any errors // turn loading on this.setState({ loading: true }); console.log(name, email, idToken); try { const res = await this.props.createUserMutation({ // pass in those variables from state variables: { name, email, idToken } }); } catch(error) { this.setState({ error }); console.dir(error); } this.setState({ loading: false }); } } // When we submit this mutation, we need to update our store - we have a few ways to do that: // One - we can go nucular and run refetchQueries() which will just go get everything - this is easy, but at the cost of efficiency. export default graphql(CREATE_USER_MUTATION, { name: 'createUserMutation', options: { // Easy, but slow // refetchQueries: ['AllLinksQuery'] // This is much Better / efficient // Notice how the variable is called createItem - that is because createItem is the name of the query! } })(Signup)