From 7b584d2fffaf922992c281fdedb9afd192a9458c Mon Sep 17 00:00:00 2001 From: theoleuthardt Date: Thu, 13 Feb 2025 01:39:03 +0100 Subject: [PATCH] feat: only one button for convert and download with smooth loading animation --- src/app/doc-to-pdf/page.tsx | 28 ++++++++++++++++++++++------ src/components/Button.tsx | 4 ++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/app/doc-to-pdf/page.tsx b/src/app/doc-to-pdf/page.tsx index 973b5be..9a46e71 100644 --- a/src/app/doc-to-pdf/page.tsx +++ b/src/app/doc-to-pdf/page.tsx @@ -9,11 +9,12 @@ import Link from "next/link"; export default function Home() { const [file, setFile] = useState(null); const [downloadUrl, setDownloadUrl] = useState(""); - const [showDownload, setShowDownload] = useState(false); + const [loading, setLoading] = useState(false); const handleFileChange = (event: React.ChangeEvent) => { if (event.target.files && event.target.files.length > 0) { setFile(event.target.files[0]); + setDownloadUrl(""); } }; @@ -26,6 +27,8 @@ export default function Home() { const formData = new FormData(); formData.append("file", file); + setLoading(true); + try { const response = await fetch("/api/libre-convert", { method: "POST", @@ -39,10 +42,11 @@ export default function Home() { const blob = await response.blob(); const url = window.URL.createObjectURL(blob); setDownloadUrl(url); - setShowDownload(true); } catch (error) { console.error("Error while converting:", error); alert("Error while converting"); + } finally { + setLoading(false); } }; @@ -64,10 +68,22 @@ export default function Home() { onChange={handleFileChange} />
-