From fafd3fb181de863519ac73d71c160d6e4d47e105 Mon Sep 17 00:00:00 2001 From: Benny Joo Date: Mon, 11 Aug 2025 19:22:13 +0900 Subject: [PATCH] refactor: Get rid of `getServerSideProps` for /getting-started pages (#23003) * refactor * fix type check --- .../getting-started/[[...step]]/page.tsx | 29 ++++++++++++------ .../[[...step]]/getServerSideProps.tsx | 30 ------------------- .../[[...step]]/onboarding-view.tsx | 6 ++-- 3 files changed, 23 insertions(+), 42 deletions(-) delete mode 100644 apps/web/lib/getting-started/[[...step]]/getServerSideProps.tsx diff --git a/apps/web/app/(use-page-wrapper)/getting-started/[[...step]]/page.tsx b/apps/web/app/(use-page-wrapper)/getting-started/[[...step]]/page.tsx index e2c470caa6..32d016bad6 100644 --- a/apps/web/app/(use-page-wrapper)/getting-started/[[...step]]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/getting-started/[[...step]]/page.tsx @@ -1,14 +1,15 @@ -import { withAppDirSsr } from "app/WithAppDirSsr"; import type { PageProps as ServerPageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { cookies, headers } from "next/headers"; +import { redirect } from "next/navigation"; +import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { APP_NAME } from "@calcom/lib/constants"; +import { UserRepository } from "@calcom/lib/server/repository/user"; +import prisma from "@calcom/prisma"; -import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -import { getServerSideProps } from "@lib/getting-started/[[...step]]/getServerSideProps"; +import { buildLegacyRequest } from "@lib/buildLegacyCtx"; -import type { PageProps as ClientPageProps } from "~/getting-started/[[...step]]/onboarding-view"; import Page from "~/getting-started/[[...step]]/onboarding-view"; export const generateMetadata = async ({ params }: ServerPageProps) => { @@ -23,13 +24,23 @@ export const generateMetadata = async ({ params }: ServerPageProps) => { ); }; -const getData = withAppDirSsr(getServerSideProps); - const ServerPage = async ({ params, searchParams }: ServerPageProps) => { - const context = buildLegacyCtx(await headers(), await cookies(), await params, await searchParams); + const session = await getServerSession({ req: buildLegacyRequest(await headers(), await cookies()) }); - const props = await getData(context); - return ; + if (!session?.user?.id) { + return redirect("/auth/login"); + } + + const userRepo = new UserRepository(prisma); + const user = await userRepo.findUserTeams({ + id: session.user.id, + }); + + if (!user) { + return redirect("/auth/login"); + } + + return team.accepted === false)} />; }; export default ServerPage; diff --git a/apps/web/lib/getting-started/[[...step]]/getServerSideProps.tsx b/apps/web/lib/getting-started/[[...step]]/getServerSideProps.tsx deleted file mode 100644 index a21142b937..0000000000 --- a/apps/web/lib/getting-started/[[...step]]/getServerSideProps.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import type { GetServerSidePropsContext } from "next"; - -import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; -import { UserRepository } from "@calcom/lib/server/repository/user"; -import prisma from "@calcom/prisma"; - -export const getServerSideProps = async (context: GetServerSidePropsContext) => { - const { req } = context; - - const session = await getServerSession({ req }); - - if (!session?.user?.id) { - return { redirect: { permanent: false, destination: "/auth/login" } }; - } - - const userRepo = new UserRepository(prisma); - const user = await userRepo.findUserTeams({ - id: session.user.id, - }); - - if (!user) { - throw new Error("User from session not found"); - } - - return { - props: { - hasPendingInvites: user.teams.find((team) => team.accepted === false) ?? false, - }, - }; -}; diff --git a/apps/web/modules/getting-started/[[...step]]/onboarding-view.tsx b/apps/web/modules/getting-started/[[...step]]/onboarding-view.tsx index 19a3d24c93..ef9049507a 100644 --- a/apps/web/modules/getting-started/[[...step]]/onboarding-view.tsx +++ b/apps/web/modules/getting-started/[[...step]]/onboarding-view.tsx @@ -18,8 +18,6 @@ import { StepCard } from "@calcom/ui/components/card"; import { Steps } from "@calcom/ui/components/form"; import { Icon } from "@calcom/ui/components/icon"; -import type { getServerSideProps } from "@lib/getting-started/[[...step]]/getServerSideProps"; - import { ConnectedCalendars } from "@components/getting-started/steps-views/ConnectCalendars"; import { ConnectedVideoStep } from "@components/getting-started/steps-views/ConnectedVideoStep"; import { SetupAvailability } from "@components/getting-started/steps-views/SetupAvailability"; @@ -85,7 +83,9 @@ const stepRouteSchema = z.object({ from: z.string().optional(), }); -export type PageProps = inferSSRProps; +type PageProps = { + hasPendingInvites: boolean; +}; const OnboardingPage = (props: PageProps) => { const pathname = usePathname(); const params = useParamsWithFallback();