import { RotateCcwIcon } from "lucide-react"; import { Outlet, createFileRoute, redirect, useCanGoBack, useLocation, useNavigate, } from "@tanstack/react-router"; import { useCallback, useEffect, useState } from "react"; import { useSettingsRestore } from "../components/settings/SettingsPanels"; import { Button } from "../components/ui/button"; import { SidebarInset, SidebarTrigger } from "../components/ui/sidebar"; import { isElectron } from "../env"; function RestoreDefaultsButton({ onRestored }: { onRestored: () => void }) { const { changedSettingLabels, restoreDefaults } = useSettingsRestore(onRestored); return ( ); } function SettingsContentLayout() { const location = useLocation(); const navigate = useNavigate(); const canGoBack = useCanGoBack(); const [restoreSignal, setRestoreSignal] = useState(0); const showRestoreDefaults = location.pathname === "/settings/general"; const handleRestored = () => setRestoreSignal((value) => value + 1); const navigateBackWithinApp = useCallback(() => { if (canGoBack) { window.history.back(); return; } void navigate({ to: "/" }); }, [canGoBack, navigate]); useEffect(() => { const onKeyDown = (event: KeyboardEvent) => { if (event.defaultPrevented) return; if (event.key === "Escape") { event.preventDefault(); navigateBackWithinApp(); } }; window.addEventListener("keydown", onKeyDown); return () => { window.removeEventListener("keydown", onKeyDown); }; }, [navigateBackWithinApp]); return (
{!isElectron && (
Settings {showRestoreDefaults ? (
) : null}
)} {isElectron && (
Settings {showRestoreDefaults ? (
) : null}
)}
); } function SettingsRouteLayout() { return ; } export const Route = createFileRoute("/settings")({ beforeLoad: async ({ context, location }) => { if ( context.authGateState.status !== "authenticated" && context.authGateState.status !== "hosted-static" ) { throw redirect({ to: "/pair", replace: true }); } if (location.pathname === "/settings") { throw redirect({ to: "/settings/general", replace: true }); } }, component: SettingsRouteLayout, });