diff --git a/src/components/meta-form.tsx b/src/components/meta-form.tsx index beb19b4..6a3bebb 100644 --- a/src/components/meta-form.tsx +++ b/src/components/meta-form.tsx @@ -5,7 +5,7 @@ import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; -import { Globe, Edit, Check } from "lucide-react"; +import { Globe, Edit, Check, Loader2, X, ImageOff } from "lucide-react"; import { extractMetaData } from "@/app/actions"; import { LengthIndicator } from "./length-indicator"; import { CopyButton } from "./copy-button"; @@ -17,6 +17,7 @@ interface MetaData { } export function MetaForm() { + const [url, setUrl] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [metaData, setMetaData] = useState(null); @@ -26,11 +27,13 @@ export function MetaForm() { const [editableTitle, setEditableTitle] = useState(""); const [editableDescription, setEditableDescription] = useState(""); + const [imageError, setImageError] = useState(false); useEffect(() => { if (metaData) { setEditableTitle(metaData.title); setEditableDescription(metaData.description); + setImageError(false); } }, [metaData]); @@ -41,9 +44,7 @@ export function MetaForm() { setMetaData(null); setIsEditingTitle(false); setIsEditingDescription(false); - - const formData = new FormData(event.currentTarget); - const url = formData.get("url") as string; + setImageError(false); const result = await extractMetaData(url); @@ -56,6 +57,13 @@ export function MetaForm() { setLoading(false); }; + const handleClear = () => { + setUrl(""); + setLoading(false); + setError(null); + setMetaData(null); + }; + return (
setUrl(e.target.value)} />
+ {(url || metaData || error) && ( + + )} {error && ( @@ -102,12 +125,20 @@ export function MetaForm() {

Preview Image

-
- Meta preview image +
+ {!imageError ? ( + Meta preview image setImageError(true)} + /> + ) : ( +
+ + Image not available +
+ )}
)}