diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index f9731ef0296284..c2c4ccfefd508b 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -3,6 +3,7 @@ import { redirect } from "next/navigation"; import { checkOnboardingRedirect } from "@calcom/features/auth/lib/onboardingUtils"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +import { prisma } from "@calcom/prisma"; import { buildLegacyRequest } from "@lib/buildLegacyCtx"; @@ -23,6 +24,21 @@ const RedirectPage = async () => { redirect(onboardingPath); } + // Fetch user metadata to determine default home view preference + const user = await prisma.user.findUnique({ + where: { id: session.user.id }, + select: { metadata: true }, + }); + + // Get preference from metadata, default to "event-types" for backward compatibility + const defaultHomeView = (user?.metadata as { defaultHomeView?: "event-types" | "bookings" } | null) + ?.defaultHomeView ?? "event-types"; + + // Redirect based on user preference + if (defaultHomeView === "bookings") { + redirect("/bookings/upcoming"); + } + redirect("/event-types"); }; diff --git a/apps/web/modules/settings/my-account/general-view.tsx b/apps/web/modules/settings/my-account/general-view.tsx index 7b0e458b9c8320..d69ef1f2e5e7a7 100644 --- a/apps/web/modules/settings/my-account/general-view.tsx +++ b/apps/web/modules/settings/my-account/general-view.tsx @@ -39,6 +39,10 @@ export type FormValues = { value: string; label: string; }; + defaultHomeView: { + value: "event-types" | "bookings"; + label: string; + }; travelSchedules: { id?: number; startDate: Date; @@ -93,6 +97,11 @@ const GeneralView = ({ user, travelSchedules }: GeneralViewProps) => { { value: 24, label: t("24_hour") }, ]; + const defaultHomeViewOptions = [ + { value: "event-types" as const, label: t("event_types") }, + { value: "bookings" as const, label: t("bookings") }, + ]; + const weekStartOptions = [ { value: "Sunday", label: nameOfDay(localeProp, 0) }, { value: "Monday", label: nameOfDay(localeProp, 1) }, @@ -118,6 +127,12 @@ const GeneralView = ({ user, travelSchedules }: GeneralViewProps) => { value: user.weekStart, label: weekStartOptions.find((option) => option.value === user.weekStart)?.label || "", }, + defaultHomeView: { + value: (user.metadata as { defaultHomeView?: "event-types" | "bookings" } | null)?.defaultHomeView ?? "event-types", + label: defaultHomeViewOptions.find( + (option) => option.value === ((user.metadata as { defaultHomeView?: "event-types" | "bookings" } | null)?.defaultHomeView ?? "event-types") + )?.label || t("event_types"), + }, travelSchedules: travelSchedules.map((schedule) => { return { @@ -165,6 +180,9 @@ const GeneralView = ({ user, travelSchedules }: GeneralViewProps) => { locale: values.locale.value, timeFormat: values.timeFormat.value, weekStart: values.weekStart.value, + metadata: { + defaultHomeView: values.defaultHomeView.value, + }, }); }}>
@@ -303,6 +321,24 @@ const GeneralView = ({ user, travelSchedules }: GeneralViewProps) => { )} /> + ( + <> + +