feat: update cancelTopup API call to use PATCH method and enhance success message with topup details

This commit is contained in:
2025-07-06 19:59:27 +05:00
parent d4993530f7
commit b9d8e56c3c
3 changed files with 20 additions and 24 deletions

View File

@ -164,24 +164,16 @@ export async function getTopup({ id }: { id: string }) {
export async function cancelTopup({ id }: { id: string }) { export async function cancelTopup({ id }: { id: string }) {
const session = await getServerSession(authOptions); const session = await getServerSession(authOptions);
const response = await fetch( const response = await fetch(
`${process.env.SARLINK_API_BASE_URL}/api/billing/topup/${id}/delete/`, `${process.env.SARLINK_API_BASE_URL}/api/billing/topup/${id}/cancel/`,
{ {
method: "DELETE", method: "PATCH",
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
Authorization: `Token ${session?.apiToken}`, Authorization: `Token ${session?.apiToken}`,
}, },
}, },
); );
if (!response.ok) { return handleApiResponse<Topup>(response, "cancelTopup");
const errorData = (await response.json()) as ApiError;
const errorMessage =
errorData.message || errorData.detail || "An error occurred.";
const error = new Error(errorMessage);
(error as ApiError & { details?: ApiError }).details = errorData; // Attach the errorData to the error object
throw error;
}
return { message: "Topup successfully canceled." };
} }
export async function cancelPayment({ id }: { id: string }) { export async function cancelPayment({ id }: { id: string }) {

View File

@ -17,13 +17,15 @@ export default function CancelTopupButton({
<Button <Button
onClick={async () => { onClick={async () => {
setLoading(true); setLoading(true);
const [error, x] = await tryCatch(cancelTopup({ id: topupId })); const [error, topup] = await tryCatch(cancelTopup({ id: topupId }));
console.log(x);
if (error) { if (error) {
toast.error(error.message); toast.error(error.message);
setLoading(false); setLoading(false);
} else { } else {
toast.success("Topup cancelled successfully!") toast.success("Topup cancelled successfully!", {
description: `Your topup of ${topup?.amount} MVR has been cancelled.`,
closeButton: true,
})
router.replace("/top-ups"); router.replace("/top-ups");
} }
}} }}

View File

@ -203,6 +203,7 @@ function MobileTopupDetails({ topup }: { topup: Topup }) {
View Details View Details
</Button> </Button>
</Link> </Link>
{topup.status !== "CANCELLED" && (
<Badge <Badge
className={cn( className={cn(
topup?.paid topup?.paid
@ -213,6 +214,7 @@ function MobileTopupDetails({ topup }: { topup: Topup }) {
> >
{topup.paid ? "Paid" : "Unpaid"} {topup.paid ? "Paid" : "Unpaid"}
</Badge> </Badge>
)}
</div> </div>
<div className="bg-white dark:bg-black p-2 rounded mt-2 w-full border"> <div className="bg-white dark:bg-black p-2 rounded mt-2 w-full border">
<div className="block sm:hidden"> <div className="block sm:hidden">