"use client"; import { useState } from "react"; import { createCampaign, uploadUgcImage } from "./create"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Shield, Loader2 } from "lucide-react"; export function CreateCampaignDialog() { const [open, setOpen] = useState(false); const [isSubmitting, setIsSubmitting] = useState(false); const [isUploading, setIsUploading] = useState(false); const [coverImage, setCoverImage] = useState<{ id: number; url: string } | null>(null); const [formData, setFormData] = useState({ name: "", summary: "An Arma 3 campaign.", status: "concept" as "concept" | "inProgress" | "completed", description: "", startDate: "", endDate: "", }); const handleImageUpload = async (file: File) => { setIsUploading(true); try { const formData = new FormData(); formData.append("file", file); const result = await uploadUgcImage(formData); if (!result.success || !result.data) { alert("Error uploading image: " + (result.error || "Unknown error")); return; } setCoverImage({ id: result.data.id, url: result.data.url }); } finally { setIsUploading(false); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); const result = await createCampaign({ ...formData, coverImageId: coverImage?.id ?? null }); setIsSubmitting(false); if (result.success) { setOpen(false); setCoverImage(null); setFormData({ name: "", summary: "An Arma 3 campaign.", status: "concept", description: "", startDate: "", endDate: "", }); window.location.href = "/intelligence/campaigns"; } else { alert("Error creating campaign: " + (result.error || "Unknown error")); } }; return ( Create New Campaign Create a new Arma 3 campaign to manage your operations.
setFormData({ ...formData, name: e.target.value })} placeholder="Enter campaign name" required />