From 8f43c51103e4c84768c5d0a1c74e7e61f0d3a8dd Mon Sep 17 00:00:00 2001 From: kavabunga Date: Wed, 27 Dec 2023 03:06:14 +0200 Subject: [PATCH] feat: add redirect after checkout, protect success screen closes #181 --- src/pages/checkout/checkout-success/index.tsx | 11 +++++++---- src/pages/checkout/index.tsx | 5 ++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/pages/checkout/checkout-success/index.tsx b/src/pages/checkout/checkout-success/index.tsx index e9a54208..1c3e941f 100644 --- a/src/pages/checkout/checkout-success/index.tsx +++ b/src/pages/checkout/checkout-success/index.tsx @@ -1,18 +1,21 @@ import React from 'react'; -import { useLocation } from 'react-router'; +import { useLocation, useNavigate } from 'react-router'; import styles from './checkout-success.module.scss'; import OurBlock from '@components/our-block'; import { Link } from 'react-router-dom'; import OrderStatusTracker from '@components/order-status-tracker'; const CheckoutSuccess: React.FC = () => { - // TODO: Add check for active order and redirect const [order, setOrder] = React.useState(''); const location = useLocation(); + const navigate = useNavigate(); React.useEffect( - () => location.state?.order && setOrder(location.state.order), - [location] + () => + location.state?.order + ? setOrder(location.state.order) + : navigate('/', { replace: true }), + [location, navigate] ); return ( diff --git a/src/pages/checkout/index.tsx b/src/pages/checkout/index.tsx index a88faaa4..76ed3d5a 100644 --- a/src/pages/checkout/index.tsx +++ b/src/pages/checkout/index.tsx @@ -84,10 +84,9 @@ const Checkout: React.FC = () => { api .usersOrderCreate(formData) - .then(() => { - navigate('/cart'); + .then((res) => { + navigate('/cart/success', { state: { order: res.order_number } }); loadCartData(); - alert('заказ оформлен'); }) .catch((error) => { if (error.response && error.response.data && error.response.data.errors) {