import Agencies from "@/pages/agencies/ui/Agencies";
import AgencyDetail from "@/pages/agencies/ui/AgencyDetail";
import EditAgecy from "@/pages/agencies/ui/EditAgecy";
import Login from "@/pages/auth/ui/Login";
import Bookings from "@/pages/bookings/ui/Bookings";
import Employees from "@/pages/employees/ui/Employees";
import Faq from "@/pages/faq/ui/Faq";
import FaqCategory from "@/pages/faq/ui/FaqCategory";
import FinancePage from "@/pages/finance/ui/Finance";
import FinanceDetailTour from "@/pages/finance/ui/FinanceDetailTour";
import {
default as FinanceDetailUsers,
default as PurchaseDetailPage,
} from "@/pages/finance/ui/FinanceDetailUsers";
import AddNews from "@/pages/news/ui/AddNews";
import News from "@/pages/news/ui/News";
import NewsCategory from "@/pages/news/ui/NewsCategory";
import WithdrawRequestsList from "@/pages/payout-request/ui/PayoutRequest";
import Page from "@/pages/profile/ui/Profile";
import Seo from "@/pages/seo/ui/Seo";
import SiteBannerAdmin from "@/pages/site-banner/ui/Banner";
import PolicyCrud from "@/pages/site-page/ui/PolicyCrud";
import SitePage from "@/pages/site-page/ui/SitePage";
import SupportAgency from "@/pages/support/ui/SupportAgency";
import SupportTours from "@/pages/support/ui/SupportTours";
import TourSettings from "@/pages/tour-settings/ui/TourSettings";
import CreateEditTour from "@/pages/tours/ui/CreateEditTour";
import TourDetail from "@/pages/tours/ui/TourDetail";
import Tours from "@/pages/tours/ui/Tours";
import ToursSetting from "@/pages/tours/ui/ToursSetting";
import CreateUser from "@/pages/users/ui/Create";
import EditUser from "@/pages/users/ui/Edit";
import UserList from "@/pages/users/ui/User";
import UserDetail from "@/pages/users/ui/UserDetail";
import { getMe } from "@/shared/config/api/auth/api";
import "@/shared/config/i18n";
import { getAuthToken } from "@/shared/lib/authCookies";
import { cn } from "@/shared/lib/utils";
import { Sidebar } from "@/widgets/sidebar/ui/Sidebar";
import { useWelcomeStore } from "@/widgets/welcome/lib/hook";
import Welcome from "@/widgets/welcome/ui/welcome";
import { useQuery } from "@tanstack/react-query";
import { Loader2 } from "lucide-react";
import { useEffect } from "react";
import { Route, Routes, useLocation, useNavigate } from "react-router-dom";
const App = () => {
const token = getAuthToken();
const navigate = useNavigate();
const location = useLocation();
const { setOpenModal } = useWelcomeStore();
const { data: user, isLoading } = useQuery({
queryKey: ["get_me"],
queryFn: getMe,
select: (data) => data.data.data,
enabled: !!token,
});
const hideSidebarPaths = ["/login"];
const shouldShowSidebar = !hideSidebarPaths.includes(location.pathname);
// ✅ Modalni boshqarish
useEffect(() => {
if (
user &&
(!user.first_name || !user.last_name) &&
location.pathname !== "/login" &&
user.role !== "moderator"
) {
setOpenModal(true);
} else {
setOpenModal(false);
}
}, [user, location.pathname, setOpenModal]);
useEffect(() => {
if (!token) {
navigate("/login", { replace: true });
return;
}
if (!user) return;
if (location.pathname === "/") {
if (user.role === "tour_admin") {
navigate("/profile", { replace: true });
} else if (user.role === "moderator") {
navigate("/user", { replace: true });
} else if (user.role === "buxgalter") {
navigate("/finance", { replace: true });
} else {
navigate("/login", { replace: true });
}
}
}, [token, user, location.pathname, navigate]);
if (!token) {
return