From 4fb8969f6994d8414f388f583d8e270d4e4a67e9 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Fri, 23 Mar 2018 11:11:09 -0400 Subject: ya --- frontend/components/Cart.js | 5 +---- frontend/components/CartCount.js | 8 ++++++- frontend/components/CartItem.js | 41 +++++++++++++++++++++-------------- frontend/components/RemoveFromCart.js | 7 +++++- frontend/components/Signin.js | 12 ++++++++-- frontend/components/TakeMyMoney.js | 9 +++----- 6 files changed, 52 insertions(+), 30 deletions(-) (limited to 'frontend/components') diff --git a/frontend/components/Cart.js b/frontend/components/Cart.js index fee757e..0a77754 100644 --- a/frontend/components/Cart.js +++ b/frontend/components/Cart.js @@ -6,6 +6,7 @@ import formatMoney from '../lib/formatMoney'; import { UIContext } from './UIContext'; import CartItem from './CartItem'; import { CURRENT_USER_QUERY } from '../queries/index'; +import calcTotalPrice from '../lib/calcTotalPrice'; const CartStyles = styled.div` padding: 20px; @@ -72,10 +73,6 @@ const CloseButton = styled.button` right: 0; `; -function calcTotalPrice(cart) { - return cart.reduce((tally, cartItem) => tally + cartItem.quantity * cartItem.item.price, 0); -} - const Cart = props => ( {context => ( diff --git a/frontend/components/CartCount.js b/frontend/components/CartCount.js index 245b07b..5af472a 100644 --- a/frontend/components/CartCount.js +++ b/frontend/components/CartCount.js @@ -42,7 +42,13 @@ const AnimationStyles = styled.span` const CartCount = ({ count }) => ( - + {count} diff --git a/frontend/components/CartItem.js b/frontend/components/CartItem.js index 895b688..6c6d575 100644 --- a/frontend/components/CartItem.js +++ b/frontend/components/CartItem.js @@ -20,22 +20,31 @@ const CartItemStyles = styled.li` } `; -const CartItem = ({ cartItem }) => ( - - {cartItem.item.title} -
-

{cartItem.item.title}

-

- {formatMoney(cartItem.quantity * cartItem.item.price)} - {' — '} - - {cartItem.quantity} × {formatMoney(cartItem.item.price)} each - -

-
- -
-); +const CartItem = ({ cartItem }) => { + if (!cartItem.item) + return ( + +

Ack! That Item is gone!

+ +
+ ); + return ( + + {cartItem.item.title} +
+

{cartItem.item.title}

+

+ {formatMoney(cartItem.quantity * cartItem.item.price)} + {' — '} + + {cartItem.quantity} × {formatMoney(cartItem.item.price)} each + +

+
+ +
+ ); +}; CartItem.propTypes = { cartItem: PropTypes.object.isRequired, diff --git a/frontend/components/RemoveFromCart.js b/frontend/components/RemoveFromCart.js index d8c81b0..752f0a8 100644 --- a/frontend/components/RemoveFromCart.js +++ b/frontend/components/RemoveFromCart.js @@ -28,7 +28,12 @@ class RemoveFromCart extends Component { render() { return ( - + {removeFromCart => ( × diff --git a/frontend/components/Signin.js b/frontend/components/Signin.js index a211528..9f9eb96 100644 --- a/frontend/components/Signin.js +++ b/frontend/components/Signin.js @@ -14,10 +14,13 @@ class Signin extends Component { e.preventDefault(); const res = await signin(); localStorage.setItem('token', res.data.signin.token); - return Promise.resolve('it worked'); // TODO refetch current user query }; + update = (proxy, result) => { + console.log(proxy, result); + }; + saveToState = e => { const { name, value } = e.target; this.setState({ [name]: value }); @@ -25,7 +28,12 @@ class Signin extends Component { render() { return ( - + {(signin, { data, loading, error }) => (
this.loginUser(e, signin)}> diff --git a/frontend/components/TakeMyMoney.js b/frontend/components/TakeMyMoney.js index e52b08c..6adf866 100644 --- a/frontend/components/TakeMyMoney.js +++ b/frontend/components/TakeMyMoney.js @@ -4,15 +4,12 @@ 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); } -function total(cart) { - return cart.reduce((tally, cartItem) => tally + cartItem.item.price * cartItem.quantity, 0); -} - class TakeMyMoney extends Component { onToken = async (res, createOrder) => { NProgress.start(); @@ -38,10 +35,10 @@ class TakeMyMoney extends Component { {createOrder => ( this.onToken(res, createOrder)} stripeKey="pk_lclTtThFp8CnO3QtEZSd8HA9mFUps" currency="USD" -- cgit v1.3