'use client'; import { useState, useRef } from 'react'; import { Upload } from 'lucide-react'; interface FileUploadProps { onUploadSuccess: (chart: { id: number; name: string }) => void; } export default function FileUpload({ onUploadSuccess }: FileUploadProps) { const [isUploading, setIsUploading] = useState(false); const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null); const fileInputRef = useRef(null); const handleFileChange = async (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (!file) return; setIsUploading(true); setMessage(null); const formData = new FormData(); formData.append('file', file); try { const response = await fetch('/api/upload', { method: 'POST', body: formData, }); const data = await response.json(); if (response.ok) { setMessage({ type: 'success', text: `Uploaded ${data.count} candles`, }); onUploadSuccess(data.chart); } else { setMessage({ type: 'error', text: data.error || 'Upload failed', }); } } catch (error: any) { setMessage({ type: 'error', text: error.message || 'Upload failed', }); } finally { setIsUploading(false); if (fileInputRef.current) { fileInputRef.current.value = ''; } } }; return (
{message && (

{message.text}

)}
); }