import { Component } from 'react'; import StripeCheckout from 'react-stripe-checkout'; import { Mutation, Query } from 'react-apollo'; import Router from 'next/router'; import NProgress from 'nprogress'; import { CREATE_ORDER_MUTATION, CURRENT_USER_QUERY } from '../queries'; import calcTotalPrice from '../lib/calcTotalPrice'; function totalItems(cart) { return cart.reduce((tally, cartItem) => tally + cartItem.quantity, 0); } class TakeMyMoney extends Component { onToken = async (res, createOrder) => { NProgress.start(); const order = await createOrder({ variables: { token: res.id, }, }); // Route them to that order page const { id } = order.data.createOrder; Router.push({ pathname: `/order`, query: { id }, }); }; // TODO - refetchQueries after an order is created render() { return ( {({ data: { me } }) => { if (!me || !me.cart.length) return null; return ( {createOrder => ( this.onToken(res, createOrder)} stripeKey="pk_lclTtThFp8CnO3QtEZSd8HA9mFUps" currency="USD" email={me.email} > {this.props.children} )} ); }} ); } } export default TakeMyMoney;