import { useState } from "react" import { useNavigate } from "react-router-dom" import MainLayout from "../layouts/MainLayout" import { createDeal } from "../api/deal/newDeal" import { lookupSellerFromLink } from "../api/seller/from-lookup" import { mapDealDraftToCreateRequest } from "../adapters/requests/dealCreateAdapter.ts" import DealLinkStep from "../components/CreateDeal/DealLinkStep" import DealDetailsStep from "../components/CreateDeal/DealDetailsStep" import type { SellerLookupInput } from "../api/seller/types.ts" import type { DealDraft } from "../models/DealDraft" type Step = "link" | "details" export default function CreateDealPage() { const navigate = useNavigate() const [step, setStep] = useState("link") const [loading, setLoading] = useState(false) const [dealDraft, setDealDraft] = useState({ title: "", description: "", url: "", price: undefined, imageUrl: "", images: [], // <-- ekle seller: { id: -1, name: "", url: null, }, customCompany: undefined, }) /* -------- STEP 1 — LINK -------- */ const handleLinkSubmit = async (e: React.FormEvent) => { e.preventDefault() // OFFLINE DEAL if (!dealDraft.url) { setStep("details") return } setLoading(true) try { // 🔥 2. Seller → Lookup Request (ADAPTER) const input: SellerLookupInput = { url: dealDraft.url } // 🔥 3. API CALL const seller = await lookupSellerFromLink(input) const nextSeller = seller ?? { id: -1, name: "", url: null, } setDealDraft((d) => { const next = { ...d, seller: nextSeller } console.log("NEXT:", next) return next }) setStep("details") } catch (err) { console.error("Seller lookup failed:", err) setDealDraft((d) => ({ ...d, seller: { id: -1, name: "", url: null, }, })) setStep("details") } finally { setLoading(false) } } /* -------- FINAL SUBMIT -------- */ const handleFinalSubmit = async () => { try { const created = await createDeal(mapDealDraftToCreateRequest(dealDraft)) const id = created?.id if (!id) throw new Error("Deal oluşturuldu ama id dönmedi") // ✅ başarıyla oluşturulduysa deal sayfasına git navigate(`/deal/${id}`) } catch (err: unknown) { alert(err instanceof Error ? err.message : "Sunucu hatası") } } function resetForm() { setDealDraft({ title: "", description: "", url: "", price: undefined, imageUrl: "", images: [], seller: { id: -1, name: "", url: null, }, customCompany: undefined, }) setStep("link") } return (
{step === "link" && ( setDealDraft((d) => ({ ...d, url, })) } onSubmit={handleLinkSubmit} /> )} {step === "details" && ( setStep("link")} onSubmit={handleFinalSubmit} /> )}
) }