"use client"; import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { SettingsService } from '@/services/settings-service'; import { useApiKey } from '@/store/use-settings'; /** * Connection Validation States */ type ValidationStatus = 'idle' | 'testing' | 'success' | 'error'; /** * Connection Status Component (Story 4.2 Enhanced) * * Displays API connection validation status with detailed error messages * and retry capability. */ export function ConnectionStatus() { const apiKey = useApiKey(); const [status, setStatus] = useState('idle'); const [errorMessage, setErrorMessage] = useState(''); const handleTest = async () => { if (!apiKey) return; setStatus('testing'); setErrorMessage(''); try { // Use SettingsService for proper Logic Sandwich pattern const result = await SettingsService.validateProviderConnection(); if (result.isValid) { setStatus('success'); } else { setStatus('error'); setErrorMessage(result.error || 'Connection failed'); } } catch (error) { setStatus('error'); setErrorMessage(error instanceof Error ? error.message : 'Connection failed'); } }; if (!apiKey) return null; return (
{status === 'success' && ( Connected ✅ )} {status === 'error' && ( Connection Failed ❌ )}
{status === 'error' && errorMessage && (

{errorMessage}

{/* Retry hint for network errors */} {errorMessage.toLowerCase().includes('network') && (

Tip: Network errors can be temporary. Try again in a moment.

)}
)} {/* Success message with auto-hide hint */} {status === 'success' && (

Your API credentials are working correctly!

)}
); }