"use client"; // Paketlinin geri bildirime dayalı liste revizyonu (/listem üzerinde). // listeRevize sunucu aksiyonunu çağırır; başarıda sayfayı yeniler ki // sunucuda güncellenen rapor ve kredi bakiyesi ekrana yansısın. import { useRef, useState } from "react"; import { useRouter } from "next/navigation"; import { RefreshCcw } from "lucide-react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { listeRevize } from "@/features/rapor/rapor-actions"; import { olay } from "@/lib/analitik"; export function RevizyonKutusu({ kalanHak }: { kalanHak: number }) { const [feedback, setFeedback] = useState(""); const [pending, setPending] = useState(false); const router = useRouter(); // Aynı deneme için sabit requestId: cevap kaybolan network hatasında retry // çifte harcamaz. Sunucudan cevap gelince sıfırlanır (harcama ya tamamlandı // ya iade edildi; sonraki deneme taze id ile başlamalı — bkz. sonuc/actions.ts). const requestIdRef = useRef(null); if (kalanHak <= 0) { return (

Revizyon hakların doldu. Danışman sohbetinden listen hakkında soru sormaya devam edebilirsin.

); } async function revizeEt() { setPending(true); try { if (!requestIdRef.current) requestIdRef.current = crypto.randomUUID(); const sonuc = await listeRevize({ feedback: feedback.trim(), requestId: requestIdRef.current, }); requestIdRef.current = null; if (sonuc.ok) { olay("liste_revize", { sayfa: "listem" }); toast.success("Listen yeniden kuruldu."); setFeedback(""); router.refresh(); } else { toast.error(sonuc.error); } } catch { toast.error("Beklenmeyen bir hata oluştu, tekrar dener misin?"); } finally { setPending(false); } } return (

Listede değişiklik mi istiyorsun?

Ne değişsin istediğini yaz; liste aynı gerçek veriyle yeniden kurulsun (3 kredi).