import { useState } from 'react'; import { Camera, RefreshCw, Languages, Loader2 } from 'lucide-react'; import { resizeImage } from './utils/imageUtils'; import { analyzeImage, translateText } from './services/api'; function App() { const [image, setImage] = useState(null); // { base64, previewUser } const [status, setStatus] = useState('idle'); // idle, analyzing, success, translating, translated, error const [description, setDescription] = useState(''); const [translation, setTranslation] = useState(''); const [error, setError] = useState(''); const handleFileChange = async (e) => { if (e.target.files && e.target.files[0]) { try { const file = e.target.files[0]; const resized = await resizeImage(file); setImage(resized); setStatus('ready'); setError(''); setDescription(''); setTranslation(''); } catch (err) { console.error(err); setError("Görsel işlenirken bir hata oluştu."); } } }; const handleAnalyze = async () => { if (!image) return; setStatus('analyzing'); setError(''); try { const result = await analyzeImage(image.base64); setDescription(result); setStatus('success'); } catch (err) { setError("Analiz sırasında hata oluştu: " + err.message); setStatus('error'); } }; const handleTranslate = async () => { if (!description) return; setStatus('translating'); try { const result = await translateText(description); setTranslation(result); setStatus('translated'); } catch (err) { setError("Çeviri sırasında hata oluştu: " + err.message); // Keep status as success to show description still setStatus('success'); } }; const handleReset = () => { setImage(null); setStatus('idle'); setDescription(''); setTranslation(''); setError(''); }; return (
{image.previewUser ? "Görsel Seçildi" : "Görsel Yükleniyor..."}
) : (