refactor: Remove trpc/server dependency from @calcom/atoms (#26717)
* mv useTeamMembersWithSegment * remove * fix ts error * remove * remove * remove * biome rule * wip * refactor: remove remaining @calcom/trpc/server imports from atoms - Create local types for schedule handlers (CreateScheduleHandlerReturn, DuplicateScheduleHandlerReturn, GetAvailabilityListHandlerReturn, CreateScheduleInput) - Create local GetAvailableSlotsResponse type for slots hook - Update imports in useAtomCreateSchedule, useAtomDuplicateSchedule, useAtomGetAllSchedules, and useAvailableSlots Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * fix * fix: add userId to Schedule type and create ScheduleForList type - Schedule type now includes userId for create/duplicate handlers - Created ScheduleForList type for list handler (uses select without userId) Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * fix * fix * fix * fix * fix: correct fromUser/toUser types in GetAvailableSlotsResponse - fromUser: { id, displayName } (matches IFromUser) - toUser: { id, username, displayName } (matches IToUser) Co-Authored-By: benny@cal.com <sldisek783@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
f7dee536d7
commit
fc0a2b5a37
@@ -1,7 +1,7 @@
|
||||
import { diff } from "jest-diff";
|
||||
import { expect } from "vitest";
|
||||
|
||||
import type { Slot } from "@calcom/trpc/server/routers/viewer/slots/types";
|
||||
import type { Slot } from "@calcom/atoms/booker/types";
|
||||
|
||||
export const expectedSlotsForSchedule = {
|
||||
IstWorkHours: {
|
||||
|
||||
+6
-6
@@ -337,17 +337,17 @@
|
||||
"patterns": [
|
||||
{
|
||||
"group": [
|
||||
"@calcom/trpc/react",
|
||||
"@calcom/trpc/react/**"
|
||||
"@calcom/trpc",
|
||||
"@calcom/trpc/**"
|
||||
],
|
||||
"message": "atoms package should not import from @calcom/trpc/react."
|
||||
"message": "atoms package should not import from @calcom/trpc."
|
||||
},
|
||||
{
|
||||
"group": [
|
||||
"../../trpc/react",
|
||||
"../../trpc/react/**"
|
||||
"../../trpc",
|
||||
"../../trpc/**"
|
||||
],
|
||||
"message": "atoms package should not import from trpc/react."
|
||||
"message": "atoms package should not import from trpc."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -11,10 +11,17 @@ import type {
|
||||
ApiSuccessResponseWithoutData,
|
||||
RoutingFormSearchParams,
|
||||
} from "@calcom/platform-types";
|
||||
import type { Slot } from "@calcom/trpc/server/routers/viewer/slots/types";
|
||||
|
||||
import type { UseCreateBookingInput } from "../hooks/bookings/useCreateBooking";
|
||||
|
||||
export type Slot = {
|
||||
time: string;
|
||||
userIds?: number[];
|
||||
attendees?: number;
|
||||
bookingUid?: string;
|
||||
users?: string[];
|
||||
};
|
||||
|
||||
// Type that includes only the data values from BookerStore (excluding functions)
|
||||
export type BookerStoreValues = Omit<
|
||||
BookerStore,
|
||||
@@ -104,3 +111,26 @@ export type BookerPlatformWrapperAtomPropsForTeam = BookerPlatformWrapperAtomPro
|
||||
routingFormSearchParams?: RoutingFormSearchParams;
|
||||
rrHostSubsetIds?: number[];
|
||||
};
|
||||
|
||||
type SlotInfo = {
|
||||
time: string;
|
||||
attendees?: number;
|
||||
bookingUid?: string;
|
||||
away?: boolean;
|
||||
fromUser?: {
|
||||
id: number;
|
||||
displayName: string | null;
|
||||
};
|
||||
toUser?: {
|
||||
id: number;
|
||||
username: string | null;
|
||||
displayName: string | null;
|
||||
};
|
||||
reason?: string;
|
||||
emoji?: string;
|
||||
showNotePublicly?: boolean;
|
||||
};
|
||||
|
||||
export type GetAvailableSlotsResponse = {
|
||||
slots: Record<string, SlotInfo[]>;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
type Schedule = {
|
||||
id: number;
|
||||
userId: number;
|
||||
name: string;
|
||||
timeZone: string | null;
|
||||
};
|
||||
|
||||
export type CreateScheduleHandlerReturn = {
|
||||
schedule: Schedule;
|
||||
};
|
||||
|
||||
export type DuplicateScheduleHandlerReturn = {
|
||||
schedule: Schedule;
|
||||
};
|
||||
|
||||
export type GetAvailabilityListHandlerReturn = {
|
||||
schedules: (Omit<Schedule, "userId"> & {
|
||||
availability: {
|
||||
id: number;
|
||||
userId: number | null;
|
||||
eventTypeId: number | null;
|
||||
days: number[];
|
||||
startTime: Date;
|
||||
endTime: Date;
|
||||
date: Date | null;
|
||||
scheduleId: number | null;
|
||||
}[];
|
||||
isDefault: boolean;
|
||||
})[];
|
||||
};
|
||||
|
||||
export type CreateScheduleInput = {
|
||||
name: string;
|
||||
schedule?: { start: Date; end: Date }[][];
|
||||
eventTypeId?: number;
|
||||
};
|
||||
@@ -2,10 +2,9 @@ import { useMutation, useQueryClient } from "@tanstack/react-query";
|
||||
|
||||
import { SUCCESS_STATUS } from "@calcom/platform-constants";
|
||||
import type { ApiResponse, ApiErrorResponse, ApiSuccessResponse } from "@calcom/platform-types";
|
||||
import type { CreateScheduleHandlerReturn } from "@calcom/trpc/server/routers/viewer/availability/schedule/create.handler";
|
||||
import { TCreateInputSchema as CreateScheduleSchema } from "@calcom/trpc/server/routers/viewer/availability/schedule/create.schema";
|
||||
|
||||
import http from "../../lib/http";
|
||||
import type { CreateScheduleHandlerReturn, CreateScheduleInput as CreateScheduleSchema } from "./types";
|
||||
import { QUERY_KEY as SchedulesQueryKey } from "./useAtomGetAllSchedules";
|
||||
import { QUERY_KEY as ScheduleQueryKey } from "./useAtomSchedule";
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ import { useMutation, useQueryClient } from "@tanstack/react-query";
|
||||
|
||||
import { SUCCESS_STATUS } from "@calcom/platform-constants";
|
||||
import type { ApiResponse, ApiErrorResponse } from "@calcom/platform-types";
|
||||
import type { DuplicateScheduleHandlerReturn } from "@calcom/trpc/server/routers/viewer/availability/schedule/duplicate.handler";
|
||||
|
||||
import http from "../../lib/http";
|
||||
import type { DuplicateScheduleHandlerReturn } from "./types";
|
||||
import { QUERY_KEY as ScheduleQueryKey } from "./useAtomSchedule";
|
||||
|
||||
interface useAtomDuplicateScheduleOptions {
|
||||
|
||||
@@ -2,9 +2,9 @@ import { useQuery } from "@tanstack/react-query";
|
||||
|
||||
import { SUCCESS_STATUS } from "@calcom/platform-constants";
|
||||
import type { ApiResponse } from "@calcom/platform-types";
|
||||
import type { GetAvailabilityListHandlerReturn } from "@calcom/trpc/server/routers/viewer/availability/list.handler";
|
||||
|
||||
import http from "../../lib/http";
|
||||
import type { GetAvailabilityListHandlerReturn } from "./types";
|
||||
import { useAtomsContext } from "../useAtomsContext";
|
||||
|
||||
export const QUERY_KEY = "use-atom-user-schedules";
|
||||
|
||||
@@ -6,9 +6,9 @@ import type {
|
||||
ApiResponse,
|
||||
ApiSuccessResponse,
|
||||
} from "@calcom/platform-types";
|
||||
import type { GetAvailableSlotsResponse } from "@calcom/trpc/server/routers/viewer/slots/util";
|
||||
|
||||
import http from "../lib/http";
|
||||
import type { GetAvailableSlotsResponse } from "../booker/types";
|
||||
|
||||
export const QUERY_KEY = "get-available-slots";
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
},
|
||||
"./add-members-switch/AddMembersWithSwitchPlatformWrapper": "./add-members-switch/AddMembersWithSwitchPlatformWrapper.tsx",
|
||||
"./availability/AvailabilitySettings": "./availability/AvailabilitySettings.tsx",
|
||||
"./booker": "./booker/index.ts",
|
||||
"./booker/types": "./booker/types.ts",
|
||||
"./selected-calendars/SelectedCalendarsSettings": "./selected-calendars/SelectedCalendarsSettings.tsx",
|
||||
"./components/ui/shell": "./src/components/ui/shell.tsx",
|
||||
"./dist/index.ts": "./index.ts",
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
"../../dayjs",
|
||||
"../../prisma/zod-utils.ts",
|
||||
"../../prisma/zod",
|
||||
"../../trpc/server/routers/viewer/slots",
|
||||
"../../trpc/server/types",
|
||||
"../../features/eventtypes",
|
||||
"../../features/schedules",
|
||||
"../../features/bookings/Booker",
|
||||
|
||||
@@ -76,14 +76,6 @@ export const reserveSlotSchema = z
|
||||
"Either slotUtcStartDate, slotUtcEndDate or eventTypeId should be filled in."
|
||||
);
|
||||
|
||||
export type Slot = {
|
||||
time: string;
|
||||
userIds?: number[];
|
||||
attendees?: number;
|
||||
bookingUid?: string;
|
||||
users?: string[];
|
||||
};
|
||||
|
||||
export const removeSelectedSlotSchema = z.object({
|
||||
uid: z.string().nullable(),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user