| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import { Grid, Typography } from '@mui/material';
- import { Box } from '@mui/system';
- import { useSession } from 'next-auth/react';
- import { useRouter } from 'next/router';
- import { setCookie } from 'nookies';
- import { useStore } from '../../store/cart-context';
- import { useCheckoutDataUpdate } from '../../store/checkout-context';
- import DataCard from '../cards/data-card/DataCard';
- import ShippingDetailsForm from '../forms/shipping-details/ShippingDetailsForm';
- import StepTitle from '../layout/steps-title/StepTitle';
-
- const CheckoutContent = () => {
- const { cartStorage } = useStore();
- const { addCheckoutValue } = useCheckoutDataUpdate();
-
- const { data: session } = useSession();
- const router = useRouter();
-
- const submitHandler = (formValues) => {
- addCheckoutValue(
- cartStorage,
- { ...formValues, email: session.user.email },
- session.user._id
- );
- setCookie(null, 'shipping-session', 'active', {
- maxAge: 3600,
- expires: new Date(Date.now() + 3600),
- path: '/',
- });
- router.push('/shipping');
- };
-
- const mapProductsToDom = () => {
- return cartStorage?.map((entry, i) => (
- <DataCard
- key={i}
- data={entry.product}
- quantity={entry.quantity}
- ></DataCard>
- ));
- };
-
- return (
- <Grid container spacing={2} sx={{ py: 10, height: '100%', width: '100%' }}>
- <StepTitle
- title="Items in Your Cart"
- breadcrumbsArray={['Cart', 'Checkout']}
- />
- <Grid item xs={12} sx={{ mt: 1 }}>
- <Typography sx={{ pl: 12, fontSize: 20 }}>
- The following fields will be used as the shipping details for your
- order
- </Typography>
- </Grid>
- <Grid item lg={8} xs={12}>
- <ShippingDetailsForm
- backBtn={true}
- isCheckout={true}
- submitHandler={submitHandler}
- ></ShippingDetailsForm>
- </Grid>
- <Grid item lg={4} xs={12}>
- <Box
- sx={{
- width: '80%',
- mt: 2,
- height: '100%',
- ml: { xs: 12, lg: 0 },
- display: { lg: 'block', xs: 'flex' },
- flexWrap: { xs: 'wrap', lg: 'none' },
- justifyContent: { xs: 'center', lg: 'none' },
- }}
- >
- {mapProductsToDom()}
- </Box>
- </Grid>
- </Grid>
- );
- };
-
- export default CheckoutContent;
|