import React, { Component } from 'react'; import { Mutation } from 'react-apollo'; import Router from 'next/router'; import gql from 'graphql-tag'; import Error from './ErrorMessage'; import Form from './styles/Form'; import formatMoney from '../lib/formatMoney'; const CREATE_ITEM_MUTATION = gql` mutation CREATE_ITEM_MUTATION( $description: String! $title: String! $price: Int! $image: String $largeImage: String ) { createItem( description: $description title: $title price: $price image: $image largeImage: $largeImage ) { id } } `; class CreateItem extends Component { state = { title: '', description: '', image: '', largeImage: '', price: 0, }; handleChange = e => { const { name, value, type } = e.target; const val = type === 'number' ? parseFloat(value) : value; this.setState({ [name]: val }); }; uploadFile = async e => { this.setState({ loading: true }); const files = e.currentTarget.files; const data = new FormData(); data.append('file', files[0]); data.append('upload_preset', 'sickfits'); // use the file endpoint const res = await fetch('https://api.cloudinary.com/v1_1/wesbos/image/upload', { method: 'POST', body: data, }); const file = await res.json(); this.setState({ image: file.secure_url, largeImage: file.eager[0].secure_url, loading: false, }); }; render() { return ( {(createItem, { loading, error }) => (
{ e.preventDefault(); const { data: { createItem: item } } = await createItem(); Router.push({ pathname: `/item`, query: { id: item.id }, }); }} >

Sell an Item.