From 87c89a99681d862ac88acbb6a6bdbb37e1a8562b Mon Sep 17 00:00:00 2001 From: Benny Joo Date: Fri, 15 Aug 2025 05:12:21 +0900 Subject: [PATCH] perf: check feature flag in layout level for /settings/organizations/new routes (#23057) * remove getServerSideProps * add layout * update pages --- .../settings/organizations/new/about/page.tsx | 11 +---------- .../organizations/new/add-teams/page.tsx | 11 +---------- .../organizations/new/handover/page.tsx | 12 +----------- .../settings/organizations/new/layout.tsx} | 19 +++++++------------ .../new/onboard-members/page.tsx | 11 +---------- .../settings/organizations/new/page.tsx | 15 +-------------- .../organizations/new/status/page.tsx | 11 +---------- 7 files changed, 13 insertions(+), 77 deletions(-) rename apps/web/{lib/settings/organizations/new/getServerSideProps.tsx => app/(use-page-wrapper)/settings/organizations/new/layout.tsx} (51%) diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/new/about/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/new/about/page.tsx index bea77ca857..4ca32d7432 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/new/about/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/new/about/page.tsx @@ -1,10 +1,4 @@ -import { withAppDirSsr } from "app/WithAppDirSsr"; -import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; -import { cookies, headers } from "next/headers"; - -import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -import { getServerSideProps } from "@lib/settings/organizations/new/getServerSideProps"; import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/about-view"; @@ -17,10 +11,7 @@ export const generateMetadata = async () => "/settings/organizations/new/about" ); -const getData = withAppDirSsr(getServerSideProps); - -const ServerPage = async ({ params, searchParams }: PageProps) => { - await getData(buildLegacyCtx(await headers(), await cookies(), await params, await searchParams)); +const ServerPage = async () => { return ( diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/new/add-teams/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/new/add-teams/page.tsx index 2f7cfc6bc5..4894d1d695 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/new/add-teams/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/new/add-teams/page.tsx @@ -1,10 +1,4 @@ -import { withAppDirSsr } from "app/WithAppDirSsr"; -import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; -import { cookies, headers } from "next/headers"; - -import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -import { getServerSideProps } from "@lib/settings/organizations/new/getServerSideProps"; import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/add-teams-view"; @@ -17,10 +11,7 @@ export const generateMetadata = async () => "/settings/organizations/new/add-teams" ); -const getData = withAppDirSsr(getServerSideProps); - -const ServerPage = async ({ params, searchParams }: PageProps) => { - await getData(buildLegacyCtx(await headers(), await cookies(), await params, await searchParams)); +const ServerPage = async () => { return ( diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/new/handover/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/new/handover/page.tsx index c12f68be97..d78cb8ff1c 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/new/handover/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/new/handover/page.tsx @@ -1,11 +1,4 @@ -import { withAppDirSsr } from "app/WithAppDirSsr"; -import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; -import { cookies } from "next/headers"; -import { headers } from "next/headers"; - -import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -import { getServerSideProps } from "@lib/settings/organizations/new/getServerSideProps"; import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/onboarding-handover"; @@ -18,10 +11,7 @@ export const generateMetadata = async () => "/settings/organizations/new/handover" ); -const getData = withAppDirSsr(getServerSideProps); - -const ServerPage = async ({ params, searchParams }: PageProps) => { - await getData(buildLegacyCtx(await headers(), await cookies(), await params, await searchParams)); +const ServerPage = async () => { return ( diff --git a/apps/web/lib/settings/organizations/new/getServerSideProps.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/new/layout.tsx similarity index 51% rename from apps/web/lib/settings/organizations/new/getServerSideProps.tsx rename to apps/web/app/(use-page-wrapper)/settings/organizations/new/layout.tsx index b045ec6431..136f262d95 100644 --- a/apps/web/lib/settings/organizations/new/getServerSideProps.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/new/layout.tsx @@ -1,21 +1,16 @@ -import type { GetServerSidePropsResult } from "next"; +import { _generateMetadata } from "app/_utils"; +import { notFound } from "next/navigation"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import { prisma } from "@calcom/prisma"; -export const getServerSideProps = async (): Promise> => { +export default async function Layout({ children }: { children: React.ReactNode }) { const featuresRepository = new FeaturesRepository(prisma); const organizations = await featuresRepository.checkIfFeatureIsEnabledGlobally("organizations"); - // Check if organizations are enabled + if (!organizations) { - return { - notFound: true, - }; + return notFound(); } - return { - props: { - isOrg: true, - }, - }; -}; + return children; +} diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/new/onboard-members/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/new/onboard-members/page.tsx index 260edd2a5d..d4903f8c04 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/new/onboard-members/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/new/onboard-members/page.tsx @@ -1,10 +1,4 @@ -import { withAppDirSsr } from "app/WithAppDirSsr"; -import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; -import { cookies, headers } from "next/headers"; - -import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -import { getServerSideProps } from "@lib/settings/organizations/new/getServerSideProps"; import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/onboard-members-view"; @@ -17,10 +11,7 @@ export const generateMetadata = async () => "/settings/organizations/new/onboard-members" ); -const getData = withAppDirSsr(getServerSideProps); - -const ServerPage = async ({ params, searchParams }: PageProps) => { - await getData(buildLegacyCtx(await headers(), await cookies(), await params, await searchParams)); +const ServerPage = async () => { return ( diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/new/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/new/page.tsx index 5e355effd2..e00cbee143 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/new/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/new/page.tsx @@ -1,13 +1,7 @@ -import { withAppDirSsr } from "app/WithAppDirSsr"; -import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; -import { cookies, headers } from "next/headers"; import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; -import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -import { getServerSideProps } from "@lib/settings/organizations/new/getServerSideProps"; - import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/create-new-view"; export const generateMetadata = async () => @@ -19,14 +13,7 @@ export const generateMetadata = async () => "/settings/organizations/new" ); -type Props = { - isOrg: boolean; -}; - -const getData = withAppDirSsr(getServerSideProps); - -const ServerPage = async ({ params, searchParams }: PageProps) => { - await getData(buildLegacyCtx(await headers(), await cookies(), await params, await searchParams)); +const ServerPage = async () => { return ( diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/new/status/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/new/status/page.tsx index 35b2f4af12..8d46b82052 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/new/status/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/new/status/page.tsx @@ -1,10 +1,4 @@ -import { withAppDirSsr } from "app/WithAppDirSsr"; -import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; -import { cookies, headers } from "next/headers"; - -import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -import { getServerSideProps } from "@lib/settings/organizations/new/getServerSideProps"; import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/payment-status-view"; @@ -17,10 +11,7 @@ export const generateMetadata = async () => "/settings/organizations/new/status" ); -const getData = withAppDirSsr(getServerSideProps); - -const ServerPage = async ({ params, searchParams }: PageProps) => { - await getData(buildLegacyCtx(await headers(), await cookies(), await params, await searchParams)); +const ServerPage = async () => { return (