import { useState } from 'react'; import { useNavigate } from '@tanstack/react-router'; import { Button } from '@/components/ui/button'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'; import { toast } from 'sonner'; import { LogOut, User, Code2, RefreshCw } from 'lucide-react'; import { Spinner } from '@/components/ui/spinner'; import { cn } from '@/lib/utils'; import { logout } from '@/lib/http-api-client'; import { useAuthStore } from '@/store/auth-store'; import { useAppStore } from '@/store/app-store'; import { useAvailableEditors, useEffectiveDefaultEditor, type EditorInfo, } from '@/components/views/board-view/worktree-panel/hooks/use-available-editors'; import { getEditorIcon } from '@/components/icons/editor-icons'; export function AccountSection() { const navigate = useNavigate(); const [isLoggingOut, setIsLoggingOut] = useState(false); // Editor settings const { editors, isLoading: isLoadingEditors, isRefreshing, refresh } = useAvailableEditors(); const defaultEditorCommand = useAppStore((s) => s.defaultEditorCommand); const setDefaultEditorCommand = useAppStore((s) => s.setDefaultEditorCommand); // Use shared hook for effective default editor const effectiveEditor = useEffectiveDefaultEditor(editors); // Normalize Select value: if saved editor isn't found, show 'auto' const hasSavedEditor = !!defaultEditorCommand && editors.some((e: EditorInfo) => e.command === defaultEditorCommand); const selectValue = hasSavedEditor ? defaultEditorCommand : 'auto'; // Get icon component for the effective editor const EffectiveEditorIcon = effectiveEditor ? getEditorIcon(effectiveEditor.command) : null; const handleRefreshEditors = async () => { await refresh(); toast.success('Editor list refreshed'); }; const handleLogout = async () => { setIsLoggingOut(true); try { await logout(); // Reset auth state useAuthStore.getState().resetAuth(); // Navigate to logged out page navigate({ to: '/logged-out' }); } catch (error) { console.error('Logout failed:', error); setIsLoggingOut(false); } }; return (

Account

Manage your session and account.

{/* Default IDE */}

Default IDE

Default IDE to use when opening branches or worktrees

Refresh available editors

{/* Logout */}

Log Out

End your current session and return to the login screen

); }