From a6af043686e4375d7944e91cae3d5b63c59edab0 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Thu, 22 Mar 2018 16:29:31 -0400 Subject: Migrate to render props --- frontend/components/TakeMyMoney.js | 63 +++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 25 deletions(-) (limited to 'frontend/components/TakeMyMoney.js') diff --git a/frontend/components/TakeMyMoney.js b/frontend/components/TakeMyMoney.js index 011451a..20fc334 100644 --- a/frontend/components/TakeMyMoney.js +++ b/frontend/components/TakeMyMoney.js @@ -1,16 +1,23 @@ import { Component } from 'react'; import StripeCheckout from 'react-stripe-checkout'; -import { compose } from 'react-apollo'; +import { compose, Mutation, Query } from 'react-apollo'; import Router from 'next/router'; import NProgress from 'nprogress'; import PropTypes from 'prop-types'; -// import { CREATE_ORDER_MUTATION, CURRENT_USER_QUERY } from '../queries'; -import { userEnhancer, createOrderEnhancer } from '../enhancers/enhancers'; +import { CREATE_ORDER_MUTATION, CURRENT_USER_QUERY } from '../queries'; + +function totalItems(cart) { + return cart.reduce((tally, cartItem) => tally + cartItem.quantity, 0); +} + +function total(cart) { + return cart.reduce((tally, cartItem) => tally + cartItem.item.price * cartItem.quantity, 0); +} class TakeMyMoney extends Component { - onToken = async res => { + onToken = async (res, createOrder) => { NProgress.start(); - const order = await this.props.createOrder({ + const order = await createOrder({ variables: { token: res.id, }, @@ -18,29 +25,33 @@ class TakeMyMoney extends Component { // Route them to that order page const { id } = order.data.createOrder; Router.push({ - pathname: `/order/${id}`, + pathname: `/order`, query: { id }, }); }; - + // TODO - refetchQueries after an order is created render() { - const { me } = this.props.currentUser; - if (!me || !me.cart.length) return null; - const total = me.cart.reduce((tally, cartItem) => tally + cartItem.item.price * cartItem.quantity, 0); - const totalItems = me.cart.reduce((tally, cartItem) => tally + cartItem.quantity, 0); return ( - - {this.props.children} - + + {({ data: { me } }) => ( + + {createOrder => ( + this.onToken(res, createOrder)} + stripeKey="pk_lclTtThFp8CnO3QtEZSd8HA9mFUps" + currency="USD" + email={me.email} + > + {this.props.children} + + )} + + )} + ); } } @@ -50,5 +61,7 @@ TakeMyMoney.propTypes = { createOrder: PropTypes.func.isRequired, }; -export default compose(userEnhancer, createOrderEnhancer)(TakeMyMoney); -export { TakeMyMoney }; +// export default compose(userEnhancer, createOrderEnhancer)(TakeMyMoney); +// export { TakeMyMoney }; + +export default TakeMyMoney; -- cgit v1.3