import InstagramIcon from "components/Icons/social/InstagramIcon"; import JIcon from "components/Icons/social/JIcon"; import SnapIcon from "components/Icons/social/SnapIcon"; import XIcon from "components/Icons/social/XIcon"; import { LanguageSwitch } from "components/LanguageSwitch/LanguageSwitch"; import ProText from "components/ProText"; import ProTitle from "components/ProTitle"; import { useAppDispatch, useAppSelector } from "redux/hooks"; import styles from "./restaurant.module.css"; import RestaurantServices from "./RestaurantServices"; // Import the Client Component for localStorage handling import Ads1 from "components/Ads/Ads1"; import { OrderDetailsBottomSheet } from "components/CustomBottomSheet/orderDetailsSheet/OrderDetailsBottomSheet.tsx"; import { Loader } from "components/Loader/Loader"; import { CART_STORAGE_KEYS, updateOrderType, } from "features/order/orderSlice.ts"; import useBreakPoint from "hooks/useBreakPoint"; import { useRestaurant } from "hooks/useRestaurant"; import useSwipeUp from "hooks/useSwipeUp"; import { OrderType } from "pages/checkout/hooks/types.ts"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Link, Outlet, useLocation, useParams, useSearchParams, } from "react-router-dom"; import { useGetRestaurantDetailsQuery } from "redux/api/others"; import LocalStorageHandler from "../menu/components/LocalStorageHandler"; const storedOrderType = localStorage.getItem(CART_STORAGE_KEYS.ORDER_TYPE); export default function RestaurantPage() { const dispatch = useAppDispatch(); const { t } = useTranslation(); const param = useParams(); const [searchParams] = useSearchParams(); const { pathname } = useLocation(); const { orderType } = useAppSelector( (state) => state.order, ); const { isRTL } = useAppSelector((state) => state.locale); const { data: restaurant, isLoading } = useGetRestaurantDetailsQuery( param.subdomain, { skip: !param.subdomain, }, ); const [isOrderDetailsOpen, setIsOrderDetailsOpen] = useState(false); // const { containerRef, handleTouchEnd, handleTouchStart } = useSwipeUp({ // swipeAction: () => setIsOrderDetailsOpen(true), // isEnabled: isMobile && cartItems.length > 0, // }); // Automatically load restaurant taxes when restaurant data is available useRestaurant(restaurant); useEffect(() => { const urlOrderType = searchParams.get("orderType"); if (urlOrderType && urlOrderType !== orderType) dispatch(updateOrderType(urlOrderType as OrderType)); else if (storedOrderType && !orderType) dispatch(updateOrderType(storedOrderType as OrderType)); }, [searchParams, orderType, dispatch]); if (isLoading) return ; if (!restaurant) return
{t("Restaurant not found")}
; if (restaurant) { localStorage.setItem("restaurantID", restaurant.restautantId); } if (param.subdomain && !pathname.endsWith(param.subdomain)) return ; return ( <>
logo
{isRTL ? restaurant?.nameAR : restaurant?.restautantName} {isRTL ? restaurant?.descriptionAR : restaurant?.description}
{/*
*/}
{/* Order Details Bottom Sheet - Moved outside the container */} setIsOrderDetailsOpen(false)} /> ); }