import "./Layout.css"; import { useCallback, useEffect } from "react"; import { Outlet, useLocation } from "react-router-dom"; import CloseButton from "@/Components/Button/CloseButton"; import ErrorBoundary from "@/Components/ErrorBoundary"; import { LoginUnlock } from "@/Components/PinPrompt/PinPrompt"; import Toaster from "@/Components/Toaster/Toaster"; import useLoginFeed from "@/Feed/LoginFeed"; import { useCommunityLeaders } from "@/Hooks/useCommunityLeaders"; import useKeyboardShortcut from "@/Hooks/useKeyboardShortcut"; import useLogin from "@/Hooks/useLogin"; import { useLoginRelays } from "@/Hooks/useLoginRelays"; import { useTheme } from "@/Hooks/useTheme"; import Footer from "@/Pages/Layout/Footer"; import { Header } from "@/Pages/Layout/Header"; import { isFormElement, trackEvent } from "@/Utils"; import { LoginStore } from "@/Utils/Login"; import NavSidebar from "./NavSidebar"; import RightColumn from "./RightColumn"; export default function Index() { const location = useLocation(); const { id, stalker, telemetry } = useLogin(s => ({ id: s.id, stalker: s.stalker ?? false, telemetry: s.appData.item.preferences.telemetry, })); useTheme(); useLoginRelays(); useLoginFeed(); useCommunityLeaders(); const hideHeaderPaths = ["/login", "/new"]; const shouldHideFooter = location.pathname.startsWith("/messages/"); const shouldHideHeader = hideHeaderPaths.some(path => location.pathname.startsWith(path)); const handleKeyboardShortcut = useCallback((event: Event) => { if (event.target && !isFormElement(event.target as HTMLElement)) { event.preventDefault(); window.scrollTo({ top: 0, behavior: "instant" }); } }, []); useEffect(() => { if (CONFIG.features.analytics && (telemetry ?? true)) { trackEvent("pageview"); } }, [location]); useKeyboardShortcut(".", handleKeyboardShortcut); const isStalker = !!stalker; return (
{!shouldHideHeader &&
}
{isStalker && } {!shouldHideFooter &&
); } function StalkerModal({ id }: { id: string }) { return (
LoginStore.removeSession(id)}>
); }