import React, { useContext, useEffect, useState } from "react"; import { CgProfile } from "react-icons/cg"; import logoMiniDark from "../assets/favicon.png"; import logoMini from "../assets/logo-min.png"; import logoDark from "../assets/logo.png"; import logo from "../assets/logo2.png"; import { ArrowBackIcon, ArrowLeftIcon, ArrowRightIcon, AtSignIcon, } from "@chakra-ui/icons"; import { Accordion, AccordionButton, AccordionIcon, AccordionItem, AccordionPanel, Alert, AlertIcon, Box, Button, Image, Text, Tooltip, } from "@chakra-ui/react"; import Cookies from "js-cookie"; // Import the Cookies library import { GrManual } from "react-icons/gr"; import { HiOutlineChartSquareBar } from "react-icons/hi"; import { HiOutlineBanknotes } from "react-icons/hi2"; import { LuContact } from "react-icons/lu"; import { MdNotificationsNone, MdOutlineAddChart } from "react-icons/md"; import { RiAccountBoxLine, RiBankLine, RiExchangeBoxLine, RiFileUserLine, RiMoneyDollarBoxLine, } from "react-icons/ri"; import { TbLayoutDashboard, TbListDetails, TbReportMoney, TbTransactionDollar, } from "react-icons/tb"; import { VscSymbolClass } from "react-icons/vsc"; import { Link, NavLink, Route, Routes, useLocation, useNavigate, } from "react-router-dom"; import HeaderMain from "../Components/HeaderMain"; import { isMaker } from "../Constants/Constants"; import GlobalStateContext from "../Contexts/GlobalStateContext"; import CreateRequest from "../Pages/Fawateer/CreateRequest"; import ApproveHistory from "../Pages/FawateerChecker/ApproveHistory/ApproveHistoryChecker"; import ApproveHistoryMaker from "../Pages/FawateerChecker/ApproveHistory/ApproveHistoryMaker"; import ApproveRequest from "../Pages/FawateerChecker/ApproveRequest/ApproveRequest"; import NotFound from "../Pages/NotFound"; import SplashScreen from "../Pages/SplashScreen"; import { nav } from "../Routes/Nav"; import { RouteLink } from "../Routes/Routes"; import { useProfileQuery } from "../Services/io.service"; import { useLogoutMutation } from "../Services/token.serivce"; const DashboardLayout = ({ isOnline }) => { const navigate = useNavigate(); const location = useLocation(); const path = location.pathname; const [isDrawerOpen, setIsDrawerOpen] = useState(false); const [openDrawerClick, setOpenDrawerClick] = useState(true); const { setIsAuthenticate, colorMode, toggleColorMode, setSlideFormRight, slideFromRight, } = useContext(GlobalStateContext); const [isSplashVisible, setSplashVisible] = useState(true); const [openIndex, setOpenIndex] = useState(null); const { data, refetch } = useProfileQuery(); // useEffect(() => { // if ( // !localStorage.getItem("accessToken") && // !localStorage.getItem("refreshToken") // ) { // logOutHandler(); // return navigate("/login"); // } // }, []); useEffect(() => { const savedIndex = localStorage.getItem("openAccordionIndex"); if (savedIndex !== null) { setOpenIndex(parseInt(savedIndex)); } }, []); const handleAccordionChange = (index) => { const newIndex = openIndex === index ? null : index; setOpenIndex(newIndex); localStorage.setItem("openAccordionIndex", newIndex); }; useEffect(() => { // Set a timer to hide the splash screen after 3 seconds const timer = setTimeout(() => { setSplashVisible(false); }, 1000); // 3000ms = 3 seconds refetch(); // Cleanup the timer return () => clearTimeout(timer); }, []); const openDrawerOnClick = () => { setOpenDrawerClick(!openDrawerClick); }; const [logout] = useLogoutMutation(); const logOutHandler = async () => { // dispach(loginUser(false)); setIsAuthenticate(false); Cookies.remove("isAuthenticated"); try { await logout(); localStorage.clear(); navigate("/login"); } catch (error) { console.log(error); } }; // // Function to get the title based on the route const getTitle = () => { switch (true) { case "/": return "👋🏻 Hi, Admin"; // case path.startsWith("/"): // return (z // // Dashboard // // ); case path.startsWith("/investment-opportunities"): return ( dashboard / Open Opportunities ); case path.startsWith("/sponser"): return ( Sponsor ); case path.startsWith("/email"): return ( Email Notification ); case path.startsWith("/investment-type"): return ( Investment Type ); case path.startsWith("/profile"): return ( Profile ); case path.startsWith("/exchange-rate"): return ( Exchange rate ); case path.startsWith("/create-io"): if (/^\/create-io\/[A-Za-z0-9_-]+$/.test(path)) { return ( Edit IO ); } return ( Create IO ); case path.startsWith("/view-io"): return ( View IO ); case path.startsWith("/investor-details"): return ( Investor Details ); case path.startsWith("/investor-transactions"): return ( Investor Transactions ); case path.startsWith("/deposit-request"): return ( Deposit Pending Request ); case path.startsWith("/deposit-history"): return ( Deposit Request ); case path.startsWith("/fawateer"): return ( Fawateer Deposit ); case path.startsWith("/fawateer-history"): return ( Fawateer Deposit ); case path.startsWith("/withdraw-request"): return ( Withdrawal pending request ); case path.startsWith("/withdraw-history"): return ( Withdrawal request ); case path.startsWith("/investor-request"): return ( Investor pending request ); case path.startsWith("/investor-history"): return ( Investor request ); case path.startsWith("/deletion-request"): return ( Deletion pending request ); case path.startsWith("/deletion-history"): return ( Deletion request ); case path.startsWith("/bank-deposit-request"): return ( Bank Deposit Request ); case path.startsWith("/reversal-fawateer-deposit"): return ( Fawateer Deposit ); case path.startsWith("/account-deletion-request"): return ( Account Deletion Request ); case path.startsWith("/bank-investor"): return ( Ban / Unban Investor ); case path.startsWith("/academy"): return ( Academy ); case path.startsWith("/notification"): return ( Push Notification ); case path.startsWith("/contact"): return ( Contact Details ); case path.startsWith("/users"): return ( Users ); case path.startsWith("/bank-details"): return ( Bank Details ); case path.startsWith("/deletion-request"): return ( Deletion pending request ); case path.startsWith("/deletion-history"): return ( Deletion request ); case path.startsWith("/deletion-request"): return ( Deletion pending request ); case path.startsWith("/deletion-history"): return ( Deletion request ); case path.startsWith("/subadmin"): return ( Manage SubAdmin ); default: if (path.startsWith("/community/view/")) { return ( Community ); } else if (path.startsWith("/community/edit/")) { return ( Community ); } return "Tanami"; } }; if (isSplashVisible) { return ; } const _filteredNav = isMaker() ? nav.filter( (item) => item.title !== "REVERSAL TRANSACTION" && item.path !== "/bank-deposit-request" && item.path !== "/reversal-fawateer-deposit" && item.path !== "/account-deletion-request" ) : nav; const filteredNav = _filteredNav.map((item) => { if (item.submenu) { return { ...item, submenu: item.submenu.filter( (submenuItem) => !(!data?.data?.superAdmin && submenuItem.title === "Sub Admin") ), }; } // if (item.title === "REVERSAL TRANSACTION" && item.type === "title") { // } return item; }); return ( No Internet ! {/* setSlideFormRight(!slideFromRight)} _hover={{ opacity: 1, }} zIndex={999} > */} {slideFromRight ? null : ( )} {/* {getTitle()} */} {/* */} ); }; export default DashboardLayout; const AppContent = ({ data }) => { return ( {RouteLink.map(({ path, Component }, index) => ( } /> ))} : } /> ) : ( ) } /> } /> ); };