"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { getApiUrl } from "@/lib/api-config" interface SuggestNicknameDialogProps { performanceId: number songTitle: string } export function SuggestNicknameDialog({ performanceId, songTitle }: SuggestNicknameDialogProps) { const [open, setOpen] = useState(false) const [nickname, setNickname] = useState("") const [description, setDescription] = useState("") const [loading, setLoading] = useState(false) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) const token = localStorage.getItem("token") if (!token) { alert("You must be logged in to suggest a nickname.") setLoading(false) return } try { const res = await fetch(`${getApiUrl()}/nicknames/`, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}` }, body: JSON.stringify({ performance_id: performanceId, nickname, description }) }) if (!res.ok) throw new Error("Failed to submit nickname") alert("Nickname suggested! It will appear after moderator approval.") setOpen(false) setNickname("") setDescription("") } catch (err) { console.error(err) alert("Error submitting nickname") } finally { setLoading(false) } } return ( Suggest Nickname Suggest a "City Song" nickname for this performance of {songTitle}.
setNickname(e.target.value)} className="col-span-3" placeholder="e.g. Tahoe Tweezer" required />
setDescription(e.target.value)} className="col-span-3" placeholder="Optional context..." />
) }