import PageWrap from "@/layout/PageWrap"; import { ROOT_PAGES } from "@/lib/constants"; import Dashboard from "@/pages/dashboard/Dashboard"; import HelpPlaceholder from "@/pages/placeholders/HelpPlaceholder"; import ImportExportPlaceholder from "@/pages/placeholders/ImportExportPlaceholder"; import LicensePlaceholder from "@/pages/placeholders/LicensePlaceholder"; import SettingsPlaceholder from "@/pages/placeholders/SettingsPlaceholder"; import { useAppStore } from "@/store/store"; import { lazy, Suspense, useEffect } from "@wordpress/element"; import { Loader2 } from "lucide-react"; const Settings = lazy(() => import("@/pages/settings/Settings")); const License = lazy(() => import("@/pages/license/License")); const Help = lazy(() => import("@/pages/help/Help")); const ImportExport = lazy(() => import("@/pages/import-export/ImportExport")); const Main = () => { const { rootPage, setRootPage, showWizard } = useAppStore(); const { rootPagePrefix } = window.SPCDash; const getPageFromUrl = (url: string) => { const searchParams = new URL(url, window.location.href).searchParams; const pageParam = searchParams.get('page'); if (!pageParam || pageParam === 'super-page-cache') return ROOT_PAGES.DASHBOARD; const page = pageParam.replace(rootPagePrefix, '').toLowerCase(); return ROOT_PAGES[page.replace('-', '_').toUpperCase()] || ROOT_PAGES.DASHBOARD; } const listenToInternalPages = (e: MouseEvent) => { e.preventDefault(); let target = e.target as HTMLElement; if (target.tagName !== 'A') { target = target.closest('a'); } const href = target.getAttribute('href'); if (!href) return; setRootPage(getPageFromUrl(href)); } useEffect(() => { const menuWrapper = document.querySelectorAll('.toplevel_page_super-page-cache a[href*="page=super-page-cache"]'); menuWrapper.forEach((wrapper) => { wrapper.addEventListener('click', listenToInternalPages); }); return () => { menuWrapper.forEach((wrapper) => { wrapper.removeEventListener('click', listenToInternalPages); }); } }, []); useEffect(() => { if (!showWizard) { return; } if (![ROOT_PAGES.DASHBOARD, ROOT_PAGES.HELP].includes(rootPage)) { setRootPage(ROOT_PAGES.DASHBOARD); } }, []); const getPlaceholder = (page: string) => { switch (page) { case ROOT_PAGES.SETTINGS: return ; case ROOT_PAGES.IMPORT_EXPORT: return ; case ROOT_PAGES.LICENSE: return ; case ROOT_PAGES.HELP: return ; default: return ( ); } }; const getPage = (page: string) => { switch (page) { case ROOT_PAGES.SETTINGS: return ; case ROOT_PAGES.IMPORT_EXPORT: return ; case ROOT_PAGES.LICENSE: return ; case ROOT_PAGES.HELP: return ; default: return ; } }; if (rootPage === ROOT_PAGES.DASHBOARD) { return ( ); } return ( {getPage(rootPage)} ); } export default Main;