import { Toaster as SonnerToast } from "@/components/ui/sonner"; import { TooltipProvider } from "@/components/ui/tooltip"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { BrowserRouter, Routes, Route, Outlet, Navigate, useLocation } from "react-router-dom"; import { useEffect } from "react"; import { AuthProvider, RequireAuth, useAuth } from "./lib/auth-context"; import ApiConnectionAlert from "./components/ApiConnectionAlert"; import QuickAccessWrapper from "./components/QuickAccessWrapper"; import Index from "./pages/Index"; import Login from "./pages/login"; import Dashboard from "./pages/dashboard"; import Projects from "./pages/projects"; import NewProject from "./pages/new-project"; import ProjectEdit from "./pages/project-edit"; import ProjectDetail from "./pages/project-detail"; import Teams from "./pages/teams"; import Backlog from "./pages/backlog"; import LandingPage from "./pages/LandingPage"; import Issues from "./pages/issues"; import NewIssue from "./pages/new-issue"; import IssueDetail from "./pages/issue-detail"; import IssueEdit from "./pages/issue-edit"; import Tasks from "./pages/tasks"; import TimeLogs from "./pages/time-logs"; import CalendarPage from "./pages/calendar"; import Reports from "./pages/reports"; import Messages from "./pages/messages"; import NotFound from "./pages/NotFound"; import Employees from "./pages/employees"; import EmployeeRegister from "./pages/employee-register"; import EmployeeDetail from "./pages/employee-detail"; import EmployeeEdit from "./pages/employee-edit/[id]"; import Roles from "./pages/roles"; import Permissions from "./pages/permissions"; import RolePermissions from "./pages/role-permissions"; import Features from "./pages/features"; import RoleFeatures from "./pages/role-features"; import Deliverables from "./pages/deliverables"; import NewDeliverable from "./pages/new-deliverable"; import DeliverablePage from "./pages/deliverable"; import DeliverableEdit from "./pages/deliverable-edit"; import Attendance from "./pages/attendance"; import { ThemeProvider } from "@/components/ThemeProvider"; import TaskForm from "@/pages/task-form"; import Settings from "@/pages/settings"; import Register from "@/pages/register"; import PrivateRoute from "@/components/PrivateRoute"; import Layout from "@/components/layout/layout"; import NewTaskPage from "@/pages/new-task"; import EditTaskPage from "@/pages/edit-task"; import TaskDetailPage from "@/pages/task-detail"; import DeliverableDetails from "@/pages/deliverable-details"; import Leaves from "@/pages/leaves"; import LeavesAdmin from "@/pages/leaves-admin"; import LeaveTypes from "@/pages/leave-types"; import LeaveBalances from "@/pages/leave-balances"; import MonthlyLeaveReport from "@/pages/monthly-leave-report"; import TodosPage from "@/pages/todos"; import Holidays from "@/pages/holidays"; // Bug Module Imports import Bugs from "@/pages/bugs"; import BugDetailPage from "@/pages/bug-detail"; import NewBug from "@/pages/new-bug"; import EditBug from "@/pages/edit-bug"; // Production Bug Module Imports import ProductionBugs from "@/pages/production-bugs"; import ProductionBugDetailPage from "@/pages/production-bug-detail"; // Test Cases Module Imports import TestCases from "@/pages/test-cases"; import TestCaseForm from "@/pages/test-case-form"; import TestCaseDetailPage from "@/pages/test-case-detail"; import EditTestCase from "@/pages/edit-test-case"; // Appraisal Module Imports import AppraisalCycles from "@/pages/appraisal/cycles"; import AssessmentAreas from "@/pages/appraisal/assessment-areas"; import Competencies from "@/pages/appraisal/competencies"; import MyAppraisals from "@/pages/appraisal/my-appraisals"; import AppraisalView from "@/pages/appraisal/appraisal-view"; import ManagerDashboard from "@/pages/appraisal/manager-dashboard"; import RoleQuestions from "@/pages/appraisal/role-questions"; import HrRemarks from "@/pages/appraisal/hr-remarks"; import ManagementRemarks from "@/pages/appraisal/management-remarks"; // Meeting Room Booking Module Imports import MeetingRoomsPage from "@/pages/meeting-room/rooms"; import BookRoomPage from "@/pages/meeting-room/book"; import BookingsPage from "@/pages/meeting-room/bookings"; import EditBookingPage from "@/pages/meeting-room/edit-booking"; import BookingDetailPage from "@/pages/meeting-room/booking-detail"; import RoomDetailPage from "@/pages/meeting-room/room-detail"; // Communication Trail Module Import import Communications from "@/pages/communications"; import ForgotPassword from "@/pages/forgot-password"; import ResetPassword from "@/pages/reset-password"; import EmployeeDetailsEdit from "./pages/employee-details-edit"; import MyProfile from "@/pages/my-profile"; // Employee Projects Module Imports import EmployeeProjects from "./pages/employee-projects"; import EmployeeProjectsList from "./pages/employee-projects-list"; import ResourceAllocation from "./pages/resource-allocation"; // Asset Management Module Imports import Assets from "./pages/asset-management/Assets"; import AssetDetails from "./pages/asset-management/AssetDetails"; import SystemDetails from "./pages/asset-management/SystemDetails"; import Assignments from "./pages/asset-management/Assignments"; import AssetRequestsPage from "./pages/asset-requests"; import AdminAssetRequestManagement from "./pages/admin/asset-request-management"; // Download App Page import DownloadApp from "@/pages/download-app"; // Gantt Chart import GanttChart from "@/pages/gantt-chart"; // PMP (Project Management Plan) import PMPPage from "@/pages/pmp"; // Health Dashboard import HealthDashboard from "./pages/health-dashboard"; // Import the date picker fix styles import "./styles/date-picker-fix.css"; const queryClient = new QueryClient(); // Client redirect component to ensure client users only access production bugs const ClientRedirect = () => { const { userData } = useAuth(); const location = useLocation(); if (userData?.roleName?.toLowerCase() === "client") { const isFromDashboard = location.pathname === "/" || location.pathname === ""; // If coming from dashboard, store this in session storage if (isFromDashboard) { sessionStorage.setItem('from-dashboard', 'true'); } return ; } return ; }; const App = () => { // Handle mobile-specific navigation issues useEffect(() => { // Fix for initial render issue - ensure the correct route is loaded const path = window.location.pathname; if (path === "/" || path === "") { console.log("Initial app load at root path"); } // Fix for Capacitor web view const handleError = (event: ErrorEvent) => { console.error("App error:", event.error); }; window.addEventListener('error', handleError); return () => { window.removeEventListener('error', handleError); }; }, []); return (
} /> }> } /> }> }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } />
); }; export default App;