refactor: Get rid of getServerSideProps for /getting-started pages (#23003)

* refactor

* fix type check
This commit is contained in:
Benny Joo
2025-08-11 11:22:13 +01:00
committed by GitHub
parent eb05d547de
commit fafd3fb181
3 changed files with 23 additions and 42 deletions
@@ -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<ClientPageProps>(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 <Page {...props} />;
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 <Page hasPendingInvites={!!user.teams.find((team) => team.accepted === false)} />;
};
export default ServerPage;
@@ -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,
},
};
};
@@ -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<typeof getServerSideProps>;
type PageProps = {
hasPendingInvites: boolean;
};
const OnboardingPage = (props: PageProps) => {
const pathname = usePathname();
const params = useParamsWithFallback();