"use client" import { useState, useEffect } from "react" import { useAuth } from "@/contexts/supabase-auth-context" import { useRouter } from "next/navigation" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Textarea } from "@/components/ui/textarea" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { ArrowLeft, Upload, Save } from "lucide-react" import Link from "next/link" import { buildGuideService } from "@/lib/database" import { buildService } from "@/lib/database" import { swal } from "@/lib/sweetalert" export default function SubmitGuidePage() { const { user } = useAuth() const router = useRouter() const [loading, setLoading] = useState(false) const [formData, setFormData] = useState({ guideName: "", description: "", buildId: "", difficulty: "Beginner", steps: "", tools: "" }) useEffect(() => { if (!user) { router.push("/login") } }, [user, router]) if (!user) { return null } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!user) return setLoading(true) try { // First, get or create a build for this guide let buildId = parseInt(formData.buildId) if (!buildId || isNaN(buildId)) { // Create a placeholder build if no build ID provided const { data: newBuild, error: buildError } = await buildService.create({ build_name: formData.guideName, user_id: user.user_id, build_type_id: 1, // Default build type total_price: 0 }) if (buildError || !newBuild) { throw new Error("Failed to create build for guide") } buildId = newBuild.build_id } // Create the build guide await buildGuideService.create({ build_id: buildId, build_guide_name: formData.guideName, description: formData.description, guide_steps: JSON.stringify({ difficulty: formData.difficulty, steps: formData.steps.split('\n').filter(s => s.trim()), tools: formData.tools.split(',').map(t => t.trim()).filter(t => t) }) }) router.push("/guides") } catch (error: any) { console.error("Error submitting guide:", error) swal.error("Submit failed", error.message || "Failed to submit guide") } finally { setLoading(false) } } return (

Submit Your Build Guide

Share your PC building knowledge with the community

Guide Information Fill in the details for your build guide
setFormData({ ...formData, guideName: e.target.value })} placeholder="e.g., Complete PC Assembly Guide" required />