diff --git a/apps/web/app/(use-page-wrapper)/apps/routing-forms/[...pages]/layout.tsx b/apps/web/app/(use-page-wrapper)/apps/routing-forms/[...pages]/layout.tsx new file mode 100644 index 0000000000..a31b1251b4 --- /dev/null +++ b/apps/web/app/(use-page-wrapper)/apps/routing-forms/[...pages]/layout.tsx @@ -0,0 +1,7 @@ +import type { ReactNode } from "react"; + +import FormProvider from "./FormProvider"; + +export default async function Layout({ children }: { children: ReactNode }) { + return {children}; +} diff --git a/apps/web/app/(use-page-wrapper)/apps/routing-forms/[...pages]/page.tsx b/apps/web/app/(use-page-wrapper)/apps/routing-forms/[...pages]/page.tsx index 309300558b..30a0bee29b 100644 --- a/apps/web/app/(use-page-wrapper)/apps/routing-forms/[...pages]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/routing-forms/[...pages]/page.tsx @@ -5,29 +5,23 @@ import { cookies, headers } from "next/headers"; import { routingFormsComponents } from "@calcom/app-store/routing-forms/pages/app-routing.client-config"; import type { routingServerSidePropsConfig } from "@calcom/app-store/routing-forms/pages/app-routing.server-config"; -import Shell from "@calcom/features/shell/Shell"; import { getServerSideProps } from "@lib/apps/routing-forms/[...pages]/getServerSideProps"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -import FormProvider from "./FormProvider"; - const normalizePages = (pages: string[] | string | undefined) => { const normalizedPages = Array.isArray(pages) ? pages : pages?.split("/") ?? []; - return { - mainPage: normalizedPages[0] ?? "forms", - subPages: normalizedPages.slice(1), - }; + return normalizedPages[0]; }; export const generateMetadata = async ({ params }: { params: Promise<{ pages: string[] }> }) => { - const { mainPage } = normalizePages((await params).pages); + const mainPage = normalizePages((await params).pages); return await _generateMetadata( (t) => (mainPage === "routing-link" ? `Form | Cal.com Forms` : `${t("routing_forms")} | Cal.com Forms`), () => "", undefined, undefined, - `/apps/routing-forms/${(await params).pages.join("/")}` + `/routing/${(await params).pages.join("/")}` ); }; @@ -38,25 +32,11 @@ const getData = withAppDirSsr(getServerSideProps); const ServerPage = async ({ params, searchParams }: ServerPageProps) => { const context = buildLegacyCtx(await headers(), await cookies(), await params, await searchParams); const props = await getData(context); - const { mainPage } = normalizePages((await params).pages); + const mainPage = normalizePages((await params).pages); const Component = await routingFormsComponents[mainPage as keyof typeof routingFormsComponents](); - const FinalComponent = () => ( - - - - ); - // TODO: we should really be using layout for this. - if (mainPage === "forms") { - return ( - - - - ); - } - - return ; + return ; }; export default ServerPage; diff --git a/apps/web/app/(use-page-wrapper)/apps/routing-forms/forms/[[...pages]]/page.tsx b/apps/web/app/(use-page-wrapper)/apps/routing-forms/forms/[[...pages]]/page.tsx new file mode 100644 index 0000000000..de9cda14d1 --- /dev/null +++ b/apps/web/app/(use-page-wrapper)/apps/routing-forms/forms/[[...pages]]/page.tsx @@ -0,0 +1,21 @@ +import { _generateMetadata } from "app/_utils"; + +import Forms from "@calcom/app-store/routing-forms/pages/forms/[...appPages]"; + +export const generateMetadata = async ({ params }: { params: Promise<{ pages: string[] }> }) => { + const pages = (await params).pages; + + return await _generateMetadata( + (t) => `${t("routing_forms")} | Cal.com Forms`, + () => "", + undefined, + undefined, + `/routing/forms/${pages?.length > 0 ? pages.join("/") : ""}` + ); +}; + +const ServerPage = async () => { + return ; +}; + +export default ServerPage; diff --git a/apps/web/app/(use-page-wrapper)/apps/routing-forms/forms/layout.tsx b/apps/web/app/(use-page-wrapper)/apps/routing-forms/forms/layout.tsx new file mode 100644 index 0000000000..8954344d81 --- /dev/null +++ b/apps/web/app/(use-page-wrapper)/apps/routing-forms/forms/layout.tsx @@ -0,0 +1,23 @@ +import { cookies, headers } from "next/headers"; +import { redirect } from "next/navigation"; +import type { ReactNode } from "react"; + +import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +import Shell from "@calcom/features/shell/Shell"; + +import { buildLegacyRequest } from "@lib/buildLegacyCtx"; + +import FormProvider from "../[...pages]/FormProvider"; + +export default async function Layout({ children }: { children: ReactNode }) { + const session = await getServerSession({ req: buildLegacyRequest(await headers(), await cookies()) }); + + if (!session?.user?.id) { + redirect("/auth/login"); + } + return ( + + {children} + + ); +} diff --git a/apps/web/lib/apps/routing-forms/[...pages]/getServerSideProps.ts b/apps/web/lib/apps/routing-forms/[...pages]/getServerSideProps.ts index 7be7b1a553..d49e179228 100644 --- a/apps/web/lib/apps/routing-forms/[...pages]/getServerSideProps.ts +++ b/apps/web/lib/apps/routing-forms/[...pages]/getServerSideProps.ts @@ -1,7 +1,6 @@ import type { GetServerSidePropsResult, GetServerSidePropsContext } from "next"; import { z } from "zod"; -import { getAppWithMetadata } from "@calcom/app-store/_appRegistry"; import { routingServerSidePropsConfig } from "@calcom/app-store/routing-forms/pages/app-routing.server-config"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import prisma from "@calcom/prisma"; @@ -33,13 +32,6 @@ export async function getServerSideProps( const session = await getServerSession({ req }); const user = session?.user; - const app = await getAppWithMetadata({ slug: "routing-forms" }); - - if (!app) { - return { - notFound: true, - }; - } const result = await getServerSideProps(context as AppGetServerSidePropsContext, prisma, user); @@ -53,7 +45,7 @@ export async function getServerSideProps( return { props: { - appUrl: app.simplePath || `/apps/routing-forms`, + appUrl: "/routing", ...result.props, }, }; diff --git a/packages/app-store/routing-forms/pages/app-routing.client-config.tsx b/packages/app-store/routing-forms/pages/app-routing.client-config.tsx index 1ca0e87d2a..fb4fe9a8dd 100644 --- a/packages/app-store/routing-forms/pages/app-routing.client-config.tsx +++ b/packages/app-store/routing-forms/pages/app-routing.client-config.tsx @@ -1,7 +1,6 @@ export const routingFormsComponents = { "form-edit": () => import("./form-edit/[...appPages]").then((mod) => mod.default), "route-builder": () => import("./route-builder/[...appPages]").then((mod) => mod.default), - forms: () => import("./forms/[...appPages]").then((mod) => mod.default), "routing-link": () => import("./routing-link/[...appPages]").then((mod) => mod.default), reporting: () => import("./reporting/[...appPages]").then((mod) => mod.default), "incomplete-booking": () => import("./incomplete-booking/[...appPages]").then((mod) => mod.default), diff --git a/packages/app-store/routing-forms/pages/app-routing.server-config.tsx b/packages/app-store/routing-forms/pages/app-routing.server-config.tsx index 7945db3f6a..9c94078656 100644 --- a/packages/app-store/routing-forms/pages/app-routing.server-config.tsx +++ b/packages/app-store/routing-forms/pages/app-routing.server-config.tsx @@ -3,11 +3,9 @@ import "server-only"; import type { AppGetServerSideProps } from "@calcom/types/AppGetServerSideProps"; import { getServerSidePropsForSingleFormView as getServerSidePropsSingleForm } from "../components/getServerSidePropsSingleForm"; -import { getServerSideProps as getServerSidePropsForms } from "./forms/getServerSideProps"; import { getServerSideProps as getServerSidePropsRoutingLink } from "./routing-link/getServerSideProps"; export const routingServerSidePropsConfig: Record = { - forms: getServerSidePropsForms, "form-edit": getServerSidePropsSingleForm, "route-builder": getServerSidePropsSingleForm, "routing-link": getServerSidePropsRoutingLink, diff --git a/packages/app-store/routing-forms/pages/forms/[...appPages].tsx b/packages/app-store/routing-forms/pages/forms/[...appPages].tsx index 01fc365082..100ef043ee 100644 --- a/packages/app-store/routing-forms/pages/forms/[...appPages].tsx +++ b/packages/app-store/routing-forms/pages/forms/[...appPages].tsx @@ -26,13 +26,10 @@ import { Icon } from "@calcom/ui/components/icon"; import { List, ListLinkItem } from "@calcom/ui/components/list"; import { Tooltip } from "@calcom/ui/components/tooltip"; -import type { inferSSRProps } from "@lib/types/inferSSRProps"; - import type { SetNewFormDialogState, NewFormDialogState } from "../../components/FormActions"; import { FormAction, FormActionsDropdown, FormActionsProvider } from "../../components/FormActions"; import { isFallbackRoute } from "../../lib/isFallbackRoute"; import type { RoutingFormWithResponseCount } from "../../types/types"; -import { getServerSideProps } from "./getServerSideProps"; function NewFormButton({ setNewFormDialogState }: { setNewFormDialogState: SetNewFormDialogState }) { const { t } = useLocale(); @@ -47,11 +44,7 @@ function NewFormButton({ setNewFormDialogState }: { setNewFormDialogState: SetNe ); } -export default function RoutingForms({ - appUrl, -}: inferSSRProps & { - appUrl: string; -}) { +export default function RoutingForms({ appUrl }: { appUrl: string }) { const { t } = useLocale(); const { hasPaidPlan } = useHasPaidPlan(); const routerQuery = useRouterQuery(); @@ -332,5 +325,3 @@ export default function RoutingForms({ ); } - -export { getServerSideProps }; diff --git a/packages/app-store/routing-forms/pages/forms/getServerSideProps.ts b/packages/app-store/routing-forms/pages/forms/getServerSideProps.ts deleted file mode 100644 index a737dedc94..0000000000 --- a/packages/app-store/routing-forms/pages/forms/getServerSideProps.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { AppGetServerSidePropsContext, AppPrisma, AppUser } from "@calcom/types/AppGetServerSideProps"; - -export const getServerSideProps = async function getServerSideProps( - context: AppGetServerSidePropsContext, - prisma: AppPrisma, - user: AppUser -) { - if (!user) { - return { - redirect: { - permanent: false, - destination: "/auth/login", - }, - }; - } - - return { - props: {}, - }; -};