import { RotateCcwIcon } from "lucide-react"; import { Outlet, createFileRoute, redirect } from "@tanstack/react-router"; import { useEffect, useState } from "react"; import { ensurePrimaryEnvironmentReady, resolveInitialServerAuthGateState, } from "../environments/primary"; import { useSettingsRestore } from "../components/settings/SettingsPanels"; import { Button } from "../components/ui/button"; import { SidebarInset, SidebarTrigger } from "../components/ui/sidebar"; import { isElectron } from "../env"; function SettingsContentLayout() { const [restoreSignal, setRestoreSignal] = useState(0); const { changedSettingLabels, restoreDefaults } = useSettingsRestore(() => setRestoreSignal((value) => value + 1), ); useEffect(() => { const onKeyDown = (event: KeyboardEvent) => { if (event.defaultPrevented) return; if (event.key === "Escape") { event.preventDefault(); window.history.back(); } }; window.addEventListener("keydown", onKeyDown); return () => { window.removeEventListener("keydown", onKeyDown); }; }, []); return ( {!isElectron && ( Settings void restoreDefaults()} > Restore defaults )} {isElectron && ( Settings void restoreDefaults()} > Restore defaults )} ); } function SettingsRouteLayout() { return ; } export const Route = createFileRoute("/settings")({ beforeLoad: async ({ location }) => { const [, authGateState] = await Promise.all([ ensurePrimaryEnvironmentReady(), resolveInitialServerAuthGateState(), ]); if (authGateState.status !== "authenticated") { throw redirect({ to: "/pair", replace: true }); } if (location.pathname === "/settings") { throw redirect({ to: "/settings/general", replace: true }); } }, component: SettingsRouteLayout, });