From 69efc26f369531ed7e9d97923789f4bb230acea0 Mon Sep 17 00:00:00 2001 From: Benny Joo Date: Thu, 17 Apr 2025 22:55:01 -0400 Subject: [PATCH] perf: slim down middleware matcher (#20735) * wip * wip * refactor * add pathname * fix * fix: manually construct pathname for metadata functions Co-Authored-By: benny@cal.com * fix: add pathname parameter to all metadata functions Co-Authored-By: benny@cal.com * fix: add pathname parameter to remaining metadata functions Co-Authored-By: benny@cal.com * fix * fix * fix type checks * Refactor * fix * fix --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: benny@cal.com --- .../org/[orgSlug]/[user]/page.tsx | 5 +- .../(main-nav)/availability/page.tsx | 5 +- .../(main-nav)/bookings/[status]/page.tsx | 7 +- .../(main-nav)/event-types/page.tsx | 5 +- .../(main-nav)/teams/page.tsx | 5 +- apps/web/app/(use-page-wrapper)/403/page.tsx | 5 +- apps/web/app/(use-page-wrapper)/500/page.tsx | 5 +- .../(use-page-wrapper)/apps/[slug]/page.tsx | 5 +- .../apps/[slug]/setup/page.tsx | 5 +- .../apps/categories/layout.tsx | 5 +- .../apps/installation/[[...step]]/page.tsx | 7 +- .../apps/installed/[category]/page.tsx | 7 +- apps/web/app/(use-page-wrapper)/apps/page.tsx | 5 +- .../apps/routing-forms/[...pages]/page.tsx | 5 +- .../(use-page-wrapper)/auth/error/page.tsx | 5 +- .../auth/forgot-password/[id]/page.tsx | 7 +- .../auth/forgot-password/page.tsx | 5 +- .../(use-page-wrapper)/auth/login/page.tsx | 5 +- .../(use-page-wrapper)/auth/logout/page.tsx | 5 +- .../auth/oauth2/authorize/page.tsx | 5 +- .../auth/platform/authorize/page.tsx | 5 +- .../(use-page-wrapper)/auth/setup/page.tsx | 5 +- .../auth/verify-email-change/page.tsx | 5 +- .../auth/verify-email/page.tsx | 5 +- .../(use-page-wrapper)/auth/verify/page.tsx | 5 +- .../availability/[schedule]/page.tsx | 5 +- .../availability/troubleshoot/page.tsx | 5 +- .../(use-page-wrapper)/booking/[uid]/page.tsx | 3 +- .../booking/dry-run-successful/page.tsx | 5 +- .../connect-and-join/page.tsx | 5 +- .../d/[link]/[slug]/page.tsx | 7 +- .../(use-page-wrapper)/enterprise/page.tsx | 5 +- .../event-types/[type]/page.tsx | 10 +- .../getting-started/[[...step]]/page.tsx | 8 +- .../app/(use-page-wrapper)/insights/page.tsx | 5 +- .../insights/router-position/page.tsx | 5 +- .../insights/routing/page.tsx | 5 +- .../(use-page-wrapper)/maintenance/page.tsx | 5 +- apps/web/app/(use-page-wrapper)/more/page.tsx | 5 +- .../(use-page-wrapper)/payment/[uid]/page.tsx | 5 +- .../admin/apps/[category]/page.tsx | 7 +- .../(admin-layout)/admin/apps/page.tsx | 5 +- .../(admin-layout)/admin/flags/page.tsx | 5 +- .../admin/impersonation/page.tsx | 5 +- .../(admin-layout)/admin/lockedSMS/page.tsx | 5 +- .../(admin-layout)/admin/oAuth/page.tsx | 5 +- .../admin/organizations/[id]/edit/page.tsx | 10 +- .../admin/organizations/page.tsx | 5 +- .../settings/(admin-layout)/admin/page.tsx | 5 +- .../admin/users/[id]/edit/page.tsx | 10 +- .../(admin-layout)/admin/users/add/page.tsx | 5 +- .../(admin-layout)/admin/users/page.tsx | 5 +- .../admin/workspace-platforms/page.tsx | 5 +- .../(settings-layout)/billing/page.tsx | 5 +- .../developer/api-keys/page.tsx | 5 +- .../developer/webhooks/(with-loader)/page.tsx | 5 +- .../developer/webhooks/[id]/page.tsx | 7 +- .../developer/webhooks/new/page.tsx | 5 +- .../my-account/appearance/page.tsx | 5 +- .../my-account/calendars/page.tsx | 5 +- .../my-account/conferencing/page.tsx | 5 +- .../my-account/general/page.tsx | 5 +- .../my-account/out-of-office/page.tsx | 5 +- .../my-account/profile/page.tsx | 5 +- .../my-account/push-notifications/page.tsx | 5 +- .../organizations/admin-api/page.tsx | 5 +- .../attributes/[id]/edit/page.tsx | 7 +- .../organizations/attributes/create/page.tsx | 5 +- .../organizations/attributes/page.tsx | 5 +- .../delegation-credential/page.tsx | 5 +- .../organizations/dsync/page.tsx | 5 +- .../organizations/general/page.tsx | 5 +- .../organizations/privacy/page.tsx | 5 +- .../organizations/profile/page.tsx | 5 +- .../organizations/sso/page.tsx | 5 +- .../teams/other/[id]/appearance/page.tsx | 7 +- .../teams/other/[id]/members/page.tsx | 7 +- .../teams/other/[id]/profile/page.tsx | 7 +- .../organizations/teams/other/page.tsx | 5 +- .../security/impersonation/page.tsx | 5 +- .../security/password/page.tsx | 5 +- .../(settings-layout)/security/sso/page.tsx | 5 +- .../security/two-factor-auth/page.tsx | 5 +- .../teams/[id]/appearance/page.tsx | 7 +- .../teams/[id]/members/page.tsx | 7 +- .../teams/[id]/profile/page.tsx | 7 +- .../teams/[id]/settings/page.tsx | 7 +- .../settings/(settings-layout)/teams/page.tsx | 5 +- .../settings/license-key/new/page.tsx | 5 +- .../organizations/[id]/members/page.tsx | 7 +- .../organizations/appearance/page.tsx | 5 +- .../settings/organizations/members/page.tsx | 5 +- .../settings/organizations/new/about/page.tsx | 5 +- .../organizations/new/add-teams/page.tsx | 5 +- .../organizations/new/handover/page.tsx | 5 +- .../new/onboard-members/page.tsx | 5 +- .../settings/organizations/new/page.tsx | 5 +- .../organizations/new/status/page.tsx | 5 +- .../settings/platform/billing/page.tsx | 5 +- .../settings/platform/managed-users/page.tsx | 5 +- .../settings/platform/members/page.tsx | 5 +- .../settings/platform/new/page.tsx | 5 +- .../oauth-clients/[clientId]/edit/page.tsx | 7 +- .../[clientId]/edit/webhooks/page.tsx | 7 +- .../platform/oauth-clients/create/page.tsx | 5 +- .../settings/platform/page.tsx | 5 +- .../settings/platform/plans/page.tsx | 5 +- .../settings/teams/[id]/event-type/page.tsx | 7 +- .../teams/[id]/onboard-members/page.tsx | 7 +- .../settings/teams/new/page.tsx | 5 +- .../app/(use-page-wrapper)/signup/page.tsx | 5 +- .../app/(use-page-wrapper)/upgrade/page.tsx | 5 +- .../video/meeting-ended/[uid]/page.tsx | 7 +- .../video/meeting-not-started/[uid]/page.tsx | 5 +- .../video/no-meeting-found/page.tsx | 5 +- .../workflows/[workflow]/page.tsx | 5 +- .../app/(use-page-wrapper)/workflows/page.tsx | 5 +- apps/web/app/_utils.tsx | 31 ++- apps/web/app/icons/page.tsx | 5 +- apps/web/app/layout.tsx | 31 +-- apps/web/app/not-found.tsx | 231 +----------------- apps/web/app/notFoundClient.tsx | 216 ++++++++++++++++ apps/web/middleware.ts | 63 ++--- 123 files changed, 773 insertions(+), 447 deletions(-) create mode 100644 apps/web/app/notFoundClient.tsx diff --git a/apps/web/app/(booking-page-wrapper)/org/[orgSlug]/[user]/page.tsx b/apps/web/app/(booking-page-wrapper)/org/[orgSlug]/[user]/page.tsx index c25b58f8c3..28ac508474 100644 --- a/apps/web/app/(booking-page-wrapper)/org/[orgSlug]/[user]/page.tsx +++ b/apps/web/app/(booking-page-wrapper)/org/[orgSlug]/[user]/page.tsx @@ -20,6 +20,7 @@ const getData = withAppDirSsr(getServerSideProps); export const generateMetadata = async ({ params, searchParams }: PageProps) => { const legacyCtx = buildLegacyCtx(await headers(), await cookies(), await params, await searchParams); const props = await getData(legacyCtx); + const decodedParams = decodeParams(await params); if ((props as TeamPageProps)?.team) { const { team, markdownStrippedBio, isSEOIndexable, currentOrgDomain } = props as TeamPageProps; @@ -30,7 +31,6 @@ export const generateMetadata = async ({ params, searchParams }: PageProps) => { image: getOrgOrTeamAvatar(team), }, }; - const decodedParams = decodeParams(await params); return { ...(await generateMeetingMetadata( meeting, @@ -67,7 +67,8 @@ export const generateMetadata = async ({ params, searchParams }: PageProps) => { () => profile.name, () => markdownStrippedBio, false, - getOrgFullOrigin(entity.orgSlug ?? null) + getOrgFullOrigin(entity.orgSlug ?? null), + `/${decodedParams.user}` )), robots: { index: allowSEOIndexing, diff --git a/apps/web/app/(use-page-wrapper)/(main-nav)/availability/page.tsx b/apps/web/app/(use-page-wrapper)/(main-nav)/availability/page.tsx index 24588e1eb1..d77ad8719a 100644 --- a/apps/web/app/(use-page-wrapper)/(main-nav)/availability/page.tsx +++ b/apps/web/app/(use-page-wrapper)/(main-nav)/availability/page.tsx @@ -12,7 +12,10 @@ import { ShellMainAppDir } from "../ShellMainAppDir"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("availability"), - (t) => t("configure_availability") + (t) => t("configure_availability"), + undefined, + undefined, + "/availability" ); }; diff --git a/apps/web/app/(use-page-wrapper)/(main-nav)/bookings/[status]/page.tsx b/apps/web/app/(use-page-wrapper)/(main-nav)/bookings/[status]/page.tsx index 600a981330..7a52112ab6 100644 --- a/apps/web/app/(use-page-wrapper)/(main-nav)/bookings/[status]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/(main-nav)/bookings/[status]/page.tsx @@ -11,10 +11,13 @@ const querySchema = z.object({ status: z.enum(validStatuses), }); -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ status: string }> }) => await _generateMetadata( (t) => t("bookings"), - (t) => t("bookings_description") + (t) => t("bookings_description"), + undefined, + undefined, + `/bookings/${(await params).status}` ); const Page = async ({ params }: PageProps) => { diff --git a/apps/web/app/(use-page-wrapper)/(main-nav)/event-types/page.tsx b/apps/web/app/(use-page-wrapper)/(main-nav)/event-types/page.tsx index 0cc9b6026d..c4e938fc91 100644 --- a/apps/web/app/(use-page-wrapper)/(main-nav)/event-types/page.tsx +++ b/apps/web/app/(use-page-wrapper)/(main-nav)/event-types/page.tsx @@ -16,7 +16,10 @@ import EventTypes, { EventTypesCTA } from "~/event-types/views/event-types-listi export const generateMetadata = async () => await _generateMetadata( (t) => t("event_types_page_title"), - (t) => t("event_types_page_subtitle") + (t) => t("event_types_page_subtitle"), + undefined, + undefined, + "/event-types" ); const Page = async ({ params, searchParams }: PageProps) => { diff --git a/apps/web/app/(use-page-wrapper)/(main-nav)/teams/page.tsx b/apps/web/app/(use-page-wrapper)/(main-nav)/teams/page.tsx index c70d1f8d46..7f630a6c3a 100644 --- a/apps/web/app/(use-page-wrapper)/(main-nav)/teams/page.tsx +++ b/apps/web/app/(use-page-wrapper)/(main-nav)/teams/page.tsx @@ -13,7 +13,10 @@ import TeamsView, { TeamsCTA } from "~/teams/teams-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("teams"), - (t) => t("create_manage_teams_collaborative") + (t) => t("create_manage_teams_collaborative"), + undefined, + undefined, + "/teams" ); const ServerPage = async ({ searchParams: _searchParams }: ServerPageProps) => { diff --git a/apps/web/app/(use-page-wrapper)/403/page.tsx b/apps/web/app/(use-page-wrapper)/403/page.tsx index abc571b1ec..2790d1c622 100644 --- a/apps/web/app/(use-page-wrapper)/403/page.tsx +++ b/apps/web/app/(use-page-wrapper)/403/page.tsx @@ -6,7 +6,10 @@ import { Button } from "@calcom/ui/components/button"; export const generateMetadata = () => _generateMetadata( (t) => `${t("access_denied")} | ${APP_NAME}`, - () => "" + () => "", + undefined, + undefined, + "/403" ); async function Error403() { diff --git a/apps/web/app/(use-page-wrapper)/500/page.tsx b/apps/web/app/(use-page-wrapper)/500/page.tsx index 0d3e30f567..f86142cfef 100644 --- a/apps/web/app/(use-page-wrapper)/500/page.tsx +++ b/apps/web/app/(use-page-wrapper)/500/page.tsx @@ -8,7 +8,10 @@ import CopyButton from "./copy-button"; export const generateMetadata = () => _generateMetadata( (t) => `${t("something_unexpected_occurred")} | ${APP_NAME}`, - () => "" + () => "", + undefined, + undefined, + "/500" ); async function Error500({ searchParams }: { searchParams: { error?: string } }) { diff --git a/apps/web/app/(use-page-wrapper)/apps/[slug]/page.tsx b/apps/web/app/(use-page-wrapper)/apps/[slug]/page.tsx index 52b2bf83fb..5218923ca7 100644 --- a/apps/web/app/(use-page-wrapper)/apps/[slug]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/[slug]/page.tsx @@ -28,7 +28,10 @@ export const generateMetadata = async ({ params }: _PageProps) => { return await generateAppMetadata( { slug: logo, name, description }, () => name, - () => description + () => description, + undefined, + undefined, + `/apps/${p.data.slug}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/apps/[slug]/setup/page.tsx b/apps/web/app/(use-page-wrapper)/apps/[slug]/setup/page.tsx index bbe46b0d7f..51e0feed81 100644 --- a/apps/web/app/(use-page-wrapper)/apps/[slug]/setup/page.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/[slug]/setup/page.tsx @@ -13,7 +13,10 @@ export const generateMetadata = async ({ params: _params }: ServerPageProps) => const params = await _params; const metadata = await _generateMetadata( () => `${params.slug}`, - () => "" + () => "", + undefined, + undefined, + `/apps/${params.slug}/setup` ); return { ...metadata, diff --git a/apps/web/app/(use-page-wrapper)/apps/categories/layout.tsx b/apps/web/app/(use-page-wrapper)/apps/categories/layout.tsx index c93e7cd7f8..9ebe6ad5bc 100644 --- a/apps/web/app/(use-page-wrapper)/apps/categories/layout.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/categories/layout.tsx @@ -3,7 +3,10 @@ import { _generateMetadata } from "app/_utils"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("app_store"), - (t) => t("app_store_description") + (t) => t("app_store_description"), + undefined, + undefined, + "/apps/categories" ); }; diff --git a/apps/web/app/(use-page-wrapper)/apps/installation/[[...step]]/page.tsx b/apps/web/app/(use-page-wrapper)/apps/installation/[[...step]]/page.tsx index 41e30a28be..49a6b84074 100644 --- a/apps/web/app/(use-page-wrapper)/apps/installation/[[...step]]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/installation/[[...step]]/page.tsx @@ -13,9 +13,14 @@ export const generateMetadata = async ({ params, searchParams }: PageProps) => { const legacyCtx = buildLegacyCtx(await headers(), await cookies(), await params, await searchParams); const { appMetadata } = await getData(legacyCtx); + const stepParam = (await params).step; + const step = stepParam && Array.isArray(stepParam) ? stepParam.join("/") : ""; return await _generateMetadata( (t) => `${t("install")} ${appMetadata?.name ?? ""}`, - () => "" + () => "", + undefined, + undefined, + `/apps/installation${step ? `/${step}` : ""}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/apps/installed/[category]/page.tsx b/apps/web/app/(use-page-wrapper)/apps/installed/[category]/page.tsx index 28c3ca4aab..e723fd1756 100644 --- a/apps/web/app/(use-page-wrapper)/apps/installed/[category]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/installed/[category]/page.tsx @@ -11,10 +11,13 @@ const querySchema = z.object({ category: z.nativeEnum(AppCategories), }); -export const generateMetadata = async () => { +export const generateMetadata = async ({ params }: { params: Promise<{ category: string }> }) => { return await _generateMetadata( (t) => t("installed_apps"), - (t) => t("manage_your_connected_apps") + (t) => t("manage_your_connected_apps"), + undefined, + undefined, + `/apps/installed/${(await params).category}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/apps/page.tsx b/apps/web/app/(use-page-wrapper)/apps/page.tsx index 8a9a6f027b..f15da14504 100644 --- a/apps/web/app/(use-page-wrapper)/apps/page.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/page.tsx @@ -11,7 +11,10 @@ import AppsPage from "~/apps/apps-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("app_store"), - (t) => t("app_store_description") + (t) => t("app_store_description"), + undefined, + undefined, + "/apps" ); }; 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 f3b08e308b..aa55435cb4 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 @@ -25,7 +25,10 @@ export const generateMetadata = async ({ params }: { params: Promise<{ pages: st return await _generateMetadata( // TODO: Need to show the actual form name instead of "Form" (t) => (mainPage === "routing-link" ? `Form | Cal.com Forms` : `${t("routing_forms")} | Cal.com Forms`), - () => "" + () => "", + undefined, + undefined, + `/apps/routing-forms/${(await params).pages.join("/")}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/error/page.tsx b/apps/web/app/(use-page-wrapper)/auth/error/page.tsx index d5c59e22c8..eadadff7bf 100644 --- a/apps/web/app/(use-page-wrapper)/auth/error/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/error/page.tsx @@ -11,7 +11,10 @@ import AuthContainer from "@components/ui/AuthContainer"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("error"), - () => "" + () => "", + undefined, + undefined, + "/auth/error" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/forgot-password/[id]/page.tsx b/apps/web/app/(use-page-wrapper)/auth/forgot-password/[id]/page.tsx index 253dc85651..ec45f8b853 100644 --- a/apps/web/app/(use-page-wrapper)/auth/forgot-password/[id]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/forgot-password/[id]/page.tsx @@ -10,10 +10,13 @@ import { getServerSideProps } from "@server/lib/auth/forgot-password/[id]/getSer import type { PageProps as ClientPageProps } from "~/auth/forgot-password/[id]/forgot-password-single-view"; import SetNewUserPassword from "~/auth/forgot-password/[id]/forgot-password-single-view"; -export const generateMetadata = async () => { +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => { return await _generateMetadata( (t) => t("reset_password"), - (t) => t("change_your_password") + (t) => t("change_your_password"), + undefined, + undefined, + `/auth/forgot-password/${(await params).id}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/forgot-password/page.tsx b/apps/web/app/(use-page-wrapper)/auth/forgot-password/page.tsx index 11ad68f9ea..b2a7a63689 100644 --- a/apps/web/app/(use-page-wrapper)/auth/forgot-password/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/forgot-password/page.tsx @@ -13,7 +13,10 @@ import ForgotPassword from "~/auth/forgot-password/forgot-password-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("forgot_password"), - (t) => t("request_password_reset") + (t) => t("request_password_reset"), + undefined, + undefined, + "/auth/forgot-password" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/login/page.tsx b/apps/web/app/(use-page-wrapper)/auth/login/page.tsx index 05c83861b4..10d82d1e9f 100644 --- a/apps/web/app/(use-page-wrapper)/auth/login/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/login/page.tsx @@ -13,7 +13,10 @@ import Login from "~/auth/login-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("login"), - (t) => t("login") + (t) => t("login"), + undefined, + undefined, + "/auth/login" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/logout/page.tsx b/apps/web/app/(use-page-wrapper)/auth/logout/page.tsx index f949498dfb..08cc29dc09 100644 --- a/apps/web/app/(use-page-wrapper)/auth/logout/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/logout/page.tsx @@ -9,7 +9,10 @@ import Logout from "~/auth/logout-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("logged_out"), - (t) => t("youve_been_logged_out") + (t) => t("youve_been_logged_out"), + undefined, + undefined, + "/auth/logout" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/oauth2/authorize/page.tsx b/apps/web/app/(use-page-wrapper)/auth/oauth2/authorize/page.tsx index 4dbea4b305..042cbbba06 100644 --- a/apps/web/app/(use-page-wrapper)/auth/oauth2/authorize/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/oauth2/authorize/page.tsx @@ -5,7 +5,10 @@ import Page from "~/auth/oauth2/authorize-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("authorize"), - () => "" + () => "", + undefined, + undefined, + "/auth/oauth2/authorize" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/platform/authorize/page.tsx b/apps/web/app/(use-page-wrapper)/auth/platform/authorize/page.tsx index 4a82dba0d1..695b10f569 100644 --- a/apps/web/app/(use-page-wrapper)/auth/platform/authorize/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/platform/authorize/page.tsx @@ -5,7 +5,10 @@ import Page from "~/auth/platform/authorize-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("authorize"), - () => "" + () => "", + undefined, + undefined, + "/auth/platform/authorize" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/setup/page.tsx b/apps/web/app/(use-page-wrapper)/auth/setup/page.tsx index b7042b6829..b67456a421 100644 --- a/apps/web/app/(use-page-wrapper)/auth/setup/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/setup/page.tsx @@ -13,7 +13,10 @@ import type { PageProps as ClientPageProps } from "~/auth/setup-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("setup"), - (t) => t("setup_description") + (t) => t("setup_description"), + undefined, + undefined, + "/auth/setup" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/verify-email-change/page.tsx b/apps/web/app/(use-page-wrapper)/auth/verify-email-change/page.tsx index 761728d261..5f28667d8c 100644 --- a/apps/web/app/(use-page-wrapper)/auth/verify-email-change/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/verify-email-change/page.tsx @@ -13,7 +13,10 @@ import VerifyEmailChange from "~/auth/verify-email-change-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("verify_email_change"), - () => "" + () => "", + undefined, + undefined, + "/auth/verify-email-change" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/verify-email/page.tsx b/apps/web/app/(use-page-wrapper)/auth/verify-email/page.tsx index adde3f4871..377260a940 100644 --- a/apps/web/app/(use-page-wrapper)/auth/verify-email/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/verify-email/page.tsx @@ -5,7 +5,10 @@ import VerifyEmailPage from "~/auth/verify-email-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("verify_email_button"), - () => "" + () => "", + undefined, + undefined, + "/auth/verify-email" ); }; diff --git a/apps/web/app/(use-page-wrapper)/auth/verify/page.tsx b/apps/web/app/(use-page-wrapper)/auth/verify/page.tsx index 03c788f3ec..4821569416 100644 --- a/apps/web/app/(use-page-wrapper)/auth/verify/page.tsx +++ b/apps/web/app/(use-page-wrapper)/auth/verify/page.tsx @@ -26,7 +26,10 @@ export const generateMetadata = async ({ params, searchParams }: _PageProps) => return await _generateMetadata( () => hasPaymentFailed ? "Your payment failed" : sessionId ? "Payment successful!" : `Verify your email`, - () => "" + () => "", + undefined, + undefined, + "/auth/verify" ); }; diff --git a/apps/web/app/(use-page-wrapper)/availability/[schedule]/page.tsx b/apps/web/app/(use-page-wrapper)/availability/[schedule]/page.tsx index f948002f65..2f833747f3 100644 --- a/apps/web/app/(use-page-wrapper)/availability/[schedule]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/availability/[schedule]/page.tsx @@ -38,7 +38,10 @@ export const generateMetadata = async ({ params }: PageProps) => { return await _generateMetadata( (t) => (schedule.name ? `${schedule.name} | ${t("availability")}` : t("availability")), - () => "" + () => "", + undefined, + undefined, + `/availability/${parsed.data.schedule}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/availability/troubleshoot/page.tsx b/apps/web/app/(use-page-wrapper)/availability/troubleshoot/page.tsx index dc7292bcb5..815e30cb2d 100644 --- a/apps/web/app/(use-page-wrapper)/availability/troubleshoot/page.tsx +++ b/apps/web/app/(use-page-wrapper)/availability/troubleshoot/page.tsx @@ -5,7 +5,10 @@ import Troubleshoot from "~/availability/troubleshoot/troubleshoot-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("troubleshoot"), - (t) => t("troubleshoot_availability") + (t) => t("troubleshoot_availability"), + undefined, + undefined, + "/availability/troubleshoot" ); }; diff --git a/apps/web/app/(use-page-wrapper)/booking/[uid]/page.tsx b/apps/web/app/(use-page-wrapper)/booking/[uid]/page.tsx index af0c90f719..7ba494ac8c 100644 --- a/apps/web/app/(use-page-wrapper)/booking/[uid]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/booking/[uid]/page.tsx @@ -26,7 +26,8 @@ export const generateMetadata = async ({ params, searchParams }: _PageProps) => (t) => t(`booking_${needsConfirmation ? "submitted" : "confirmed"}${recurringBookings ? "_recurring" : ""}`), false, - getOrgFullOrigin(orgSlug) + getOrgFullOrigin(orgSlug), + `/booking/${(await params).uid}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/booking/dry-run-successful/page.tsx b/apps/web/app/(use-page-wrapper)/booking/dry-run-successful/page.tsx index a3196f3b67..d537fd70f1 100644 --- a/apps/web/app/(use-page-wrapper)/booking/dry-run-successful/page.tsx +++ b/apps/web/app/(use-page-wrapper)/booking/dry-run-successful/page.tsx @@ -5,7 +5,10 @@ import BookingDryRunSuccessView from "~/bookings/views/booking-dry-run-success-v export const generateMetadata = async () => { return await _generateMetadata( (t) => t("booking_dry_run_successful"), - (t) => t("booking_dry_run_successful_description") + (t) => t("booking_dry_run_successful_description"), + undefined, + undefined, + "/booking/dry-run-successful" ); }; diff --git a/apps/web/app/(use-page-wrapper)/connect-and-join/page.tsx b/apps/web/app/(use-page-wrapper)/connect-and-join/page.tsx index 1666fa6c1e..61bc9f4502 100644 --- a/apps/web/app/(use-page-wrapper)/connect-and-join/page.tsx +++ b/apps/web/app/(use-page-wrapper)/connect-and-join/page.tsx @@ -7,7 +7,10 @@ import LegacyPage from "~/connect-and-join/connect-and-join-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("connect_and_join"), - () => "" + () => "", + undefined, + undefined, + "/connect-and-join" ); }; diff --git a/apps/web/app/(use-page-wrapper)/d/[link]/[slug]/page.tsx b/apps/web/app/(use-page-wrapper)/d/[link]/[slug]/page.tsx index 93786d48f9..5bc0954d43 100644 --- a/apps/web/app/(use-page-wrapper)/d/[link]/[slug]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/d/[link]/[slug]/page.tsx @@ -10,7 +10,8 @@ import { type PageProps } from "@lib/d/[link]/[slug]/getServerSideProps"; import Type from "~/d/[link]/d-type-view"; export const generateMetadata = async ({ params, searchParams }: _PageProps) => { - const legacyCtx = buildLegacyCtx(await headers(), await cookies(), await params, await searchParams); + const _params = await params; + const legacyCtx = buildLegacyCtx(await headers(), await cookies(), _params, await searchParams); const pageProps = await getData(legacyCtx); const { booking, eventData, isBrandingHidden } = pageProps; @@ -21,7 +22,9 @@ export const generateMetadata = async ({ params, searchParams }: _PageProps) => return await _generateMetadata( (t) => `${rescheduleUid && !!booking ? t("reschedule") : ""} ${title} | ${profileName}`, (t) => `${rescheduleUid ? t("reschedule") : ""} ${title}`, - isBrandingHidden + isBrandingHidden, + undefined, + `/d/${_params.link}/${_params.slug}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/enterprise/page.tsx b/apps/web/app/(use-page-wrapper)/enterprise/page.tsx index e31c40888f..df9f6afb63 100644 --- a/apps/web/app/(use-page-wrapper)/enterprise/page.tsx +++ b/apps/web/app/(use-page-wrapper)/enterprise/page.tsx @@ -5,7 +5,10 @@ import EnterprisePage from "@components/EnterprisePage"; export const generateMetadata = async () => await _generateMetadata( (t) => t("create_your_org"), - (t) => t("create_your_org_description") + (t) => t("create_your_org_description"), + undefined, + undefined, + "/enterprise" ); const ServerPageWrapper = async () => { diff --git a/apps/web/app/(use-page-wrapper)/event-types/[type]/page.tsx b/apps/web/app/(use-page-wrapper)/event-types/[type]/page.tsx index 90ff2c7fd4..06f47635e9 100644 --- a/apps/web/app/(use-page-wrapper)/event-types/[type]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/event-types/[type]/page.tsx @@ -24,7 +24,10 @@ export const generateMetadata = async ({ params }: _PageProps) => { if (!parsed.success) { return await _generateMetadata( (t) => `${t("event_type")}`, - () => "" + () => "", + undefined, + undefined, + "/event-types" ); } @@ -34,7 +37,10 @@ export const generateMetadata = async ({ params }: _PageProps) => { return await _generateMetadata( (t) => (data?.title ? `${data.title} | ${t("event_type")}` : `${t("event_type")}`), - () => "" + () => "", + undefined, + undefined, + `/event-types/${parsed.data.type}` ); }; 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 ba47708cfa..e2c470caa6 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 @@ -11,11 +11,15 @@ import { getServerSideProps } from "@lib/getting-started/[[...step]]/getServerSi import type { PageProps as ClientPageProps } from "~/getting-started/[[...step]]/onboarding-view"; import Page from "~/getting-started/[[...step]]/onboarding-view"; -export const generateMetadata = async () => { +export const generateMetadata = async ({ params }: ServerPageProps) => { + const stepParam = (await params).step; + const step = stepParam && Array.isArray(stepParam) ? stepParam.join("/") : ""; return await _generateMetadata( (t) => `${APP_NAME} - ${t("getting_started")}`, () => "", - true + true, + undefined, + `/getting-started${step ? `/${step}` : ""}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/insights/page.tsx b/apps/web/app/(use-page-wrapper)/insights/page.tsx index ccdaa1b1d5..6d5ccdf6f5 100644 --- a/apps/web/app/(use-page-wrapper)/insights/page.tsx +++ b/apps/web/app/(use-page-wrapper)/insights/page.tsx @@ -8,7 +8,10 @@ import InsightsPage from "~/insights/insights-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("insights"), - (t) => t("insights_subtitle") + (t) => t("insights_subtitle"), + undefined, + undefined, + "/insights" ); export default async function Page() { diff --git a/apps/web/app/(use-page-wrapper)/insights/router-position/page.tsx b/apps/web/app/(use-page-wrapper)/insights/router-position/page.tsx index 81e8fe6d8e..77025dcfc3 100644 --- a/apps/web/app/(use-page-wrapper)/insights/router-position/page.tsx +++ b/apps/web/app/(use-page-wrapper)/insights/router-position/page.tsx @@ -8,7 +8,10 @@ import InsightsVirtualQueuesPage from "~/insights/insights-virtual-queues-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("insights"), - (t) => t("insights_subtitle") + (t) => t("insights_subtitle"), + undefined, + undefined, + "/insights/router-position" ); export default async function Page() { diff --git a/apps/web/app/(use-page-wrapper)/insights/routing/page.tsx b/apps/web/app/(use-page-wrapper)/insights/routing/page.tsx index 39a30efbf3..c94d1d6916 100644 --- a/apps/web/app/(use-page-wrapper)/insights/routing/page.tsx +++ b/apps/web/app/(use-page-wrapper)/insights/routing/page.tsx @@ -8,7 +8,10 @@ import InsightsRoutingPage from "~/insights/insights-routing-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("insights"), - (t) => t("insights_subtitle") + (t) => t("insights_subtitle"), + undefined, + undefined, + "/insights/routing" ); export default async function Page() { diff --git a/apps/web/app/(use-page-wrapper)/maintenance/page.tsx b/apps/web/app/(use-page-wrapper)/maintenance/page.tsx index 804f49b40d..94d1c91afc 100644 --- a/apps/web/app/(use-page-wrapper)/maintenance/page.tsx +++ b/apps/web/app/(use-page-wrapper)/maintenance/page.tsx @@ -7,7 +7,10 @@ import LegacyPage from "~/maintenance/maintenance-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("under_maintenance"), - (t) => t("under_maintenance_description", { appName: APP_NAME }) + (t) => t("under_maintenance_description", { appName: APP_NAME }), + undefined, + undefined, + "/maintenance" ); }; diff --git a/apps/web/app/(use-page-wrapper)/more/page.tsx b/apps/web/app/(use-page-wrapper)/more/page.tsx index 6eb074130f..2b383f5e8b 100644 --- a/apps/web/app/(use-page-wrapper)/more/page.tsx +++ b/apps/web/app/(use-page-wrapper)/more/page.tsx @@ -5,7 +5,10 @@ import Page from "~/more/more-page-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("more"), - () => "" + () => "", + undefined, + undefined, + "/more" ); }; diff --git a/apps/web/app/(use-page-wrapper)/payment/[uid]/page.tsx b/apps/web/app/(use-page-wrapper)/payment/[uid]/page.tsx index 58712013e6..0e318f2bf1 100644 --- a/apps/web/app/(use-page-wrapper)/payment/[uid]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/payment/[uid]/page.tsx @@ -16,7 +16,10 @@ export const generateMetadata = async ({ params, searchParams }: PageProps) => { const eventName = props.booking.title; return await _generateMetadata( (t) => `${t("payment")} | ${eventName} | ${APP_NAME}`, - () => "" + () => "", + undefined, + undefined, + `/payment/${(await params).uid}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/apps/[category]/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/apps/[category]/page.tsx index 751ca57481..1b1bdb814f 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/apps/[category]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/apps/[category]/page.tsx @@ -4,10 +4,13 @@ import { getTranslate } from "app/_utils"; import AdminAppsList from "@calcom/features/apps/AdminAppsList"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ category: string }> }) => await _generateMetadata( (t) => t("apps"), - (t) => t("admin_apps_description") + (t) => t("admin_apps_description"), + undefined, + undefined, + `/settings/admin/apps/${(await params).category}` ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/apps/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/apps/page.tsx index 849fce2889..f0e91e15d6 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/apps/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/apps/page.tsx @@ -4,7 +4,10 @@ import { redirect } from "next/navigation"; export const generateMetadata = async () => await _generateMetadata( (t) => t("apps"), - (t) => t("admin_apps_description") + (t) => t("admin_apps_description"), + undefined, + undefined, + "/settings/admin/apps" ); const Page = () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/flags/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/flags/page.tsx index 618428c462..7317bec27c 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/flags/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/flags/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("feature_flags"), - (t) => t("admin_flags_description") + (t) => t("admin_flags_description"), + undefined, + undefined, + "/settings/admin/flags" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/impersonation/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/impersonation/page.tsx index f166b3520a..afd59374ce 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/impersonation/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/impersonation/page.tsx @@ -8,7 +8,10 @@ import ImpersonationView from "~/settings/admin/impersonation-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("admin"), - (t) => t("impersonation") + (t) => t("impersonation"), + undefined, + undefined, + "/settings/admin/impersonation" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/lockedSMS/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/lockedSMS/page.tsx index 78bcba5b06..516fef902c 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/lockedSMS/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/lockedSMS/page.tsx @@ -7,7 +7,10 @@ import LockedSMSView from "~/settings/admin/locked-sms-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("lockedSMS"), - (t) => t("admin_lockedSMS_description") + (t) => t("admin_lockedSMS_description"), + undefined, + undefined, + "/settings/admin/lockedSMS" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/oAuth/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/oAuth/page.tsx index 6b09a951d6..8be1a81636 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/oAuth/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/oAuth/page.tsx @@ -7,7 +7,10 @@ import LegacyPage from "~/settings/admin/oauth-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("oAuth"), - (t) => t("admin_oAuth_description") + (t) => t("admin_oAuth_description"), + undefined, + undefined, + "/settings/admin/oAuth" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx index 0114306665..acfd6e185e 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/[id]/edit/page.tsx @@ -15,7 +15,10 @@ export const generateMetadata = async ({ params }: { params: Params }) => { if (!input.success) { return await _generateMetadata( (t) => t("editing_org"), - (t) => t("admin_orgs_edit_description") + (t) => t("admin_orgs_edit_description"), + undefined, + undefined, + "/settings/admin/organizations/edit" ); } @@ -23,7 +26,10 @@ export const generateMetadata = async ({ params }: { params: Params }) => { return await _generateMetadata( (t) => `${t("editing_org")}: ${org.name}`, - (t) => t("admin_orgs_edit_description") + (t) => t("admin_orgs_edit_description"), + undefined, + undefined, + `/settings/admin/organizations/${input.data.id}/edit` ); }; diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/page.tsx index ff9405db17..e47c0d6ade 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/organizations/page.tsx @@ -8,7 +8,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("organizations"), - (t) => t("orgs_page_description") + (t) => t("orgs_page_description"), + undefined, + undefined, + "/settings/admin/organizations" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/page.tsx index 4f4fb938ec..b3354ed43b 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/page.tsx @@ -3,7 +3,10 @@ import { _generateMetadata } from "app/_utils"; export const generateMetadata = async () => await _generateMetadata( (t) => t("admin"), - () => "" + () => "", + undefined, + undefined, + "/settings/admin" ); const Page = () =>

Admin index

; diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/[id]/edit/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/[id]/edit/page.tsx index 6be685d31d..017dae6b45 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/[id]/edit/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/[id]/edit/page.tsx @@ -15,7 +15,10 @@ export const generateMetadata = async ({ params }: { params: Params }) => { if (!input.success) { return await _generateMetadata( (t) => t("editing_user"), - (t) => t("admin_users_edit_description") + (t) => t("admin_users_edit_description"), + undefined, + undefined, + "/settings/admin/users/edit" ); } @@ -23,7 +26,10 @@ export const generateMetadata = async ({ params }: { params: Params }) => { return await _generateMetadata( (t) => `${t("editing_user")}: ${user.username}`, - (t) => t("admin_users_edit_description") + (t) => t("admin_users_edit_description"), + undefined, + undefined, + `/settings/admin/users/${input.data.id}/edit` ); }; diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/add/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/add/page.tsx index a136a9758b..f3ba259e19 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/add/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/add/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("add_new_user"), - (t) => t("admin_users_add_description") + (t) => t("admin_users_add_description"), + undefined, + undefined, + "/settings/admin/users/add" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/page.tsx index 229e88d712..951efb9ded 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/users/page.tsx @@ -7,7 +7,10 @@ import { Button } from "@calcom/ui/components/button"; export const generateMetadata = async () => await _generateMetadata( (t) => t("users"), - (t) => t("admin_users_description") + (t) => t("admin_users_description"), + undefined, + undefined, + "/settings/admin/users" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/workspace-platforms/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/workspace-platforms/page.tsx index a304d24f2b..9f313ca07a 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/workspace-platforms/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/workspace-platforms/page.tsx @@ -7,7 +7,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("workspace_platforms"), - (t) => t("workspace_platforms_description") + (t) => t("workspace_platforms_description"), + undefined, + undefined, + "/settings/admin/workspace-platforms" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/billing/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/billing/page.tsx index e3d3db0896..0f4c0ef541 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/billing/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/billing/page.tsx @@ -8,7 +8,10 @@ import BillingView from "~/settings/billing/billing-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("billing"), - (t) => t("manage_billing_description") + (t) => t("manage_billing_description"), + undefined, + undefined, + "/settings/billing" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/api-keys/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/api-keys/page.tsx index df76d65886..7d3e7ae798 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/api-keys/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/api-keys/page.tsx @@ -8,7 +8,10 @@ import ApiKeysView, { NewApiKeyButton } from "~/settings/developer/api-keys-view export const generateMetadata = async () => await _generateMetadata( (t) => t("api_keys"), - (t) => t("create_first_api_key_description", { appName: APP_NAME }) + (t) => t("create_first_api_key_description", { appName: APP_NAME }), + undefined, + undefined, + "/settings/developer/api-keys" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/(with-loader)/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/(with-loader)/page.tsx index f22437b86a..93174bcd5f 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/(with-loader)/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/(with-loader)/page.tsx @@ -14,7 +14,10 @@ import { buildLegacyRequest } from "@lib/buildLegacyCtx"; export const generateMetadata = async () => await _generateMetadata( (t) => t("webhooks"), - (t) => t("add_webhook_description", { appName: APP_NAME }) + (t) => t("add_webhook_description", { appName: APP_NAME }), + undefined, + undefined, + "/settings/developer/webhooks" ); const WebhooksViewServerWrapper = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx index 6a8be3de09..173de93ab2 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx @@ -6,10 +6,13 @@ import { EditWebhookView } from "@calcom/features/webhooks/pages/webhook-edit-vi import { APP_NAME } from "@calcom/lib/constants"; import { WebhookRepository } from "@calcom/lib/server/repository/webhook"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("webhooks"), - (t) => t("add_webhook_description", { appName: APP_NAME }) + (t) => t("add_webhook_description", { appName: APP_NAME }), + undefined, + undefined, + `/settings/developer/webhooks/${(await params).id}` ); const Page = async ({ params: _params }: PageProps) => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/new/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/new/page.tsx index 3688adefc5..5376fccfc3 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/new/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/new/page.tsx @@ -9,7 +9,10 @@ import { webhookRouter } from "@calcom/trpc/server/routers/viewer/webhook/_route export const generateMetadata = async () => await _generateMetadata( (t) => t("webhooks"), - (t) => t("add_webhook_description", { appName: APP_NAME }) + (t) => t("add_webhook_description", { appName: APP_NAME }), + undefined, + undefined, + "/settings/developer/webhooks/new" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/appearance/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/appearance/page.tsx index 1388b63cec..dbaf07c7c8 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/appearance/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/appearance/page.tsx @@ -8,7 +8,10 @@ import AppearancePage from "~/settings/my-account/appearance-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("appearance"), - (t) => t("appearance_description") + (t) => t("appearance_description"), + undefined, + undefined, + "/settings/my-account/appearance" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/calendars/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/calendars/page.tsx index c50c77a43a..1cc3aa315d 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/calendars/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/calendars/page.tsx @@ -9,7 +9,10 @@ import { CalendarListContainer } from "@components/apps/CalendarListContainer"; export const generateMetadata = async () => await _generateMetadata( (t) => t("calendars"), - (t) => t("calendars_description") + (t) => t("calendars_description"), + undefined, + undefined, + "/settings/my-account/calendars" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/page.tsx index 5d6a0451af..1c12ced9ec 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/conferencing/page.tsx @@ -6,7 +6,10 @@ import { ConferencingAppsViewWebWrapper } from "@calcom/atoms/connect/conferenci export const generateMetadata = async () => await _generateMetadata( (t) => t("conferencing"), - (t) => t("conferencing_description") + (t) => t("conferencing_description"), + undefined, + undefined, + "/settings/my-account/conferencing" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/general/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/general/page.tsx index 189b23194c..03cbc8ecb6 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/general/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/general/page.tsx @@ -9,7 +9,10 @@ import GeneralQueryView from "~/settings/my-account/general-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("general"), - (t) => t("general_description") + (t) => t("general_description"), + undefined, + undefined, + "/settings/my-account/general" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/out-of-office/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/out-of-office/page.tsx index 78f9c1fd27..95d428038e 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/out-of-office/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/out-of-office/page.tsx @@ -9,7 +9,10 @@ import { OutOfOfficeToggleGroup } from "@calcom/features/settings/outOfOffice/Ou export const generateMetadata = async () => await _generateMetadata( (t) => t("out_of_office"), - (t) => t("out_of_office_description") + (t) => t("out_of_office_description"), + undefined, + undefined, + "/settings/my-account/out-of-office" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/profile/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/profile/page.tsx index a1b2364145..5f4870f203 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/profile/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/profile/page.tsx @@ -9,7 +9,10 @@ import ProfileView from "~/settings/my-account/profile-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("profile"), - (t) => t("profile_description") + (t) => t("profile_description"), + undefined, + undefined, + "/settings/my-account/profile" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/push-notifications/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/push-notifications/page.tsx index 7242bd83e3..4a84df38cb 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/push-notifications/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/my-account/push-notifications/page.tsx @@ -8,7 +8,10 @@ import PushNotificationsView from "~/settings/my-account/push-notifications-view export const generateMetadata = async () => await _generateMetadata( (t) => t("push_notifications"), - (t) => t("push_notifications_description") + (t) => t("push_notifications_description"), + undefined, + undefined, + "/settings/my-account/push-notifications" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/admin-api/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/admin-api/page.tsx index 2edf360cd7..4847949e49 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/admin-api/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/admin-api/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => `${t("admin")} ${t("api_reference")}`, - (t) => t("leverage_our_api") + (t) => t("leverage_our_api"), + undefined, + undefined, + "/settings/organizations/admin-api" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/[id]/edit/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/[id]/edit/page.tsx index 09c000f874..b4562aebe0 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/[id]/edit/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/[id]/edit/page.tsx @@ -2,10 +2,13 @@ import { _generateMetadata } from "app/_utils"; import OrgAttributesEditPage from "@calcom/ee/organizations/pages/settings/attributes/attributes-edit-view"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("attribute"), - (t) => t("edit_attribute_description") + (t) => t("edit_attribute_description"), + undefined, + undefined, + `/settings/organizations/attributes/${(await params).id}/edit` ); const OrgAttributesEditPageWrapper = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/create/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/create/page.tsx index cb1a29db10..4040958f0d 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/create/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/create/page.tsx @@ -5,7 +5,10 @@ import OrgAttributesCreatePage from "@calcom/ee/organizations/pages/settings/att export const generateMetadata = async () => await _generateMetadata( (t) => t("attribute"), - (t) => t("create_attribute_description") + (t) => t("create_attribute_description"), + undefined, + undefined, + "/settings/organizations/attributes/create" ); const OrgAttributesCreatePageWrapper = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/page.tsx index 90592bd9d2..55cbeac844 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/attributes/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("attributes"), - (t) => t("attribute_meta_description") + (t) => t("attribute_meta_description"), + undefined, + undefined, + "/settings/organizations/attributes" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/delegation-credential/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/delegation-credential/page.tsx index f76f791580..3faca06291 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/delegation-credential/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/delegation-credential/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("delegation_credential"), - (t) => t("delegation_credential_description") + (t) => t("delegation_credential_description"), + undefined, + undefined, + "/settings/organizations/delegation-credential" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/dsync/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/dsync/page.tsx index f9b24889f2..a53e48fd1e 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/dsync/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/dsync/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("directory_sync"), - (t) => t("directory_sync_description") + (t) => t("directory_sync_description"), + undefined, + undefined, + "/settings/organizations/dsync" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/general/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/general/page.tsx index b9aef0c525..75aeaf2f6e 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/general/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/general/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("general"), - (t) => t("general_description") + (t) => t("general_description"), + undefined, + undefined, + "/settings/organizations/general" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/privacy/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/privacy/page.tsx index 0aaea7ad85..8900c77c70 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/privacy/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/privacy/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("privacy"), - (t) => t("privacy_organization_description") + (t) => t("privacy_organization_description"), + undefined, + undefined, + "/settings/organizations/privacy" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/profile/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/profile/page.tsx index dbde8f0916..3849a83305 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/profile/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/profile/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("profile"), - (t) => t("profile_org_description") + (t) => t("profile_org_description"), + undefined, + undefined, + "/settings/organizations/profile" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/sso/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/sso/page.tsx index 1f552811bf..93750ac2fd 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/sso/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/sso/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("sso_configuration"), - (t) => t("sso_configuration_description_orgs") + (t) => t("sso_configuration_description_orgs"), + undefined, + undefined, + "/settings/organizations/sso" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/appearance/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/appearance/page.tsx index d67f6b7f7c..f89432f785 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/appearance/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/appearance/page.tsx @@ -3,10 +3,13 @@ import { _generateMetadata, getTranslate } from "app/_utils"; import LegacyPage from "@calcom/features/ee/teams/pages/team-appearance-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("booking_appearance"), - (t) => t("appearance_team_description") + (t) => t("appearance_team_description"), + undefined, + undefined, + `/settings/organizations/teams/other/${(await params).id}/appearance` ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/members/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/members/page.tsx index 87959a9f46..13b423313f 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/members/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/members/page.tsx @@ -5,10 +5,13 @@ import LegacyPage, { } from "@calcom/features/ee/organizations/pages/settings/other-team-members-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("team_members"), - (t) => t("members_team_description") + (t) => t("members_team_description"), + undefined, + undefined, + `/settings/organizations/teams/other/${(await params).id}/members` ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/profile/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/profile/page.tsx index 6b205a731e..7b8ec23930 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/profile/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/[id]/profile/page.tsx @@ -3,10 +3,13 @@ import { _generateMetadata, getTranslate } from "app/_utils"; import LegacyPage from "@calcom/features/ee/organizations/pages/settings/other-team-profile-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("profile"), - (t) => t("profile_team_description") + (t) => t("profile_team_description"), + undefined, + undefined, + `/settings/organizations/teams/other/${(await params).id}/profile` ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/page.tsx index 464bee8c9c..e8f6f094c6 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/organizations/teams/other/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("org_admin_other_teams"), - (t) => t("org_admin_other_teams_description") + (t) => t("org_admin_other_teams_description"), + undefined, + undefined, + "/settings/organizations/teams/other" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/impersonation/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/impersonation/page.tsx index fb205b9e30..a67d9f2842 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/impersonation/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/impersonation/page.tsx @@ -8,7 +8,10 @@ import ProfileImpersonationViewWrapper from "~/settings/security/impersonation-v export const generateMetadata = async () => await _generateMetadata( (t) => t("impersonation"), - (t) => t("impersonation_description") + (t) => t("impersonation_description"), + undefined, + undefined, + "/settings/security/impersonation" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/password/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/password/page.tsx index 1c6a7e49ef..9017cf8f93 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/password/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/password/page.tsx @@ -8,7 +8,10 @@ import PasswordViewWrapper from "~/settings/security/password-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("password"), - (t) => t("password_description") + (t) => t("password_description"), + undefined, + undefined, + "/settings/security/password" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/sso/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/sso/page.tsx index c36d344cbf..c9c264b47b 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/sso/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/sso/page.tsx @@ -7,7 +7,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("sso_configuration"), - (t) => t("sso_configuration_description") + (t) => t("sso_configuration_description"), + undefined, + undefined, + "/settings/security/sso" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/two-factor-auth/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/two-factor-auth/page.tsx index e77f847d9d..ad238ee540 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/two-factor-auth/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/security/two-factor-auth/page.tsx @@ -8,7 +8,10 @@ import TwoFactorAuthView from "~/settings/security/two-factor-auth-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("two_factor_auth"), - (t) => t("add_an_extra_layer_of_security") + (t) => t("add_an_extra_layer_of_security"), + undefined, + undefined, + "/settings/security/two-factor-auth" ); const Page = async () => { const t = await getTranslate(); diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/appearance/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/appearance/page.tsx index d67f6b7f7c..7e341c954f 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/appearance/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/appearance/page.tsx @@ -3,10 +3,13 @@ import { _generateMetadata, getTranslate } from "app/_utils"; import LegacyPage from "@calcom/features/ee/teams/pages/team-appearance-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("booking_appearance"), - (t) => t("appearance_team_description") + (t) => t("appearance_team_description"), + undefined, + undefined, + `/settings/teams/${(await params).id}/appearance` ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/members/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/members/page.tsx index bb4dd86d15..e5672b4be2 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/members/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/members/page.tsx @@ -3,10 +3,13 @@ import { _generateMetadata, getTranslate } from "app/_utils"; import LegacyPage from "@calcom/features/ee/teams/pages/team-members-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("team_members"), - (t) => t("members_team_description") + (t) => t("members_team_description"), + undefined, + undefined, + `/settings/teams/${(await params).id}/members` ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/profile/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/profile/page.tsx index d220dff371..5f375e33e9 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/profile/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/profile/page.tsx @@ -3,10 +3,13 @@ import { _generateMetadata, getTranslate } from "app/_utils"; import LegacyPage from "@calcom/features/ee/teams/pages/team-profile-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("profile"), - (t) => t("profile_team_description") + (t) => t("profile_team_description"), + undefined, + undefined, + `/settings/teams/${(await params).id}/profile` ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/settings/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/settings/page.tsx index 1582b116b7..4248d74740 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/settings/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/[id]/settings/page.tsx @@ -3,10 +3,13 @@ import { _generateMetadata, getTranslate } from "app/_utils"; import TeamSettingsView from "@calcom/features/ee/teams/pages/team-settings-view"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("settings"), - (t) => t("team_settings_description") + (t) => t("team_settings_description"), + undefined, + undefined, + `/settings/teams/${(await params).id}/settings` ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/page.tsx index aca38b534b..bad98a7304 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/teams/page.tsx @@ -6,7 +6,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("teams"), - (t) => t("create_manage_teams_collaborative") + (t) => t("create_manage_teams_collaborative"), + undefined, + undefined, + "/settings/teams" ); const Page = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/license-key/new/page.tsx b/apps/web/app/(use-page-wrapper)/settings/license-key/new/page.tsx index 5a385244c6..eb97de9544 100644 --- a/apps/web/app/(use-page-wrapper)/settings/license-key/new/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/license-key/new/page.tsx @@ -13,7 +13,10 @@ import CreateANewLicenseKeyForm, { LayoutWrapper } from "~/settings/license-key/ export const generateMetadata = async () => await _generateMetadata( (t) => t("set_up_your_organization"), - (t) => t("organizations_description") + (t) => t("organizations_description"), + undefined, + undefined, + "/settings/license-key/new" ); const getData = withAppDirSsr>(getServerSideProps); diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/[id]/members/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/[id]/members/page.tsx index 2ab52fffac..e22b5193d5 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/[id]/members/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/[id]/members/page.tsx @@ -2,10 +2,13 @@ import { _generateMetadata } from "app/_utils"; import MembersPage from "~/members/members-view"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("organization_members"), - (t) => t("organization_description") + (t) => t("organization_description"), + undefined, + undefined, + `/settings/organizations/${(await params).id}/members` ); const ServerPageWrapper = () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/appearance/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/appearance/page.tsx index 4729f92be8..25872bcae6 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/appearance/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/appearance/page.tsx @@ -5,7 +5,10 @@ import Page from "@calcom/features/ee/organizations/pages/settings/appearance"; export const generateMetadata = async () => await _generateMetadata( (t) => t("appearance"), - (t) => t("appearance_org_description") + (t) => t("appearance_org_description"), + undefined, + undefined, + "/settings/organizations/appearance" ); const ServerPageWrapper = () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/members/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/members/page.tsx index deefd91177..e097bc493a 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/members/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/members/page.tsx @@ -8,7 +8,10 @@ import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; export const generateMetadata = async () => await _generateMetadata( (t) => t("organization_members"), - (t) => t("organization_description") + (t) => t("organization_description"), + undefined, + undefined, + "/settings/organizations/members" ); const Page = async () => { 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 d7f855f431..bea77ca857 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 @@ -11,7 +11,10 @@ import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/about-vi export const generateMetadata = async () => await _generateMetadata( (t) => t("about_your_organization"), - (t) => t("about_your_organization_description") + (t) => t("about_your_organization_description"), + undefined, + undefined, + "/settings/organizations/new/about" ); const getData = withAppDirSsr(getServerSideProps); 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 b581f9864a..2f7cfc6bc5 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 @@ -11,7 +11,10 @@ import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/add-team export const generateMetadata = async () => await _generateMetadata( (t) => t("create_your_teams"), - (t) => t("create_your_teams_description") + (t) => t("create_your_teams_description"), + undefined, + undefined, + "/settings/organizations/new/add-teams" ); const getData = withAppDirSsr(getServerSideProps); 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 eee663e5e7..c12f68be97 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 @@ -12,7 +12,10 @@ import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/onboardi export const generateMetadata = async () => await _generateMetadata( (t) => t("handover_onboarding_page_title"), - (t) => t("handover_onboarding_page_description") + (t) => t("handover_onboarding_page_description"), + undefined, + undefined, + "/settings/organizations/new/handover" ); const getData = withAppDirSsr(getServerSideProps); 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 c99c48c497..260edd2a5d 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 @@ -11,7 +11,10 @@ import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/onboard- export const generateMetadata = async () => await _generateMetadata( (t) => t("invite_organization_admins"), - (t) => t("invite_organization_admins_description") + (t) => t("invite_organization_admins_description"), + undefined, + undefined, + "/settings/organizations/new/onboard-members" ); const getData = withAppDirSsr(getServerSideProps); 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 d5b7ffd45f..5e355effd2 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 @@ -13,7 +13,10 @@ import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/create-n export const generateMetadata = async () => await _generateMetadata( (t) => t("set_up_your_organization"), - (t) => t("organizations_description") + (t) => t("organizations_description"), + undefined, + undefined, + "/settings/organizations/new" ); type Props = { 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 07879c2e39..35b2f4af12 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 @@ -11,7 +11,10 @@ import LegacyPage, { LayoutWrapper } from "~/settings/organizations/new/payment- export const generateMetadata = async () => await _generateMetadata( (t) => t("organization_onboarding_status"), - (t) => t("organization_onboarding_status_description") + (t) => t("organization_onboarding_status_description"), + undefined, + undefined, + "/settings/organizations/new/status" ); const getData = withAppDirSsr(getServerSideProps); diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/billing/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/billing/page.tsx index 5a4e7fca09..a123acf643 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/billing/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/billing/page.tsx @@ -5,7 +5,10 @@ import PlatformBillingUpgrade from "~/settings/platform/billing/billing-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("platform_billing"), - (t) => t("manage_billing_description") + (t) => t("manage_billing_description"), + undefined, + undefined, + "/settings/platform/billing" ); }; diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/managed-users/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/managed-users/page.tsx index adbf3015fc..0ecd2b45a4 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/managed-users/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/managed-users/page.tsx @@ -5,7 +5,10 @@ import ManagedUsersView from "~/settings/platform/managed-users/managed-users-vi export const generateMetadata = async () => await _generateMetadata( (t) => t("platform_members"), - (t) => t("platform_members_description") + (t) => t("platform_members_description"), + undefined, + undefined, + "/settings/platform/managed-users" ); const ServerPageWrapper = () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/members/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/members/page.tsx index c024e5f5f2..7f59327f20 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/members/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/members/page.tsx @@ -5,7 +5,10 @@ import PlatformMembersView from "@calcom/features/ee/platform/pages/settings/mem export const generateMetadata = async () => await _generateMetadata( (t) => t("platform_members"), - (t) => t("platform_members_description") + (t) => t("platform_members_description"), + undefined, + undefined, + "/settings/platform/members" ); const ServerPageWrapper = () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/new/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/new/page.tsx index c1086eab92..9cb10150d9 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/new/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/new/page.tsx @@ -17,7 +17,10 @@ type Props = { export const generateMetadata = async () => await _generateMetadata( (t) => t("set_up_your_platform_organization"), - (t) => t("platform_organization_description") + (t) => t("platform_organization_description"), + undefined, + undefined, + "/settings/platform/new" ); const getData = withAppDirSsr(getServerSideProps); diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/page.tsx index f57307691b..1d6061c4be 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/page.tsx @@ -2,10 +2,13 @@ import { _generateMetadata } from "app/_utils"; import EditView from "~/settings/platform/oauth-clients/[clientId]/edit/edit-view"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ clientId: string }> }) => await _generateMetadata( (t) => t("oAuth_client_updation_form"), - () => "" + () => "", + undefined, + undefined, + `/settings/platform/oauth-clients/${(await params).clientId}/edit` ); const ServerPageWrapper = () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/webhooks/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/webhooks/page.tsx index 571936e18c..82b1e7765b 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/webhooks/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/[clientId]/edit/webhooks/page.tsx @@ -2,10 +2,13 @@ import { _generateMetadata } from "app/_utils"; import EditWebhooksView from "~/settings/platform/oauth-clients/[clientId]/edit/edit-webhooks-view"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ clientId: string }> }) => await _generateMetadata( (t) => t("webhook_update_form"), - () => "" + () => "", + undefined, + undefined, + `/settings/platform/oauth-clients/${(await params).clientId}/edit/webhooks` ); const ServerPageWrapper = () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/create/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/create/page.tsx index 731c9ed045..294e2cbd89 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/create/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/oauth-clients/create/page.tsx @@ -5,7 +5,10 @@ import CreateNewView from "~/settings/platform/oauth-clients/create-new-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("oAuth_client_creation_form"), - () => "" + () => "", + undefined, + undefined, + "/settings/platform/oauth-clients/create" ); }; diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/page.tsx index 273067e785..0ffeb486e7 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/page.tsx @@ -5,7 +5,10 @@ import PlatformView from "~/settings/platform/platform-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => t("platform"), - (t) => t("platform_description") + (t) => t("platform_description"), + undefined, + undefined, + "/settings/platform" ); }; diff --git a/apps/web/app/(use-page-wrapper)/settings/platform/plans/page.tsx b/apps/web/app/(use-page-wrapper)/settings/platform/plans/page.tsx index 70e361a349..e37fa6d473 100644 --- a/apps/web/app/(use-page-wrapper)/settings/platform/plans/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/platform/plans/page.tsx @@ -5,7 +5,10 @@ import PlatformPlansView from "~/settings/platform/plans/platform-plans-view"; export const generateMetadata = async () => { return await _generateMetadata( (t) => `${t("platform")} ${t("plans")}`, - () => "" + () => "", + undefined, + undefined, + "/settings/platform/plans" ); }; diff --git a/apps/web/app/(use-page-wrapper)/settings/teams/[id]/event-type/page.tsx b/apps/web/app/(use-page-wrapper)/settings/teams/[id]/event-type/page.tsx index 02b273700f..7b40bcc0e3 100644 --- a/apps/web/app/(use-page-wrapper)/settings/teams/[id]/event-type/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/teams/[id]/event-type/page.tsx @@ -2,10 +2,13 @@ import { _generateMetadata } from "app/_utils"; import CreateTeamEventType, { LayoutWrapper } from "~/settings/teams/[id]/event-types-view"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("add_new_team_event_type"), - (t) => t("new_event_type_to_book_description") + (t) => t("new_event_type_to_book_description"), + undefined, + undefined, + `/settings/teams/${(await params).id}/event-type` ); const ServerPage = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/teams/[id]/onboard-members/page.tsx b/apps/web/app/(use-page-wrapper)/settings/teams/[id]/onboard-members/page.tsx index c79a216ef8..2fee44e4c9 100644 --- a/apps/web/app/(use-page-wrapper)/settings/teams/[id]/onboard-members/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/teams/[id]/onboard-members/page.tsx @@ -2,10 +2,13 @@ import { _generateMetadata } from "app/_utils"; import AddNewTeamMembers, { LayoutWrapper } from "~/settings/teams/[id]/onboard-members-view"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: { params: Promise<{ id: string }> }) => await _generateMetadata( (t) => t("add_team_members"), - (t) => t("add_team_members_description") + (t) => t("add_team_members_description"), + undefined, + undefined, + `/settings/teams/${(await params).id}/onboard-members` ); const ServerPage = async () => { diff --git a/apps/web/app/(use-page-wrapper)/settings/teams/new/page.tsx b/apps/web/app/(use-page-wrapper)/settings/teams/new/page.tsx index 388c30fd48..a37b72d979 100644 --- a/apps/web/app/(use-page-wrapper)/settings/teams/new/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/teams/new/page.tsx @@ -5,7 +5,10 @@ import CreateNewTeamView, { LayoutWrapper } from "~/settings/teams/new/create-ne export const generateMetadata = async () => await _generateMetadata( (t) => t("create_new_team"), - (t) => t("create_new_team_description") + (t) => t("create_new_team_description"), + undefined, + undefined, + "/settings/teams/new" ); const ServerPage = async () => { diff --git a/apps/web/app/(use-page-wrapper)/signup/page.tsx b/apps/web/app/(use-page-wrapper)/signup/page.tsx index 284f821bc6..96f74d5e0c 100644 --- a/apps/web/app/(use-page-wrapper)/signup/page.tsx +++ b/apps/web/app/(use-page-wrapper)/signup/page.tsx @@ -12,7 +12,10 @@ import Signup from "~/signup-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("sign_up"), - (t) => t("sign_up") + (t) => t("sign_up"), + undefined, + undefined, + "/signup" ); const getData = withAppDirSsr(getServerSideProps); diff --git a/apps/web/app/(use-page-wrapper)/upgrade/page.tsx b/apps/web/app/(use-page-wrapper)/upgrade/page.tsx index 7dc9720e8b..8753f088f9 100644 --- a/apps/web/app/(use-page-wrapper)/upgrade/page.tsx +++ b/apps/web/app/(use-page-wrapper)/upgrade/page.tsx @@ -5,7 +5,10 @@ import LegacyPage from "~/upgrade/upgrade-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("upgrade"), - () => "" + () => "", + undefined, + undefined, + "/upgrade" ); const ServerPage = async () => { diff --git a/apps/web/app/(use-page-wrapper)/video/meeting-ended/[uid]/page.tsx b/apps/web/app/(use-page-wrapper)/video/meeting-ended/[uid]/page.tsx index ec528848d3..fc9353a053 100644 --- a/apps/web/app/(use-page-wrapper)/video/meeting-ended/[uid]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/video/meeting-ended/[uid]/page.tsx @@ -9,10 +9,13 @@ import { getServerSideProps } from "@lib/video/meeting-ended/[uid]/getServerSide import type { PageProps as ClientPageProps } from "~/videos/views/videos-meeting-ended-single-view"; import MeetingEnded from "~/videos/views/videos-meeting-ended-single-view"; -export const generateMetadata = async () => +export const generateMetadata = async ({ params }: ServerPageProps) => await _generateMetadata( (t) => t("meeting_unavailable"), - (t) => t("meeting_unavailable") + (t) => t("meeting_unavailable"), + undefined, + undefined, + `/video/meeting-ended/${(await params).uid}` ); const getData = withAppDirSsr(getServerSideProps); diff --git a/apps/web/app/(use-page-wrapper)/video/meeting-not-started/[uid]/page.tsx b/apps/web/app/(use-page-wrapper)/video/meeting-not-started/[uid]/page.tsx index a2464ca46e..d938a1fb4c 100644 --- a/apps/web/app/(use-page-wrapper)/video/meeting-not-started/[uid]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/video/meeting-not-started/[uid]/page.tsx @@ -28,7 +28,10 @@ export const generateMetadata = async ({ params }: ServerPageProps) => { return await _generateMetadata( (t) => t("this_meeting_has_not_started_yet"), - () => booking?.title ?? "" + () => booking?.title ?? "", + undefined, + undefined, + `/video/meeting-not-started/${parsed.data.uid}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/video/no-meeting-found/page.tsx b/apps/web/app/(use-page-wrapper)/video/no-meeting-found/page.tsx index a0cca5d6ba..8512d1bff1 100644 --- a/apps/web/app/(use-page-wrapper)/video/no-meeting-found/page.tsx +++ b/apps/web/app/(use-page-wrapper)/video/no-meeting-found/page.tsx @@ -5,7 +5,10 @@ import NoMeetingFound from "~/videos/views/videos-no-meeting-found-single-view"; export const generateMetadata = async () => await _generateMetadata( (t) => t("no_meeting_found"), - (t) => t("no_meeting_found") + (t) => t("no_meeting_found"), + undefined, + undefined, + "/video/no-meeting-found" ); const ServerPage = async () => { diff --git a/apps/web/app/(use-page-wrapper)/workflows/[workflow]/page.tsx b/apps/web/app/(use-page-wrapper)/workflows/[workflow]/page.tsx index 5d1dcda480..cca7232a21 100644 --- a/apps/web/app/(use-page-wrapper)/workflows/[workflow]/page.tsx +++ b/apps/web/app/(use-page-wrapper)/workflows/[workflow]/page.tsx @@ -33,7 +33,10 @@ export const generateMetadata = async ({ params }: PageProps): Promise (workflow && workflow.name ? workflow.name : t("untitled")), - () => "" + () => "", + undefined, + undefined, + `/workflows/${parsed.data.workflow}` ); }; diff --git a/apps/web/app/(use-page-wrapper)/workflows/page.tsx b/apps/web/app/(use-page-wrapper)/workflows/page.tsx index cf89ad25b2..2361a0235b 100644 --- a/apps/web/app/(use-page-wrapper)/workflows/page.tsx +++ b/apps/web/app/(use-page-wrapper)/workflows/page.tsx @@ -11,7 +11,10 @@ import LegacyPage from "@calcom/features/ee/workflows/pages/index"; export const generateMetadata = async () => await _generateMetadata( (t) => t("workflows"), - (t) => t("workflows_to_automate_notifications") + (t) => t("workflows_to_automate_notifications"), + undefined, + undefined, + "/workflows" ); const Page = async ({ params, searchParams }: PageProps) => { diff --git a/apps/web/app/_utils.tsx b/apps/web/app/_utils.tsx index 1884e95010..49cbee6463 100644 --- a/apps/web/app/_utils.tsx +++ b/apps/web/app/_utils.tsx @@ -12,11 +12,7 @@ import { truncateOnWord } from "@calcom/lib/text"; import { buildLegacyRequest } from "@lib/buildLegacyCtx"; export const getTranslate = async () => { - const headersList = await headers(); - // If "x-locale" does not exist in header, - // ensure that config.matcher in middleware includes the page you are testing - const locale = - headersList.get("x-locale") ?? (await getLocale(buildLegacyRequest(headersList, await cookies()))); + const locale = await getLocale(buildLegacyRequest(await headers(), await cookies())); return await getTranslation(locale ?? "en", "common"); }; @@ -28,8 +24,7 @@ const _generateMetadataWithoutImage = async ( origin?: string, pathname?: string ) => { - const h = await headers(); - const _pathname = h.get("x-pathname") ?? pathname ?? ""; + const _pathname = pathname ?? ""; const canonical = buildCanonical({ path: _pathname, origin: origin ?? CAL_URL }); const t = await getTranslate(); @@ -58,9 +53,16 @@ export const _generateMetadata = async ( getTitle: (t: TFunction) => string, getDescription: (t: TFunction) => string, hideBranding?: boolean, - origin?: string + origin?: string, + pathname?: string ) => { - const metadata = await _generateMetadataWithoutImage(getTitle, getDescription, hideBranding, origin); + const metadata = await _generateMetadataWithoutImage( + getTitle, + getDescription, + hideBranding, + origin, + pathname + ); const image = SEO_IMG_OGIMG + constructGenericImage({ @@ -108,9 +110,16 @@ export const generateAppMetadata = async ( getTitle: (t: TFunction) => string, getDescription: (t: TFunction) => string, hideBranding?: boolean, - origin?: string + origin?: string, + pathname?: string ) => { - const metadata = await _generateMetadataWithoutImage(getTitle, getDescription, hideBranding, origin); + const metadata = await _generateMetadataWithoutImage( + getTitle, + getDescription, + hideBranding, + origin, + pathname + ); const image = SEO_IMG_OGIMG + constructAppImage({ ...app, description: metadata.description }); diff --git a/apps/web/app/icons/page.tsx b/apps/web/app/icons/page.tsx index e23250edc1..8a49fd47b4 100644 --- a/apps/web/app/icons/page.tsx +++ b/apps/web/app/icons/page.tsx @@ -19,7 +19,10 @@ const calFont = localFont({ export const generateMetadata = async () => { return await _generateMetadata( (t) => t("icon_showcase"), - () => "" + () => "", + undefined, + undefined, + "/icons" ); }; export default async function IconsPage() { diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx index 8cb98d2c5f..bba2e1bade 100644 --- a/apps/web/app/layout.tsx +++ b/apps/web/app/layout.tsx @@ -9,6 +9,8 @@ import { loadTranslations } from "@calcom/lib/server/i18n"; import { IconSprites } from "@calcom/ui/components/icon"; import { NotificationSoundHandler } from "@calcom/web/components/notification-sound-handler"; +import { buildLegacyRequest } from "@lib/buildLegacyCtx"; + import "../styles/globals.css"; import { AppRouterI18nProvider } from "./AppRouterI18nProvider"; import { SpeculationRules } from "./SpeculationRules"; @@ -78,15 +80,12 @@ export const metadata = { }, }; -const getInitialProps = async (url: string) => { - const { pathname, searchParams } = new URL(url); - - const isEmbed = pathname.endsWith("/embed") || (searchParams?.get("embedType") ?? null) !== null; - const embedColorScheme = searchParams?.get("ui.color-scheme"); - - const req = { headers: await headers(), cookies: await cookies() }; - const newLocale = (await getLocale(req)) ?? "en"; - const direction = dir(newLocale); +const getInitialProps = async () => { + const h = await headers(); + const isEmbed = h.get("x-isEmbed") === "true"; + const embedColorScheme = h.get("x-embedColorScheme"); + const newLocale = (await getLocale(buildLegacyRequest(await headers(), await cookies()))) ?? "en"; + const direction = dir(newLocale) ?? "ltr"; return { isEmbed, @@ -96,24 +95,12 @@ const getInitialProps = async (url: string) => { }; }; -const getFallbackProps = () => ({ - locale: "en", - direction: "ltr", - isEmbed: false, - embedColorScheme: false, -}); - export default async function RootLayout({ children }: { children: React.ReactNode }) { const h = await headers(); - - const fullUrl = h.get("x-url") ?? ""; const nonce = h.get("x-csp") ?? ""; - const isSSG = !fullUrl; + const { locale, direction, isEmbed, embedColorScheme } = await getInitialProps(); - const { locale, direction, isEmbed, embedColorScheme } = isSSG - ? getFallbackProps() - : await getInitialProps(fullUrl); const ns = "common"; const translations = await loadTranslations(locale, ns); diff --git a/apps/web/app/not-found.tsx b/apps/web/app/not-found.tsx index 02afcd9cd3..3a901b6440 100644 --- a/apps/web/app/not-found.tsx +++ b/apps/web/app/not-found.tsx @@ -1,235 +1,13 @@ -import { _generateMetadata, getTranslate } from "app/_utils"; -import { type ReadonlyHeaders } from "next/dist/server/web/spec-extension/adapters/headers"; +import { _generateMetadata } from "app/_utils"; import { headers } from "next/headers"; -import Link from "next/link"; - -import { - getOrgDomainConfigFromHostname, - subdomainSuffix, -} from "@calcom/features/ee/organizations/lib/orgDomains"; -import { DOCS_URL, IS_CALCOM, WEBSITE_URL } from "@calcom/lib/constants"; -import { Icon } from "@calcom/ui/components/icon"; import PageWrapper from "@components/PageWrapperAppDir"; -enum PageType { - ORG = "ORG", - TEAM = "TEAM", - USER = "USER", - OTHER = "OTHER", -} - -function getPageInfo(pathname: string, host: string) { - const { isValidOrgDomain, currentOrgDomain } = getOrgDomainConfigFromHostname({ hostname: host }); - const [routerUsername] = pathname?.replace("%20", "-").split(/[?#]/) ?? []; - if (routerUsername && (!isValidOrgDomain || !currentOrgDomain)) { - const splitPath = routerUsername.split("/"); - if (splitPath[1] === "team" && splitPath.length === 3) { - return { - username: splitPath[2], - pageType: PageType.TEAM, - url: `${WEBSITE_URL}/signup?callbackUrl=settings/teams/new%3Fslug%3D${splitPath[2].replace("/", "")}`, - }; - } else { - return { - username: routerUsername, - pageType: PageType.USER, - url: `${WEBSITE_URL}/signup?username=${routerUsername.replace("/", "")}`, - }; - } - } else { - return { - username: currentOrgDomain ?? "", - pageType: PageType.ORG, - url: `${WEBSITE_URL}/signup?callbackUrl=settings/organizations/new%3Fslug%3D${ - currentOrgDomain?.replace("/", "") ?? "" - }`, - }; - } -} - -function NotFound({ t, headers }: { t: any; headers: ReadonlyHeaders }) { - const host = headers.get("x-forwarded-host") ?? ""; - const pathname = headers.get("x-pathname") ?? ""; - - // This makes more sense after full migration to App Router - // if (!pathname) { - // redirect("/500"); - // } - - const { username, pageType, url } = getPageInfo(pathname, host); - const isBookingSuccessPage = pathname?.startsWith("/booking"); - const isSubpage = pathname?.includes("/", 2) || isBookingSuccessPage; - const isInsights = pathname?.startsWith("/insights"); - - const links = [ - { - title: t("enterprise"), - description: "Learn more about organizations and subdomains in our enterprise plan.", - icon: "shield" as const, - href: `${WEBSITE_URL}/enterprise`, - }, - { - title: t("documentation"), - description: t("documentation_description"), - icon: "file-text" as const, - href: DOCS_URL, - }, - { - title: t("blog"), - description: t("blog_description"), - icon: "book-open" as const, - href: `${WEBSITE_URL}/blog`, - }, - ]; - - /** - * If we're on 404 and the route is insights it means it is disabled - * TODO: Abstract this for all disabled features - **/ - if (isInsights) { - return ( -
-
-
-

{t("error_404")}

-

- {t("feature_currently_disabled") ?? "Feature is currently disabled"} -

-
-
-
- - {t("or_go_back_home")} - - -
-
-
-
- ); - } - - return ( -
-
-
-

{t("error_404")}

-

- {isBookingSuccessPage ? "Booking not found" : t("page_doesnt_exist")} -

- {isSubpage && pageType !== PageType.TEAM ? ( - {t("check_spelling_mistakes_or_go_back")} - ) : IS_CALCOM ? ( - - {t(`404_the_${pageType.toLowerCase()}`)}{" "} - {username ? ( - <> - {username} - {` ${t("is_still_available")} `} - {t("register_now")}. - - ) : null} - - ) : ( - - {t(`404_the_${pageType.toLowerCase()}`)}{" "} - {username ? ( - <> - {username}{" "} - {t("is_still_available")} - - ) : null} - - )} -
-
- {((!isSubpage && IS_CALCOM) || pageType === PageType.ORG || pageType === PageType.TEAM) && ( - - )} -

{t("popular_pages")}

- -
- - {t("or_go_back_home")} - - -
-
-
-
- ); -} +import { NotFound } from "./notFoundClient"; export const generateMetadata = async () => { - const headersList = await headers(); - const pathname = headersList.get("x-pathname") ?? ""; - const isInsights = pathname?.startsWith("/insights"); - const metadata = await _generateMetadata( - (t) => - isInsights - ? t("feature_currently_disabled") ?? "Feature is currently disabled" - : t("404_page_not_found"), + (t) => t("404_page_not_found"), (t) => t("404_page_not_found") ); return { @@ -242,12 +20,11 @@ export const generateMetadata = async () => { }; const ServerPage = async () => { - const t = await getTranslate(); const h = await headers(); const nonce = h.get("x-nonce") ?? undefined; return ( - + ); }; diff --git a/apps/web/app/notFoundClient.tsx b/apps/web/app/notFoundClient.tsx new file mode 100644 index 0000000000..733930657d --- /dev/null +++ b/apps/web/app/notFoundClient.tsx @@ -0,0 +1,216 @@ +"use client"; + +import Link from "next/link"; +import { usePathname } from "next/navigation"; + +import { + getOrgDomainConfigFromHostname, + subdomainSuffix, +} from "@calcom/features/ee/organizations/lib/orgDomains"; +import { DOCS_URL, IS_CALCOM, WEBSITE_URL } from "@calcom/lib/constants"; +import { useLocale } from "@calcom/lib/hooks/useLocale"; +import { Icon } from "@calcom/ui/components/icon"; + +enum PageType { + ORG = "ORG", + TEAM = "TEAM", + USER = "USER", + OTHER = "OTHER", +} + +function getPageInfo(pathname: string, host: string) { + const { isValidOrgDomain, currentOrgDomain } = getOrgDomainConfigFromHostname({ hostname: host }); + const [routerUsername] = pathname?.replace("%20", "-").split(/[?#]/) ?? []; + if (routerUsername && (!isValidOrgDomain || !currentOrgDomain)) { + const splitPath = routerUsername.split("/"); + if (splitPath[1] === "team" && splitPath.length === 3) { + return { + username: splitPath[2], + pageType: PageType.TEAM, + url: `${WEBSITE_URL}/signup?callbackUrl=settings/teams/new%3Fslug%3D${splitPath[2].replace("/", "")}`, + }; + } else { + return { + username: routerUsername, + pageType: PageType.USER, + url: `${WEBSITE_URL}/signup?username=${routerUsername.replace("/", "")}`, + }; + } + } else { + return { + username: currentOrgDomain ?? "", + pageType: PageType.ORG, + url: `${WEBSITE_URL}/signup?callbackUrl=settings/organizations/new%3Fslug%3D${ + currentOrgDomain?.replace("/", "") ?? "" + }`, + }; + } +} + +export function NotFound() { + const { t } = useLocale(); + const pathname = usePathname() ?? ""; + const host = window.location.hostname; + + const { username, pageType, url } = getPageInfo(pathname, host); + const isBookingSuccessPage = pathname?.startsWith("/booking"); + const isSubpage = pathname?.includes("/", 2) || isBookingSuccessPage; + const isInsights = pathname?.startsWith("/insights"); + + const links = [ + { + title: t("enterprise"), + description: "Learn more about organizations and subdomains in our enterprise plan.", + icon: "shield" as const, + href: `${WEBSITE_URL}/enterprise`, + }, + { + title: t("documentation"), + description: t("documentation_description"), + icon: "file-text" as const, + href: DOCS_URL, + }, + { + title: t("blog"), + description: t("blog_description"), + icon: "book-open" as const, + href: `${WEBSITE_URL}/blog`, + }, + ]; + + /** + * If we're on 404 and the route is insights it means it is disabled + * TODO: Abstract this for all disabled features + **/ + if (isInsights) { + return ( +
+
+
+

{t("error_404")}

+

+ {t("feature_currently_disabled") ?? "Feature is currently disabled"} +

+
+
+
+ + {t("or_go_back_home")} + + +
+
+
+
+ ); + } + + return ( +
+
+
+

{t("error_404")}

+

+ {isBookingSuccessPage ? "Booking not found" : t("page_doesnt_exist")} +

+ {isSubpage && pageType !== PageType.TEAM ? ( + {t("check_spelling_mistakes_or_go_back")} + ) : IS_CALCOM ? ( + + {t(`404_the_${pageType.toLowerCase()}`)}{" "} + {username ? ( + <> + {username} + {` ${t("is_still_available")} `} + {t("register_now")}. + + ) : null} + + ) : ( + + {t(`404_the_${pageType.toLowerCase()}`)}{" "} + {username ? ( + <> + {username}{" "} + {t("is_still_available")} + + ) : null} + + )} +
+
+ {((!isSubpage && IS_CALCOM) || pageType === PageType.ORG || pageType === PageType.TEAM) && ( + + )} +

{t("popular_pages")}

+ +
+ + {t("or_go_back_home")} + + +
+
+
+
+ ); +} diff --git a/apps/web/middleware.ts b/apps/web/middleware.ts index a52fd0efbe..576387edfa 100644 --- a/apps/web/middleware.ts +++ b/apps/web/middleware.ts @@ -3,7 +3,6 @@ import { collectEvents } from "next-collect/server"; import type { NextRequest } from "next/server"; import { NextResponse } from "next/server"; -import { getLocale } from "@calcom/features/auth/lib/getLocale"; import { extendEventData, nextCollectBasicSettings } from "@calcom/lib/telemetry"; import { csp } from "./lib/csp"; @@ -16,13 +15,12 @@ const safeGet = async (key: string): Promise => { } }; -export const POST_METHODS_ALLOWED_API_ROUTES = ["/api/"]; // trailing slash in "/api/" is actually important to block edge cases like `/api.php` +export const POST_METHODS_ALLOWED_API_ROUTES = ["/api/auth/signup", "/api/trpc/"]; // Some app routes are allowed because "revalidatePath()" is used to revalidate the cache for them export const POST_METHODS_ALLOWED_APP_ROUTES = [ "/settings/my-account/general", "/settings/developer/webhooks", ]; - export function checkPostMethod(req: NextRequest) { const pathname = req.nextUrl.pathname; if ( @@ -59,7 +57,6 @@ const middleware = async (req: NextRequest): Promise> => { const url = req.nextUrl; const requestHeaders = new Headers(req.headers); - requestHeaders.set("x-url", req.url); if (!url.pathname.startsWith("/api")) { // @@ -110,12 +107,6 @@ const middleware = async (req: NextRequest): Promise> => { } } - requestHeaders.set("x-pathname", url.pathname); - - const locale = await getLocale(req); - - requestHeaders.set("x-locale", locale); - const res = NextResponse.next({ request: { headers: requestHeaders, @@ -148,6 +139,13 @@ const embeds = { if (isCOEPEnabled) { res.headers.set("Cross-Origin-Embedder-Policy", "require-corp"); } + + const embedColorScheme = url.searchParams.get("ui.color-scheme"); + if (embedColorScheme) { + res.headers.set("x-embedColorScheme", embedColorScheme); + } + + res.headers.set("x-isEmbed", "true"); return res; }, }; @@ -180,43 +178,20 @@ export const config = { // WARNING: DO NOT ADD AN ENDING SLASH "/" TO THE PATHS BELOW // THIS WILL MAKE THEM NOT MATCH AND HENCE NOT HIT MIDDLEWARE matcher: [ - "/403", - "/500", - "/icons", - "/d/:path*", - "/more/:path*", - "/maintenance/:path*", - "/enterprise/:path*", - "/upgrade/:path*", - "/connect-and-join/:path*", - "/insights/:path*", + // Routes to enforce CSP + "/auth/login", + "/login", + // Routes to set cookies + "/apps/installed", + "/auth/logout", + // Embed Routes, "/:path*/embed", + // API routes "/api/auth/signup", "/api/trpc/:path*", - "/login", - "/apps/:path*", - "/auth/:path*", - "/event-types/:path*", - "/workflows/:path*", - "/getting-started/:path*", - "/bookings/:path*", - "/video/:path*", - "/teams/:path*", - "/signup/:path*", - "/settings/:path*", - "/reschedule/:path*", - "/availability/:path*", - "/booking/:path*", - "/payment/:path*", - "/routing-forms/:path*", - "/org/:orgSlug/instant-meeting/team/:slug/:type", - "/org/:orgSlug/team/:slug/:type", - "/org/:orgSlug/team/:slug", - "/org/:orgSlug/:user/:type", - "/org/:orgSlug/:user", - "/org/:orgSlug", - "/team/:slug/:type", - "/team/:slug", + // Routes allowed for POST method (matching `POST_METHODS_ALLOWED_APP_ROUTES` array) + "/settings/my-account/general", + "/settings/developer/webhooks", ], };