feat: add topup management features including topup creation, cancellation, and countdown timer

This commit is contained in:
2025-07-04 23:07:02 +05:00
parent ee461bbbf8
commit f3328f7a7b
7 changed files with 657 additions and 21 deletions

View File

@ -0,0 +1,37 @@
"use client";
import { Loader2, Trash2 } from "lucide-react";
import { useRouter } from "next/navigation";
import React from "react";
import { toast } from "sonner";
import { cancelTopup } from "@/actions/payment";
import { tryCatch } from "@/utils/tryCatch";
import { Button } from "../ui/button";
export default function CancelTopupButton({
topupId,
}: { topupId: string }) {
const router = useRouter();
const [loading, setLoading] = React.useState(false);
return (
<Button
onClick={async () => {
setLoading(true);
const [error, x] = await tryCatch(cancelTopup({ id: topupId }));
console.log(x);
if (error) {
toast.error(error.message);
setLoading(false);
} else {
toast.success("Topup cancelled successfully!")
router.replace("/top-ups");
}
}}
disabled={loading}
variant={"destructive"}
>
Cancel Topup
{loading ? <Loader2 className="animate-spin" /> : <Trash2 />}
</Button>
);
}