"use client"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { useRouter } from "next/navigation"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { Form, FormField, FormItem, FormControl, FormMessage, } from "@/components/ui/form"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { CreateThoughtSchema, createThought } from "@/lib/api"; import { useAuth } from "@/hooks/use-auth"; import { toast } from "sonner"; import { Globe, Lock, Users } from "lucide-react"; import { useState } from "react"; import { Confetti } from "./confetti"; export function PostThoughtForm() { const router = useRouter(); const { token } = useAuth(); const [showConfetti, setShowConfetti] = useState(false); const form = useForm>({ resolver: zodResolver(CreateThoughtSchema), defaultValues: { content: "", visibility: "Public" }, }); async function onSubmit(values: z.infer) { if (!token) { toast.error("You must be logged in to post."); return; } try { await createThought(values, token); toast.success("Your thought has been posted!"); setShowConfetti(true); form.reset(); router.refresh(); // This is the key to updating the feed } catch { toast.error("Failed to post thought. Please try again."); } } return ( <> setShowConfetti(false)} />
(