import { MainConnectionStatusSwitch } from "@/modules/main/MainConnectionStatusSwitch.tsx"; import { MainExitNodeSwitcher } from "@/modules/main/MainExitNodeSwitcher.tsx"; import { MainHeader } from "@/modules/main/MainHeader.tsx"; import { AppRightPanel } from "@/layouts/AppRightPanel.tsx"; import { Navigation } from "@/modules/main/advanced/Navigation.tsx"; import { cn } from "@/lib/cn"; import { NavSectionProvider, useNavSection } from "@/contexts/NavSectionContext"; import { ViewModeProvider, useViewMode } from "@/contexts/ViewModeContext"; import { useEffect } from "react"; import { NotConnectedState } from "@/components/empty-state/NotConnectedState"; import { useStatus } from "@/contexts/StatusContext"; import { Peers } from "@/modules/main/advanced/peers/Peers"; import { Networks } from "@/modules/main/advanced/networks/Networks"; import { NetworksProvider } from "@/contexts/NetworksContext"; import { PeerDetailProvider, usePeerDetail } from "@/contexts/PeerDetailContext"; import { useRestrictions } from "@/contexts/RestrictionsContext"; import { PeerDetailPanel } from "@/modules/main/advanced/peers/PeerDetailPanel"; import { isWindows } from "@/lib/platform.ts"; export const MainPage = () => { return ( ); }; const MainBody = () => { const { viewMode, setViewMode } = useViewMode(); const { mdm, features } = useRestrictions(); // Force flip the view if MDM disabled advanced useEffect(() => { if (mdm.disableAdvancedView && viewMode === "advanced") { setViewMode("default"); } }, [mdm.disableAdvancedView, viewMode, setViewMode]); const isAdvanced = viewMode === "advanced"; return (
{/* Windows narrower width compensates for the OS frame Wails counts differently than macOS. See https://github.com/wailsapp/wails/issues/3260 */}
{!features.disableNetworks && (
)}
{isAdvanced && ( )}
); }; const AdvancedAppRightPanel = () => { const { section } = useNavSection(); const { selected } = usePeerDetail(); const { status } = useStatus(); const isConnected = status?.status === "Connected"; return ( } overlayOpen={selected !== null} className={"m-5 ml-0"} >
{ if (!el) return; if (isConnected) el.removeAttribute("inert"); else el.setAttribute("inert", ""); }} className={cn( "flex min-h-0 min-w-0 flex-1 flex-col", !isConnected && "pointer-events-none select-none", )} aria-hidden={!isConnected} >
{section === "peers" && } {section === "networks" && }
{!isConnected && (
)}
); };