auto update for restaurant upon success order
This commit is contained in:
@@ -11,9 +11,13 @@ import ProInputCard from "components/ProInputCard/ProInputCard";
|
|||||||
import ProText from "components/ProText";
|
import ProText from "components/ProText";
|
||||||
import ProTitle from "components/ProTitle";
|
import ProTitle from "components/ProTitle";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
import { useEffect, useRef } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useNavigate, useParams } from "react-router-dom";
|
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 { useAppSelector } from "redux/hooks";
|
||||||
import Stepper from "./components/Stepper";
|
import Stepper from "./components/Stepper";
|
||||||
import styles from "./order.module.css";
|
import styles from "./order.module.css";
|
||||||
@@ -27,6 +31,7 @@ export default function OrderPage() {
|
|||||||
const { isRTL } = useAppSelector((state) => state.locale);
|
const { isRTL } = useAppSelector((state) => state.locale);
|
||||||
const { restaurant } = useAppSelector((state) => state.order);
|
const { restaurant } = useAppSelector((state) => state.order);
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
const hasRefetchedRef = useRef(false);
|
||||||
|
|
||||||
const { data: orderDetails } = useGetOrderDetailsQuery(
|
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 (
|
return (
|
||||||
<>
|
<>
|
||||||
<ProHeader>{t("order.title")}</ProHeader>
|
<ProHeader>{t("order.title")}</ProHeader>
|
||||||
|
|||||||
Reference in New Issue
Block a user