import React from "react"; import { Toaster } from "@/components/ui/toaster"; import { Toaster as Sonner } from "@/components/ui/sonner"; import { TooltipProvider } from "@/components/ui/tooltip"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; import { useAuth, AuthProvider } from "@/contexts/AuthContext"; import { CartProvider } from "@/contexts/CartContext"; import { LanguageProvider } from "@/contexts/LanguageContext"; import ErrorBoundary from "@/components/ErrorBoundary"; import FrontendLayout from "@/components/layouts/FrontendLayout"; import Index from "./pages/Index"; import SignIn from "./pages/SignIn"; import SignUp from "./pages/SignUp"; import Explore from "./pages/Explore"; import { ListingDetails } from "./pages/ListingDetails"; import OfferDetails from "./pages/OfferDetails"; import Checkout from "./pages/Checkout"; import PaymentError from "./pages/PaymentError"; import OrderConfirmation from "./pages/OrderConfirmation"; import DashboardLayout from "./components/DashboardLayout"; import Dashboard from "./pages/dashboard/Dashboard"; import AdminDashboard from "./pages/dashboard/AdminDashboard"; import ChannelManager from "./pages/dashboard/ChannelManager"; import Wallet from "./pages/dashboard/Wallet"; import MyListings from "./pages/dashboard/MyListings"; import Messages from "./pages/dashboard/Messages"; import Reviews from "./pages/dashboard/Reviews"; import Bookings from "./pages/dashboard/Bookings"; import Bookmarks from "./pages/dashboard/Bookmarks"; import Profile from "./pages/dashboard/Profile"; import Settings from "./pages/dashboard/Settings"; import Invoices from "./pages/dashboard/Invoices"; import InvoiceDetail from "./pages/dashboard/InvoiceDetail"; import HotelManagement from "./pages/dashboard/HotelManagement"; import RestaurantPOS from "./pages/dashboard/RestaurantPOS"; import Personalization from "./pages/dashboard/Personalization"; // Hotel pages import HotelRooms from "./pages/dashboard/hotel/Rooms"; import HotelCheckIn from "./pages/dashboard/hotel/CheckIn"; import HotelRoomService from "./pages/dashboard/hotel/RoomServicePage"; import HotelKeyless from "./pages/dashboard/hotel/KeylessAccess"; import HotelStaff from "./pages/dashboard/hotel/Staff"; // Restaurant pages import RestaurantPOS_Terminal from "./pages/dashboard/restaurant/POSPage"; import RestaurantOrders from "./pages/dashboard/restaurant/Orders"; import RestaurantKitchen from "./pages/dashboard/restaurant/Kitchen"; import RestaurantBills from "./pages/dashboard/restaurant/Bills"; import RestaurantTables from "./pages/dashboard/restaurant/Tables"; import RestaurantMenu from "./pages/dashboard/restaurant/Menu"; import RestaurantInventory from "./pages/dashboard/restaurant/Inventory"; import RestaurantStaff from "./pages/dashboard/restaurant/Staff"; import NotFound from "./pages/NotFound"; const queryClient = new QueryClient(); // Protected Route Component const ProtectedRoute = ({ children }: { children: React.ReactNode }) => { const { isAuthenticated, isLoading } = useAuth(); if (isLoading) { return (
Loading...
); } return isAuthenticated ? <>{children} : ; }; // Router component that has access to Auth context const DashboardGate = () => { const { user, isLoading } = useAuth(); console.log('🚪 DashboardGate - user:', user ? { email: user.email, role: (user as any)?.role, roleId: (user as any)?.roleId } : 'null'); if (isLoading) { return (
Loading...
); } const role = (user as any)?.role; console.log('🚪 DashboardGate - checking role:', role, 'isAdmin?', (role === 'admin' || role === 'super_admin')); if (role === 'admin' || role === 'super_admin') { console.log('🚪 Redirecting to admin dashboard'); return ; } console.log('🚪 Showing regular dashboard'); return ( ); }; const AppRouter = () => ( {/* Public Routes with Frontend Layout */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* Protected Dashboard Routes */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* Catch-all route */} } /> ); const App = () => ( ); export default App;