Skip to content
Snippets Groups Projects

Persist submission form values with apollo-link-state

Merged Aanand Prasad requested to merge persist-submission-state into master
Files
7
import React from 'react'
import { Formik } from 'formik'
import { withRouter } from 'react-router-dom'
import { Mutation, Query } from 'react-apollo'
import gql from 'graphql-tag'
import AuthorDetails from './AuthorDetails'
import { schema, empty } from './AuthorDetailsSchema'
import { schema } from './AuthorDetailsSchema'
const GET_AUTHOR_DETAILS = gql`
query {
currentSubmission @client {
firstName
lastName
email
institute
assignee {
firstName
lastName
email
}
}
}
`
const UPDATE_AUTHOR_DETAILS = gql`
mutation($input: Submission) {
updateCurrentSubmission(input: $input) @client
}
`
const AuthorDetailsPage = ({ history }) => (
<Formik
component={AuthorDetails}
initialValues={empty}
onSubmit={values => {
history.push('/submit/upload')
<Query query={GET_AUTHOR_DETAILS}>
{({ loading, error, data, client }) => {
if (loading) return <div>Loading...</div>
if (error) {
console.error(error)
return <div>{String(error)}</div>
}
return (
<Mutation mutation={UPDATE_AUTHOR_DETAILS}>
{updateAuthorDetails => (
<Formik
component={AuthorDetails}
initialValues={data.currentSubmission}
onSubmit={values =>
updateAuthorDetails({
variables: { input: values },
}).then(() => {
history.push('/submit/upload')
})
}
validationSchema={schema}
/>
)}
</Mutation>
)
}}
validationSchema={schema}
/>
</Query>
)
export default withRouter(AuthorDetailsPage)