mirror of
https://github.com/i701/sarlink-portal.git
synced 2025-07-08 07:16:31 +00:00
feat: update cancelTopup API call to use PATCH method and enhance success message with topup details ✨
This commit is contained in:
@ -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 }) {
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
@ -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">
|
||||||
|
Reference in New Issue
Block a user