From f7ab3349f7379113dfcf82cb8e573c169d611a24 Mon Sep 17 00:00:00 2001 From: Mohammed Al-yaseen Date: Mon, 27 Oct 2025 18:56:59 +0300 Subject: [PATCH] nest routes --- src/pages/restaurant/page.tsx | 5 +- src/routes/routes.tsx | 151 +++++++++++++++++----------------- 2 files changed, 78 insertions(+), 78 deletions(-) diff --git a/src/pages/restaurant/page.tsx b/src/pages/restaurant/page.tsx index cdec5c9..5d505d8 100644 --- a/src/pages/restaurant/page.tsx +++ b/src/pages/restaurant/page.tsx @@ -13,12 +13,13 @@ import RestaurantServices from "./RestaurantServices"; import Ads1 from "components/Ads/Ads1"; import { Loader } from "components/Loader/Loader"; import { useRestaurant } from "hooks/useRestaurant"; -import { useParams } from "react-router-dom"; +import { useParams, Outlet, useLocation } from "react-router-dom"; import { useGetRestaurantDetailsQuery } from "redux/api/others"; import LocalStorageHandler from "../menu/components/LocalStorageHandler"; export default function RestaurantPage() { const param = useParams(); + const { pathname } = useLocation(); const { isRTL } = useAppSelector((state) => state.locale); const { data: restaurant, isLoading } = useGetRestaurantDetailsQuery("595", { skip: !param.id, @@ -39,6 +40,8 @@ export default function RestaurantPage() { localStorage.setItem("restaurantID", restaurant.restautantId); } + if (param.id && !pathname.endsWith(param.id)) return ; + return ( <>
diff --git a/src/routes/routes.tsx b/src/routes/routes.tsx index def79dc..d39927e 100644 --- a/src/routes/routes.tsx +++ b/src/routes/routes.tsx @@ -17,7 +17,7 @@ import SearchPage from "pages/search/page"; import SplitBillPage from "pages/split-bill/page"; import React, { ReactNode, Suspense, useEffect } from "react"; import { createHashRouter, useLocation } from "react-router-dom"; -import { Error400Page, ErrorPage } from "../pages/errors"; +import { Error400Page, ErrorPage } from "pages/errors"; const { useBreakpoint } = Grid; @@ -58,93 +58,90 @@ export const router = createHashRouter([ element: } />, errorElement: , }, - { path: "/:id", element: } />, errorElement: , - }, + children: [ + { + path: "menu", + element: } />, + errorElement: , + }, + { + path: "cart", + element: ( + + + + } + /> + ), + errorElement: , + }, - { - path: "/:id/menu", - element: } />, - errorElement: , - }, + { + path: "address", + element: } />, + errorElement: , + }, - { - path: "/:id/cart", - element: ( - - - - } - /> - ), - errorElement: , - }, + { + path: "checkout", + element: } />, + errorElement: , + }, + { + path: "split-bill", + element: } />, + errorElement: , + }, - { - path: "/:id/address", - element: } />, - errorElement: , - }, + { + path: "product/:productId", + element: } />, + errorElement: , + }, - { - path: "/:id/checkout", - element: } />, - errorElement: , - }, + { + path: "search", + element: } />, + errorElement: , + }, - { - path: "/:id/split-bill", - element: } />, - errorElement: , - }, + { + path: "orders", + element: ( + + + + } + /> + ), + errorElement: , + }, + { + path: "login", + element: } />, + errorElement: , + }, - { - path: "/:id/product/:productId", - element: } />, - errorElement: , - }, + { + path: "otp", + element: } />, + errorElement: , + }, - { - path: "/:id/search", - element: } />, - errorElement: , - }, - - { - path: "/:id/orders", - element: ( - - - - } - /> - ), - errorElement: , - }, - - { - path: "/:id/login", - element: } />, - errorElement: , - }, - - { - path: "/:id/otp", - element: } />, - errorElement: , - }, - - { - path: "/:id/order/:orderId", - element: } />, - errorElement: , + { + path: "order/:orderId", + element: } />, + errorElement: , + }, + ], }, {