import React from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { isProcessRunning, startGeminiNexus, closeGeminiNexus } from '@/actions/process'; import { Button } from '@/components/ui/button'; import { cn } from '@/lib/utils'; import { Play, Square, Loader2, Power } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; interface StatusBarProps { isCollapsed?: boolean; } export const StatusBar: React.FC = ({ isCollapsed = false }) => { const { t } = useTranslation(); const queryClient = useQueryClient(); const { data: isRunning, isLoading } = useQuery({ queryKey: ['process', 'status'], queryFn: isProcessRunning, refetchInterval: 30000, }); const startMutation = useMutation({ mutationFn: startGeminiNexus, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['process', 'status'] }); }, }); const stopMutation = useMutation({ mutationFn: closeGeminiNexus, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['process', 'status'] }); }, }); const handleToggle = () => { if (isRunning) { stopMutation.mutate(); } else { startMutation.mutate(); } }; const isPending = startMutation.isPending || stopMutation.isPending; // Collapsed View if (isCollapsed) { return (

{isLoading ? t('status.checking') : isRunning ? t('status.running') : t('status.stopped')}

); } // Expanded View return (
{isLoading ? ( ) : isRunning ? (
) : (
)}
Status {isLoading ? t('status.checking') : isRunning ? t('status.running') : t('status.stopped')}
); };