"use client"; import { useRef, useState } from "react"; import { uploadFile } from "./action"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardHeader, CardTitle, CardContent, CardFooter, } from "@/components/ui/card"; import { RespError } from "./orderUpdateBillbee"; import { toast, Bounce } from "react-toastify"; export default function UploadForm() { const fileInput = useRef(null); const [uploadResult, setUploadResult] = useState<{ successful: number; errors: RespError[]; } | null>(null); const [isProcessing, setIsProcessing] = useState(false); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); // Prevent the default form submission if (fileInput.current?.files) { const file = fileInput.current.files[0]; const data = new FormData(); data.append("file", file); setIsProcessing(true); const res = await uploadFile(data); if (res.status && res.data) { setUploadResult(res.data); toast.success(res.message, { position: "bottom-right", autoClose: 5000, hideProgressBar: false, closeOnClick: false, pauseOnHover: true, draggable: true, progress: undefined, theme: "light", transition: Bounce, }); } else { toast.error(res.message, { position: "bottom-right", autoClose: 5000, hideProgressBar: false, closeOnClick: false, pauseOnHover: true, draggable: true, progress: undefined, theme: "light", transition: Bounce, }); } setIsProcessing(false); } }; return (
{" "} {/* Added margin-bottom for spacing */} Lade eine Datei hoch {!isProcessing ? (
) : (
Loading...
)}
{uploadResult && (
Upload Result

Anzahl erfolgreicher Updates: {uploadResult.successful}

{uploadResult.errors.length > 0 && (

Errors:

    {uploadResult.errors.map((error, index) => (
  • Order ID:{" "} {error.orderId || "N/A"}, Error:{" "} {error.error}
  • ))}
)}
)}
); }