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 (
Manage your session and account.
Default IDE
Default IDE to use when opening branches or worktrees
Refresh available editors
Log Out
End your current session and return to the login screen