Skip to content

Commit 82a4780

Browse files
feat: show routing trace dialog on assignment reason badge click (calcom#27629)
* feat: show routing trace dialog on assignment reason badge click Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com> * fix: remove duplicate RoutingTraceSheet rendering - Remove RoutingTraceSheet from BookingListItem.tsx to avoid duplicate rendering - Move RoutingTraceSheet in BookingActionsDropdown.tsx outside of isBookingFromRoutingForm condition - Use booking.assignmentReason.length > 0 condition for RoutingTraceSheet rendering - Remove unused isOpenRoutingTraceSheet getter and RoutingTraceSheet import from BookingListItem.tsx Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent 0a2d085 commit 82a4780

3 files changed

Lines changed: 32 additions & 19 deletions

File tree

apps/web/components/booking/BookingListItem.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,9 @@ function BookingListItem(booking: BookingItemProps) {
280280
const setIsOpenWrongAssignmentDialog = useBookingActionsStoreContext(
281281
(state) => state.setIsOpenWrongAssignmentDialog
282282
);
283+
const setIsOpenRoutingTraceSheet = useBookingActionsStoreContext(
284+
(state) => state.setIsOpenRoutingTraceSheet
285+
);
283286
const reportAction = getReportAction(actionContext);
284287
const reportActionWithHandler = {
285288
...reportAction,
@@ -549,7 +552,7 @@ function BookingListItem(booking: BookingItemProps) {
549552
userTimeZone={userTimeZone}
550553
isRescheduled={isRescheduled}
551554
onAssignmentReasonClick={
552-
isBookingFromRoutingForm ? () => setIsOpenWrongAssignmentDialog(true) : undefined
555+
booking.assignmentReason.length > 0 ? () => setIsOpenRoutingTraceSheet(true) : undefined
553556
}
554557
/>
555558
{isBookingFromRoutingForm && (

apps/web/components/booking/actions/BookingActionsDropdown.tsx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -455,23 +455,23 @@ export function BookingActionsDropdown({
455455
status={getBookingStatus()}
456456
/>
457457
{isBookingFromRoutingForm && (
458-
<>
459-
<WrongAssignmentDialog
460-
isOpenDialog={isOpenWrongAssignmentDialog}
461-
setIsOpenDialog={setIsOpenWrongAssignmentDialog}
462-
bookingUid={booking.uid}
463-
routingReason={booking.assignmentReason[0]?.reasonString ?? null}
464-
guestEmail={booking.attendees[0]?.email ?? ""}
465-
hostEmail={booking.user?.email ?? ""}
466-
hostName={booking.user?.name ?? null}
467-
teamId={booking.eventType?.team?.id ?? null}
468-
/>
469-
<RoutingTraceSheet
470-
isOpen={isOpenRoutingTraceSheet}
471-
setIsOpen={setIsOpenRoutingTraceSheet}
472-
bookingUid={booking.uid}
473-
/>
474-
</>
458+
<WrongAssignmentDialog
459+
isOpenDialog={isOpenWrongAssignmentDialog}
460+
setIsOpenDialog={setIsOpenWrongAssignmentDialog}
461+
bookingUid={booking.uid}
462+
routingReason={booking.assignmentReason[0]?.reasonString ?? null}
463+
guestEmail={booking.attendees[0]?.email ?? ""}
464+
hostEmail={booking.user?.email ?? ""}
465+
hostName={booking.user?.name ?? null}
466+
teamId={booking.eventType?.team?.id ?? null}
467+
/>
468+
)}
469+
{booking.assignmentReason.length > 0 && (
470+
<RoutingTraceSheet
471+
isOpen={isOpenRoutingTraceSheet}
472+
setIsOpen={setIsOpenRoutingTraceSheet}
473+
bookingUid={booking.uid}
474+
/>
475475
)}
476476
{booking.paid && booking.payment[0] && (
477477
<ChargeCardDialog

apps/web/modules/bookings/views/bookings-single-view.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import { Icon } from "@calcom/ui/components/icon";
5757
import { showToast } from "@calcom/ui/components/toast";
5858
import { useCalcomTheme } from "@calcom/ui/styles";
5959
import CancelBooking from "@calcom/web/components/booking/CancelBooking";
60+
import { RoutingTraceSheet } from "@calcom/web/components/booking/RoutingTraceSheet";
6061
import EventReservationSchema from "@calcom/web/components/schemas/EventReservationSchema";
6162
import { timeZone } from "@calcom/web/lib/clock";
6263

@@ -203,6 +204,7 @@ export default function Success(props: PageProps) {
203204
const defaultRating = validateRating(rating);
204205
const [rateValue, setRateValue] = useState<number>(defaultRating);
205206
const [isFeedbackSubmitted, setIsFeedbackSubmitted] = useState(false);
207+
const [isRoutingTraceSheetOpen, setIsRoutingTraceSheetOpen] = useState(false);
206208

207209
const mutation = trpc.viewer.public.submitRating.useMutation({
208210
onSuccess: async () => {
@@ -773,7 +775,10 @@ export default function Success(props: PageProps) {
773775
<>
774776
<div className="mt-9 font-medium">{t("assignment_reason")}</div>
775777
<div className="col-span-2 mb-2 mt-9">
776-
<Badge variant="gray" className="mb-2">
778+
<Badge
779+
variant="gray"
780+
className="mb-2 cursor-pointer hover:opacity-80"
781+
onClick={() => setIsRoutingTraceSheetOpen(true)}>
777782
{t(
778783
assignmentReasonBadgeTitleMap(
779784
bookingInfo.assignmentReason[0].reasonEnum as AssignmentReasonEnum
@@ -785,6 +790,11 @@ export default function Success(props: PageProps) {
785790
{bookingInfo.assignmentReason[0].reasonString}
786791
</p>
787792
)}
793+
<RoutingTraceSheet
794+
isOpen={isRoutingTraceSheetOpen}
795+
setIsOpen={setIsRoutingTraceSheetOpen}
796+
bookingUid={bookingInfo.uid}
797+
/>
788798
</div>
789799
</>
790800
)}

0 commit comments

Comments
 (0)