Skip to content

Commit e082cc7

Browse files
authored
refactor: Handle apiv2 team slots in useSchedule hook (calcom#21309)
1 parent d411e70 commit e082cc7

2 files changed

Lines changed: 17 additions & 33 deletions

File tree

packages/features/bookings/Booker/utils/event.ts

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export const useScheduleForEvent = ({
9797
const searchParams = useCompatSearchParams();
9898
const rescheduleUid = searchParams?.get("rescheduleUid");
9999

100-
const scheduleUsingApiV2 = useSchedule({
100+
const schedule = useSchedule({
101101
username: usernameFromStore ?? username,
102102
eventSlug: eventSlugFromStore ?? eventSlug,
103103
eventId,
@@ -115,29 +115,6 @@ export const useScheduleForEvent = ({
115115
useApiV2: useApiV2,
116116
});
117117

118-
const scheduleNotUsingApiV2 = useSchedule({
119-
username: usernameFromStore ?? username,
120-
eventSlug: eventSlugFromStore ?? eventSlug,
121-
eventId,
122-
timezone,
123-
selectedDate,
124-
prefetchNextMonth,
125-
monthCount,
126-
dayCount,
127-
rescheduleUid,
128-
month: monthFromStore ?? month,
129-
duration: durationFromStore ?? duration,
130-
isTeamEvent,
131-
orgSlug,
132-
teamMemberEmail,
133-
useApiV2: false,
134-
// only run this query if the one using Api v2 fails
135-
// Network error does not trigger `isError` flag, so we are instead using `failureReason` here
136-
enabled: isTeamEvent && !!scheduleUsingApiV2?.failureReason,
137-
});
138-
139-
const schedule = scheduleUsingApiV2?.isSuccess ? scheduleUsingApiV2 : scheduleNotUsingApiV2;
140-
141118
return {
142119
data: schedule?.data,
143120
isPending: schedule?.isPending,

packages/features/schedules/lib/use-schedule/useSchedule.ts

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ export const useSchedule = ({
122122
};
123123

124124
const isCallingApiV2Slots = useApiV2 && Boolean(isTeamEvent) && options.enabled;
125-
const teamSchedule = useApiV2AvailableSlots({
125+
126+
// API V2 query for team events
127+
const teamScheduleV2 = useApiV2AvailableSlots({
126128
...input,
127129
enabled: isCallingApiV2Slots,
128130
duration: input.duration ? Number(input.duration) : undefined,
@@ -131,26 +133,31 @@ export const useSchedule = ({
131133
eventTypeId: eventId ?? undefined,
132134
});
133135

134-
if (isCallingApiV2Slots) {
136+
const schedule = isTeamEvent
137+
? trpc.viewer.highPerf.getTeamSchedule.useQuery(input, {
138+
...options,
139+
// Only enable if we're not using API V2 or if API V2 failed
140+
enabled: options.enabled && (!isCallingApiV2Slots || !!teamScheduleV2.failureReason),
141+
})
142+
: trpc.viewer.slots.getSchedule.useQuery(input, options);
143+
144+
if (isCallingApiV2Slots && !teamScheduleV2.failureReason) {
135145
updateEmbedBookerState({
136146
bookerState,
137-
slotsQuery: teamSchedule,
147+
slotsQuery: teamScheduleV2,
138148
});
149+
139150
return {
140-
...teamSchedule,
151+
...teamScheduleV2,
141152
/**
142153
* Invalidates the request and resends it regardless of any other configuration including staleTime
143154
*/
144155
invalidate: () => {
145-
return teamSchedule.refetch();
156+
return teamScheduleV2.refetch();
146157
},
147158
};
148159
}
149160

150-
const schedule = isTeamEvent
151-
? trpc.viewer.highPerf.getTeamSchedule.useQuery(input, options)
152-
: trpc.viewer.slots.getSchedule.useQuery(input, options);
153-
154161
updateEmbedBookerState({
155162
bookerState,
156163
slotsQuery: schedule,

0 commit comments

Comments
 (0)