perf: rename eventTypes.heavy to eventTypesHeavy (#24630)
* Rename eventTypes.heavy to eventTypesHeavy * Update eventTypes lib types * Remove trpc and trpc client heavy resolve endpoint * Update shared file * Fix comments * Rename path * Fix wait for URL path * Fix API endpoint in event-types.e2e.ts test * fix: Import WorkflowType from enums instead of client The WorkflowType enum should be imported from @calcom/prisma/enums rather than @calcom/prisma/client. This was causing integration tests to fail with 'Cannot read properties of undefined (reading EVENT_TYPE)' because the enum wasn't being properly exported from the client. This fixes the remaining integration test failures after the Prisma 6.16 upgrade. Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> --------- Co-authored-by: Keith Williams <keithwillcode@gmail.com> Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: anik@cal.com <adhabal2002@gmail.com>
This commit is contained in:
co-authored by
anik@cal.com <adhabal2002@gmail.com>
Keith Williams
Anik Dhabal Babu
Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
anik@cal.com <adhabal2002@gmail.com>
parent
35e29c4bee
commit
ae87fdcc9f
@@ -15,7 +15,6 @@ const resolveEndpoint = (links: any) => {
|
||||
// to the correct API endpoints.
|
||||
// - viewer.me - 2 segment paths like this are for logged in requests
|
||||
// - viewer.public.i18n - 3 segments paths can be public or authed
|
||||
// - viewer.eventTypes.heavy.create - 4 segments paths for heavy sub-router
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
return (ctx: any) => {
|
||||
const parts = ctx.op.path.split(".");
|
||||
@@ -24,11 +23,7 @@ const resolveEndpoint = (links: any) => {
|
||||
if (parts.length == 2) {
|
||||
endpoint = parts[0] as keyof typeof links;
|
||||
path = parts[1];
|
||||
} else if (parts.length >= 3 && parts[2] === "heavy") {
|
||||
endpoint = parts[1] + "/heavy" as keyof typeof links;
|
||||
path = parts[3];
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
endpoint = parts[1] as keyof typeof links;
|
||||
path = parts.splice(2, parts.length - 2).join(".");
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ const UserProfile = ({ user }: UserProfileProps) => {
|
||||
const [imageSrc, setImageSrc] = useState<string>(user?.avatar || "");
|
||||
const utils = trpc.useUtils();
|
||||
const router = useRouter();
|
||||
const createEventType = trpc.viewer.eventTypes.heavy.create.useMutation();
|
||||
const createEventType = trpc.viewer.eventTypesHeavy.create.useMutation();
|
||||
const telemetry = useTelemetry();
|
||||
const [firstRender, setFirstRender] = useState(true);
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@ const OnboardingPage = ({
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [eventTypeGroups]);
|
||||
|
||||
const updateMutation = trpc.viewer.eventTypes.heavy.update.useMutation({
|
||||
const updateMutation = trpc.viewer.eventTypesHeavy.update.useMutation({
|
||||
onSuccess: async (data) => {
|
||||
showToast(t("event_type_updated_successfully", { eventTypeTitle: data.eventType?.title }), "success");
|
||||
},
|
||||
|
||||
@@ -271,7 +271,7 @@ export const InfiniteEventTypeList = ({
|
||||
},
|
||||
});
|
||||
|
||||
const setHiddenMutation = trpc.viewer.eventTypes.heavy.update.useMutation({
|
||||
const setHiddenMutation = trpc.viewer.eventTypesHeavy.update.useMutation({
|
||||
onMutate: async (data) => {
|
||||
await utils.viewer.eventTypes.getEventTypesFromGroup.cancel();
|
||||
const previousValue = utils.viewer.eventTypes.getEventTypesFromGroup.getInfiniteData({
|
||||
|
||||
@@ -113,7 +113,7 @@ test("multiple duration selection updates event length correctly", async ({ page
|
||||
await page.getByTestId("vertical-tab-event_advanced_tab_title").click();
|
||||
await page.fill('[name="eventName"]', "{Event duration} event btwn {Organiser} {Scheduler}");
|
||||
await page.locator('[data-testid="update-eventtype"]').click();
|
||||
await page.waitForResponse("/api/trpc/eventTypes/heavy/update?batch=1");
|
||||
await page.waitForResponse("/api/trpc/eventTypesHeavy/update?batch=1");
|
||||
});
|
||||
|
||||
await page.goto(`/${user.username}/multiple-duration`);
|
||||
|
||||
@@ -131,7 +131,7 @@ test.describe("Event Types tests", () => {
|
||||
expect(formTitle).toBe(firstTitle);
|
||||
expect(formSlug).toContain(firstSlug);
|
||||
|
||||
const submitPromise = page.waitForResponse("/api/trpc/eventTypes/heavy/duplicate?batch=1");
|
||||
const submitPromise = page.waitForResponse("/api/trpc/eventTypesHeavy/duplicate?batch=1");
|
||||
await page.getByTestId("continue").click();
|
||||
const response = await submitPromise;
|
||||
expect(response.status()).toBe(200);
|
||||
@@ -144,7 +144,7 @@ test.describe("Event Types tests", () => {
|
||||
await page.waitForURL((url) => {
|
||||
return !!url.pathname.match(/\/event-types\/.+/);
|
||||
});
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
});
|
||||
@@ -167,7 +167,7 @@ test.describe("Event Types tests", () => {
|
||||
await page.locator("[data-testid=add-location]").click();
|
||||
await fillLocation(page, locationData[2], 2);
|
||||
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
|
||||
@@ -314,7 +314,7 @@ test.describe("Event Types tests", () => {
|
||||
const locationAddress = "New Delhi";
|
||||
|
||||
await fillLocation(page, locationAddress, 0, false);
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
|
||||
@@ -429,7 +429,7 @@ test.describe("Event Types tests", () => {
|
||||
await page.locator('[aria-label="Timezone Select"]').fill("New York");
|
||||
await page.keyboard.press("Enter");
|
||||
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
await page.goto("/event-types");
|
||||
|
||||
@@ -50,7 +50,7 @@ export function createBookingPageFixture(page: Page) {
|
||||
await page.goto("/event-types");
|
||||
},
|
||||
updateEventType: async () => {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
},
|
||||
|
||||
@@ -42,7 +42,7 @@ test.describe("private links creation and usage", () => {
|
||||
const $url = await page.locator('[data-testid="private-link-url"]').inputValue();
|
||||
|
||||
// click update
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
// book using generated url hash
|
||||
@@ -74,7 +74,7 @@ test.describe("private links creation and usage", () => {
|
||||
await page.locator("[data-testid=event-slug]").first().fill("somethingrandom");
|
||||
await expect(page.locator('[data-testid="event-slug"]').first()).toHaveValue("somethingrandom");
|
||||
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
await page.locator("[data-testid=vertical-tab-event_advanced_tab_title]").click();
|
||||
@@ -113,7 +113,7 @@ test.describe("private links creation and usage", () => {
|
||||
await page.locator('[data-testid="private-link-expiration-settings-save"]').click();
|
||||
await page.waitForLoadState("networkidle");
|
||||
// click update
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
// book using generated url hash
|
||||
@@ -164,7 +164,7 @@ test.describe("private links creation and usage", () => {
|
||||
await page.locator('[data-testid="private-link-expiration-settings-save"]').click();
|
||||
await page.waitForLoadState("networkidle");
|
||||
// click update
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
// book using generated url hash
|
||||
|
||||
@@ -476,7 +476,7 @@ export async function gotoBookingPage(page: Page) {
|
||||
}
|
||||
|
||||
export async function saveEventType(page: Page) {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -677,7 +677,7 @@ async function openBookingFormInPreviewTab(context: PlaywrightTestArgs["context"
|
||||
}
|
||||
|
||||
async function saveEventType(page: Page) {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -242,5 +242,5 @@ async function gotoBookingPage(page: Page) {
|
||||
}
|
||||
|
||||
async function saveAndWaitForResponse(page: Page) {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1");
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1");
|
||||
}
|
||||
|
||||
@@ -407,7 +407,7 @@ test.describe("Bookings", () => {
|
||||
await page.goto(`/event-types/${teamEvent.id}?tabName=advanced`);
|
||||
await page.getByTestId("requires-confirmation").click();
|
||||
await page.getByTestId("update-eventtype").click();
|
||||
await page.waitForResponse((response) => response.url().includes("/api/trpc/eventTypes/heavy/update"));
|
||||
await page.waitForResponse((response) => response.url().includes("/api/trpc/eventTypesHeavy/update"));
|
||||
|
||||
await doOnOrgDomain(
|
||||
{
|
||||
@@ -783,7 +783,7 @@ const markPhoneNumberAsRequiredAndEmailAsOptional = async (page: Page, eventId:
|
||||
const emailRequiredFiled = await page.locator('[data-testid="field-required"]').first();
|
||||
await emailRequiredFiled.click();
|
||||
await page.getByTestId("field-add-save").click();
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
};
|
||||
@@ -797,7 +797,7 @@ const markPhoneNumberAsRequiredField = async (page: Page, eventId: number) => {
|
||||
const phoneRequiredFiled = await page.locator('[data-testid="field-required"]').first();
|
||||
await phoneRequiredFiled.click();
|
||||
await page.getByTestId("field-add-save").click();
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -461,7 +461,7 @@ test.describe("Organization", () => {
|
||||
await page.locator('[data-testid="fixed-hosts-select"]').click();
|
||||
await page.locator(`text="${invitedUserEmail}"`).click();
|
||||
await page.locator('[data-testid="update-eventtype"]').click();
|
||||
await page.waitForResponse("/api/trpc/eventTypes/heavy/update?batch=1");
|
||||
await page.waitForResponse("/api/trpc/eventTypesHeavy/update?batch=1");
|
||||
|
||||
await expectPageToBeNotFound({ page, url: `/team/${team.slug}/${teamEvent.slug}` });
|
||||
await doOnOrgDomain(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { expect } from "@playwright/test";
|
||||
import type { Page } from "@playwright/test";
|
||||
|
||||
import prisma from "@calcom/prisma";
|
||||
import type { Page } from "@playwright/test";
|
||||
|
||||
import { test } from "./lib/fixtures";
|
||||
import { selectFirstAvailableTimeSlotNextMonth, submitAndWaitForResponse } from "./lib/testUtils";
|
||||
@@ -41,7 +41,7 @@ test.describe("Payment app", () => {
|
||||
await page.getByPlaceholder("Price").click();
|
||||
await page.getByPlaceholder("Price").fill("200");
|
||||
await page.getByText("SatoshissatsCurrencyBTCPayment optionCollect payment on booking").click();
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypes/heavy/update?batch=1", {
|
||||
await submitAndWaitForResponse(page, "/api/trpc/eventTypesHeavy/update?batch=1", {
|
||||
action: () => page.locator("[data-testid=update-eventtype]").click(),
|
||||
});
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ const DuplicateDialog = () => {
|
||||
}
|
||||
}, [searchParams?.get("dialog")]);
|
||||
|
||||
const duplicateMutation = trpc.viewer.eventTypes.heavy.duplicate.useMutation({
|
||||
const duplicateMutation = trpc.viewer.eventTypesHeavy.duplicate.useMutation({
|
||||
onSuccess: async ({ eventType }) => {
|
||||
await router.replace(`/event-types/${eventType.id}`);
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ export const useCreateEventType = (
|
||||
const [searchTerm, setSearchTerm] = useState("");
|
||||
const debouncedSearchTerm = useDebounce(searchTerm, 500);
|
||||
|
||||
const createMutation = trpc.viewer.eventTypes.heavy.create.useMutation({
|
||||
const createMutation = trpc.viewer.eventTypesHeavy.create.useMutation({
|
||||
onSuccess: async ({ eventType }) => {
|
||||
onSuccessMutation(eventType);
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ export type LocationFormValues = Pick<FormValues, "id" | "locations" | "bookingF
|
||||
|
||||
export type EventTypeAssignedUsers = RouterOutputs["viewer"]["eventTypes"]["get"]["eventType"]["children"];
|
||||
export type EventTypeHosts = RouterOutputs["viewer"]["eventTypes"]["get"]["eventType"]["hosts"];
|
||||
export type EventTypeUpdateInput = RouterInputs["viewer"]["eventTypes"]["heavy"]["update"];
|
||||
export type EventTypeUpdateInput = RouterInputs["viewer"]["eventTypesHeavy"]["update"];
|
||||
export type TabMap = {
|
||||
advanced: React.ReactNode;
|
||||
ai?: React.ReactNode;
|
||||
|
||||
@@ -177,7 +177,7 @@ const EventTypeWeb = ({
|
||||
|
||||
// Check workflow permissions
|
||||
const { hasPermission: canReadWorkflows } = useWorkflowPermission("canRead");
|
||||
const updateMutation = trpc.viewer.eventTypes.heavy.update.useMutation({
|
||||
const updateMutation = trpc.viewer.eventTypesHeavy.update.useMutation({
|
||||
onSuccess: async () => {
|
||||
const currentValues = form.getValues();
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ export const ENDPOINTS = [
|
||||
"deploymentSetup",
|
||||
"dsync",
|
||||
"eventTypes",
|
||||
"eventTypes/heavy",
|
||||
"eventTypesHeavy",
|
||||
"features",
|
||||
"i18n",
|
||||
"insights",
|
||||
|
||||
@@ -27,7 +27,6 @@ const resolveEndpoint = (links: any) => {
|
||||
// to the correct API endpoints.
|
||||
// - viewer.me - 2 segment paths like this are for logged in requests
|
||||
// - viewer.public.i18n - 3 segments paths can be public or authed
|
||||
// - viewer.eventTypes.heavy.create - 4 segments paths for heavy sub-router
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
return (ctx: any) => {
|
||||
const parts = ctx.op.path.split(".");
|
||||
@@ -36,9 +35,6 @@ const resolveEndpoint = (links: any) => {
|
||||
if (parts.length == 2) {
|
||||
endpoint = parts[0] as keyof typeof links;
|
||||
path = parts[1];
|
||||
} else if (parts.length >= 3 && parts[2] === "heavy") {
|
||||
endpoint = parts[1] + "/heavy" as keyof typeof links;
|
||||
path = parts[3];
|
||||
} else {
|
||||
endpoint = parts[1] as keyof typeof links;
|
||||
path = parts.splice(2, parts.length - 2).join(".");
|
||||
|
||||
@@ -2,7 +2,7 @@ import { userAdminRouter } from "@calcom/features/ee/users/server/trpc-router";
|
||||
import { featureFlagRouter } from "@calcom/features/flags/server/router";
|
||||
import { insightsRouter } from "@calcom/features/insights/server/trpc-router";
|
||||
|
||||
import { router, mergeRouters } from "../../trpc";
|
||||
import { router } from "../../trpc";
|
||||
import app_RoutingForms from "../apps/routing-forms/_router";
|
||||
import { loggedInViewerRouter } from "../loggedInViewer/_router";
|
||||
import { publicViewerRouter } from "../publicViewer/_router";
|
||||
@@ -53,12 +53,8 @@ export const viewerRouter = router({
|
||||
calendars: calendarsRouter,
|
||||
calVideo: calVideoRouter,
|
||||
credentials: credentialsRouter,
|
||||
eventTypes: mergeRouters(
|
||||
eventTypesRouter,
|
||||
router({
|
||||
heavy: heavyEventTypesRouter,
|
||||
})
|
||||
),
|
||||
eventTypes: eventTypesRouter,
|
||||
eventTypesHeavy: heavyEventTypesRouter,
|
||||
availability: availabilityRouter,
|
||||
teams: viewerTeamsRouter,
|
||||
timezones: timezonesRouter,
|
||||
|
||||
@@ -27,10 +27,10 @@ import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType";
|
||||
import { getTranslation } from "@calcom/lib/server/i18n";
|
||||
import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat";
|
||||
import prisma from "@calcom/prisma";
|
||||
import { WorkflowType as PrismaWorkflowType, type Workflow } from "@calcom/prisma/client";
|
||||
import type { Workflow } from "@calcom/prisma/client";
|
||||
import type { Prisma, WorkflowStep } from "@calcom/prisma/client";
|
||||
import type { TimeUnit } from "@calcom/prisma/enums";
|
||||
import { WorkflowTemplates } from "@calcom/prisma/enums";
|
||||
import { WorkflowTemplates, WorkflowType as PrismaWorkflowType } from "@calcom/prisma/enums";
|
||||
import { SchedulingType } from "@calcom/prisma/enums";
|
||||
import { BookingStatus, MembershipRole, WorkflowActions, WorkflowTriggerEvents } from "@calcom/prisma/enums";
|
||||
import { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils";
|
||||
|
||||
Reference in New Issue
Block a user