"use client" import { useState } from "react" import { useRouter } from "next/navigation" import { toast } from "sonner" export function RentActions({ payment }: { payment: any }) { const router = useRouter() const [loading, setLoading] = useState(false) async function markAs(status: string) { setLoading(true) await fetch(`/api/rent/${payment.id}`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ status, paid_date: status === "paid" ? new Date().toISOString().slice(0, 10) : null, }), }) setLoading(false) toast.success(status === "paid" ? "Marked as paid" : "Marked as overdue") router.refresh() } async function handleDelete() { setLoading(true) await fetch(`/api/rent/${payment.id}`, { method: "DELETE" }) setLoading(false) toast.success("Payment deleted") router.refresh() } async function sendLink() { setLoading(true) const res = await fetch("/api/rent/send-payment-link", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ payment_id: payment.id }), }) const data = await res.json().catch(() => ({})) setLoading(false) if (res.ok) toast.success(data.message ?? "Payment link emailed to tenant") else toast.error(data.error ?? "Failed to send payment link") router.refresh() } if (loading) return Updating... return (
{payment.status !== "paid" && ( )} {payment.status !== "paid" && ( )} {payment.status !== "overdue" && payment.status !== "paid" && ( )}
) }