diff --git a/src/pages/order/page.tsx b/src/pages/order/page.tsx index 196b738..f3119cd 100644 --- a/src/pages/order/page.tsx +++ b/src/pages/order/page.tsx @@ -11,9 +11,13 @@ import ProInputCard from "components/ProInputCard/ProInputCard"; import ProText from "components/ProText"; import ProTitle from "components/ProTitle"; import dayjs from "dayjs"; +import { useEffect, useRef } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate, useParams } from "react-router-dom"; -import { useGetOrderDetailsQuery } from "redux/api/others"; +import { + useGetOrderDetailsQuery, + useGetRestaurantDetailsQuery, +} from "redux/api/others"; import { useAppSelector } from "redux/hooks"; import Stepper from "./components/Stepper"; import styles from "./order.module.css"; @@ -27,6 +31,7 @@ export default function OrderPage() { const { isRTL } = useAppSelector((state) => state.locale); const { restaurant } = useAppSelector((state) => state.order); const navigate = useNavigate(); + const hasRefetchedRef = useRef(false); const { data: orderDetails } = useGetOrderDetailsQuery( { @@ -41,6 +46,34 @@ export default function OrderPage() { }, ); + // Get restaurant subdomain for refetching + const restaurantSubdomain = restaurant?.subdomain; + const { refetch: refetchRestaurantDetails } = useGetRestaurantDetailsQuery( + restaurantSubdomain || "", + { + skip: !restaurantSubdomain, + }, + ); + + // Reset refetch flag when orderId changes + useEffect(() => { + hasRefetchedRef.current = false; + }, [orderId]); + + // Refetch restaurant details when order status has alias "closed" + useEffect(() => { + if (orderDetails?.status && !hasRefetchedRef.current) { + const hasClosedStatus = orderDetails.status.some( + (status) => status?.alias === "closed", + ); + + if (hasClosedStatus && restaurantSubdomain) { + refetchRestaurantDetails(); + hasRefetchedRef.current = true; + } + } + }, [orderDetails?.status, restaurantSubdomain, refetchRestaurantDetails]); + return ( <> {t("order.title")}