"use client"; import { LoadingIcon } from "@/components/LoadingIcon"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Skeleton } from "@/components/ui/skeleton"; import { checkStatus, generate } from "@/server/generate"; import { useEffect, useState } from "react"; export default function Home() { const [prompt, setPrompt] = useState(""); const [image, setImage] = useState(""); const [loading, setLoading] = useState(false); const [runId, setRunId] = useState(""); const [status, setStatus] = useState("preparing"); // Polling in frontend to check for the useEffect(() => { if (!runId) return; const interval = setInterval(() => { checkStatus(runId).then((res) => { if (res) setStatus(res.status); if (res && res.status === "success") { console.log(res.outputs[0].data); setImage(res.outputs[0].data.images[0].url); setLoading(false); clearInterval(interval); } }); }, 2000); return () => clearInterval(interval); }, [runId]); return (
Comfy Deploy - Vector Line Art Tool
Lora -{" "} stick-line-vector-illustration
{ if (loading) return; e.preventDefault(); setLoading(true); generate(prompt).then((res) => { console.log(res); if (!res) return; setRunId(res.run_id); }); setStatus("preparing"); }} > setPrompt(e.target.value)} />
{!loading && image && ( Generated image )} {loading && (
{status}
)} {loading && }
); }