"use client"; import { BadgeDollarSign, Clipboard, ClipboardCheck, Loader2, } from "lucide-react"; import { useActionState, useEffect, useState } from "react"; import { toast } from "sonner"; import { type VerifyTopupPaymentState, verifyTopupPayment } from "@/actions/payment"; import { Table, TableBody, TableCaption, TableCell, TableFooter, TableRow, } from "@/components/ui/table"; import type { Topup } from "@/lib/backend-types"; import { Button } from "./ui/button"; const initialState: VerifyTopupPaymentState = { message: "", success: false, fieldErrors: {}, }; export default function TopupToPay({ topup, disabled }: { topup?: Topup, disabled?: boolean }) { const [state, formAction, isPending] = useActionState(verifyTopupPayment, initialState); // Handle toast notifications based on state changes useEffect(() => { if (state.success && state.message) { toast.success("Topup successful!", { closeButton: true, description: state.transaction ? `Your topup payment has been verified successfully using ${state.transaction.sourceBank} bank transfer on ${state.transaction.trxDate}.` : state.message, }); } else if (!state.success && state.message && state.message !== initialState.message) { toast.error("Topup Payment Verification Failed", { closeButton: true, description: state.message, }); } }, [state]); return (
Account No
{accountNo}