From 85e1ed3ab5a4595492c12488d420f325b3ac24fe Mon Sep 17 00:00:00 2001 From: Deepanshu <140803342+deepanshurajput0@users.noreply.github.com> Date: Mon, 16 Feb 2026 15:16:42 +0530 Subject: [PATCH] refactor: move cancel logic from inline onClick handler to dedicated function (#27972) * refactor: move cancel booking logic into handleCancel function * chore: remove unused comments per review feedback --------- Co-authored-by: Deepanshu Verma --- apps/web/components/booking/CancelBooking.tsx | 115 +++++++++--------- 1 file changed, 59 insertions(+), 56 deletions(-) diff --git a/apps/web/components/booking/CancelBooking.tsx b/apps/web/components/booking/CancelBooking.tsx index 104aa55595..68382ae43d 100644 --- a/apps/web/components/booking/CancelBooking.tsx +++ b/apps/web/components/booking/CancelBooking.tsx @@ -46,6 +46,7 @@ const InternalNotePresetsSelect = ({ } }; + return (
@@ -177,6 +178,63 @@ export default function CancelBooking(props: Props) { const isRenderedAsCancelDialog = props.renderContext === "dialog"; + const handleCancel =async()=>{ + try{ + setLoading(true); + + const response = await fetch("/api/csrf?sameSite=none", { cache: "no-store" }); + const { csrfToken } = await response.json(); + + const res = await fetch("/api/cancel", { + body: JSON.stringify({ + uid: booking?.uid, + cancellationReason: cancellationReason, + allRemainingBookings, + // @NOTE: very important this shouldn't cancel with number ID use uid instead + seatReferenceUid, + cancelledBy: currentUserEmail, + internalNote: internalNote, + csrfToken, + }), + headers: { + "Content-Type": "application/json", + }, + method: "POST", + }); + + const bookingWithCancellationReason = { + ...(bookingCancelledEventProps.booking as object), + cancellationReason, + } as unknown; + + if (res.status >= 200 && res.status < 300) { + sdkActionManager?.fire("bookingCancelled", { + ...bookingCancelledEventProps, + booking: bookingWithCancellationReason, + }); + refreshData(); + if (props.onCanceled) { + props.onCanceled(); + } + } else { + const data = await res.json(); + const errorMessage = + data.message || + `${t("error_with_status_code_occured", { status: res.status })} ${t( + "please_try_again" + )}`; + + if (props.showErrorAsToast) { + showToast(errorMessage, "error"); + } else { + setError(errorMessage); + } + } + } finally{ + setLoading(false); + } + } + return ( <> {error && !props.showErrorAsToast && ( @@ -268,62 +326,7 @@ export default function CancelBooking(props: Props) {