Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

CheckoutContent.tsx 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { Box } from '@mui/system';
  2. import { useSession } from 'next-auth/react';
  3. import { useTranslation } from 'next-i18next';
  4. import { useRouter } from 'next/router';
  5. import { setCookie } from 'nookies';
  6. import { useEffect, useState } from 'react';
  7. import { useStore } from '../../store/cart-context';
  8. import { useCheckoutDataUpdate } from '../../store/checkout-context';
  9. import CardContainer from '../cards/card-container/CardContainer';
  10. import DataCard from '../cards/data-card/DataCard';
  11. import ShippingDetailsForm from '../forms/shipping-details/ShippingDetailsForm';
  12. import ContentContainer from '../layout/content-wrapper/ContentContainer';
  13. import PageWrapper from '../layout/page-wrapper/PageWrapper';
  14. import StepTitle from '../layout/steps-title/StepTitle';
  15. import PageDescription from '../page-description/PageDescription';
  16. const CheckoutContent = () => {
  17. const { t } = useTranslation('cart');
  18. const { cartStorage } = useStore();
  19. const { addCheckoutValue } = useCheckoutDataUpdate();
  20. const [cartData, setCartData] = useState([]);
  21. const { data: session } = useSession();
  22. const router = useRouter();
  23. useEffect(() => {
  24. setCartData(cartStorage);
  25. }, [cartStorage]);
  26. const submitHandler = (formValues) => {
  27. addCheckoutValue(
  28. cartData,
  29. { ...formValues, email: session.user.email },
  30. session.user._id
  31. );
  32. setCookie(null, 'shipping-session', 'active', {
  33. maxAge: 3600,
  34. expires: new Date(Date.now() + 3600),
  35. path: '/',
  36. });
  37. router.push('/shipping');
  38. };
  39. const mapProductsToDom = () => {
  40. return cartData?.map((entry, i) => (
  41. <DataCard
  42. key={i}
  43. data={entry.product}
  44. quantity={entry.quantity}
  45. ></DataCard>
  46. ));
  47. };
  48. return (
  49. <PageWrapper>
  50. <StepTitle
  51. title={t('checkout:title')}
  52. breadcrumbsArray={['Cart', 'Checkout']}
  53. />
  54. <PageDescription description={t('checkout:subtitle')} />
  55. <ContentContainer>
  56. <Box flexGrow={1} sx={{ minWidth: '65%' }}>
  57. <ShippingDetailsForm
  58. backBtn={true}
  59. isCheckout={true}
  60. submitHandler={submitHandler}
  61. ></ShippingDetailsForm>
  62. </Box>
  63. <CardContainer>{mapProductsToDom()}</CardContainer>
  64. </ContentContainer>
  65. </PageWrapper>
  66. );
  67. };
  68. export default CheckoutContent;