* wip * fix * fix * refactor * rename to routingServerSidePropsConfig * refactor * refactor * add routing-link to useIsBookingPage hook * remove Head component * fix * redirect user to apps/routing-forms/forms if user goes to apps/routing-forms * refactor * remove log * remove client component not needed * clean up code * remove unneeded metadata * clean up further * clean up further 2 * fix type check * routing-link does not need shell * Fix title for Routing Form public link and also remove any * Remove ; in HTML * Remove unnecessary page reload --------- Co-authored-by: Hariom Balhara <hariombalhara@gmgmail.com>
38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
"use client";
|
|
|
|
import type { GetServerSidePropsContext } from "next";
|
|
import React from "react";
|
|
import { FormProvider, useForm } from "react-hook-form";
|
|
|
|
import { useParamsWithFallback } from "@calcom/lib/hooks/useParamsWithFallback";
|
|
import type { AppPrisma, AppSsrInit, AppUser } from "@calcom/types/AppGetServerSideProps";
|
|
|
|
import type { AppProps } from "@lib/app-providers";
|
|
|
|
import RoutingFormsRoutingConfig from "../app-routing.config";
|
|
|
|
const DEFAULT_ROUTE = "forms";
|
|
|
|
type GetServerSidePropsRestArgs = [AppPrisma, AppUser, AppSsrInit];
|
|
type Component = {
|
|
default: React.ComponentType & Pick<AppProps["Component"], "getLayout">;
|
|
getServerSideProps?: (context: GetServerSidePropsContext, ...rest: GetServerSidePropsRestArgs) => void;
|
|
};
|
|
const getComponent = (route: string): Component => {
|
|
return (RoutingFormsRoutingConfig as unknown as Record<string, Component>)[route];
|
|
};
|
|
|
|
export default function LayoutHandler(props: { [key: string]: unknown }) {
|
|
const params = useParamsWithFallback();
|
|
const methods = useForm();
|
|
const pageKey = Array.isArray(params.pages)
|
|
? params.pages[0]
|
|
: params.pages?.split("/")[0] ?? DEFAULT_ROUTE;
|
|
const PageComponent = getComponent(pageKey).default;
|
|
return (
|
|
<FormProvider {...methods}>
|
|
<PageComponent {...props} />
|
|
</FormProvider>
|
|
);
|
|
}
|