"use client"; import { useState, useEffect } from "react"; import axios from "axios"; import dotenv from "dotenv"; import { MdContentCopy } from "react-icons/md"; dotenv.config({ path: "./.env.local" }); export default function Home() { const [longUrl, setLongUrl] = useState(""); const [shortUrl, setShortUrl] = useState(""); const [copied, setCopied] = useState(false); const [prevLongUrl, setPrevLongUrl] = useState(""); useEffect(() => { if (prevLongUrl !== longUrl) { setShortUrl(""); } }, [longUrl, prevLongUrl]); const handleSubmit = async (e) => { e.preventDefault(); if (longUrl === prevLongUrl && shortUrl) { return; } // Use the frontend domain as the base URL const baseURL = window.location.origin; try { const response = await axios.post( `${process.env.NEXT_PUBLIC_BACKEND_URL}/reduce/shorten`, { long_url: longUrl, base_url: baseURL, // Include the frontend domain in the request body }, ); setShortUrl(response.data.short_url); setPrevLongUrl(longUrl); } catch (error) { console.error("Error shortening URL:", error); } }; const handleCopy = () => { navigator.clipboard .writeText(shortUrl) .then(() => { setCopied(true); setTimeout(() => setCopied(false), 2000); // Reset copy state after 2 seconds }) .catch((error) => { console.error("Failed to copy URL:", error); }); }; return (

Reduce

setLongUrl(e.target.value)} className="border border-gray-300 rounded-lg p-3 text-gray-800 focus:outline-none focus:ring-2 focus:ring-blue-500" />
{shortUrl && (
{shortUrl}
)}
); }