"use client"

import { useTransition } from "react"
import { Button } from "@/components/ui/button"
import { toast } from "sonner"
import { confirmPickup, confirmReturn } from "@/lib/actions/loans"
import { LoanStatus } from "@/lib/schemas/books"

type LoanActionsProps = {
  loanId: string
  status: LoanStatus
  pickupConfirmed: boolean
  returnConfirmed: boolean
  isPhysical: boolean
}

export default function LoanActions({
  loanId, status, pickupConfirmed, returnConfirmed, isPhysical
}: LoanActionsProps) {
  const [isPending, startTransition] = useTransition()

  if (!isPhysical || status === "RETURNED") return null

  function handle(action: "pickup" | "return") {
    startTransition(async () => {
      const result = action === "pickup"
        ? await confirmPickup(loanId)
        : await confirmReturn(loanId)

      if (result.status === "success") {
        toast.success(action === "pickup" ? "Pickup confirmed" : "Return confirmed")
      } else {
        toast.error(result.message ?? "Action failed")
      }
    })
  }

  return (
    <div className="flex items-center gap-2">
      {!pickupConfirmed && (
        <Button
          size="sm"
          variant="outline"
          onClick={() => handle("pickup")}
          disabled={isPending}
          type="button"
        >
          Confirm Pickup
        </Button>
      )}
      {pickupConfirmed && !returnConfirmed && (
        <Button
          size="sm"
          variant="outline"
          onClick={() => handle("return")}
          disabled={isPending}
          type="button"
        >
          Confirm Return
        </Button>
      )}
    </div>
  )
}