import { Navigate, createFileRoute } from "@tanstack/react-router"; import { useEffect, useRef, useState } from "react"; import { AppShell, SettingsRow, SettingsSection } from "@/components/AppShell"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Skeleton } from "@/components/ui/skeleton"; import { buildProfileUpdate, useOptions, useProfile, useSaveProfile } from "@/lib/profile"; import { useSession } from "@/lib/session"; export const Route = createFileRoute("/my-settings")({ component: MySettingsPage }); function MySettingsPage() { const session = useSession(); const profile = useProfile(); const options = useOptions(); const save = useSaveProfile(); const [firstName, setFirstName] = useState(""); const [lastName, setLastName] = useState(""); const [prDestination, setPrDestination] = useState("team_default"); const [error, setError] = useState(null); const initialized = useRef(false); useEffect(() => { if (!profile.data || initialized.current) return; initialized.current = true; setFirstName(profile.data.first_name ?? ""); setLastName(profile.data.last_name ?? ""); setPrDestination(profile.data.preferred_pr_destination ?? "team_default"); }, [profile.data]); if (session.isLoading) { return (
); } if (!session.data) return ; const firstModel = options.data?.models[0]; const handleSaveProfile = () => { setError(null); const body = buildProfileUpdate( profile.data, { first_name: firstName || null, last_name: lastName || null }, firstModel?.id ?? "", firstModel?.default_effort ?? "", ); save .mutateAsync(body) .catch((e: Error) => setError(e.message)); }; const handleSavePrDestination = (value: string | null) => { if (!value) return; setPrDestination(value); const body = buildProfileUpdate( profile.data, { preferred_pr_destination: value === "team_default" ? null : value }, firstModel?.id ?? "", firstModel?.default_effort ?? "", ); save.mutateAsync(body).catch((e: Error) => setError(e.message)); }; return (
{session.data.email ?? "—"} } /> setFirstName(e.target.value)} /> } /> setLastName(e.target.value)} /> } />
Team default Web Desktop App IDE } /> {error &&

{error}

}
); }