diff --git a/apps/web/components/Shell.tsx b/apps/web/components/Shell.tsx index 3e32ced9b4..fba57f1b42 100644 --- a/apps/web/components/Shell.tsx +++ b/apps/web/components/Shell.tsx @@ -125,12 +125,9 @@ const Layout = ({ }: LayoutProps & { status: SessionContextValue["status"]; plan?: UserPlan; isLoading: boolean }) => { const isEmbed = useIsEmbed(); const router = useRouter(); - const { data: routingForms } = trpc.useQuery([ - "viewer.appById", - { - appId: "routing_forms", - }, - ]); + const { data: routingForms } = trpc.useQuery(["viewer.appById", { appId: "routing_forms" }], { + enabled: status === "authenticated", + }); const { t } = useLocale(); const navigation = [ diff --git a/apps/web/pages/availability/[schedule].tsx b/apps/web/pages/availability/[schedule].tsx index 66e1e80e7c..e5d944e4c1 100644 --- a/apps/web/pages/availability/[schedule].tsx +++ b/apps/web/pages/availability/[schedule].tsx @@ -1,11 +1,14 @@ import { BadgeCheckIcon } from "@heroicons/react/solid"; +import { GetStaticPaths, GetStaticProps } from "next"; import { useRouter } from "next/router"; import { useState } from "react"; import { Controller, useForm } from "react-hook-form"; +import { z } from "zod"; -import { DEFAULT_SCHEDULE, availabilityAsString } from "@calcom/lib/availability"; +import { availabilityAsString, DEFAULT_SCHEDULE } from "@calcom/lib/availability"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import showToast from "@calcom/lib/notification"; +import { stringOrNumber } from "@calcom/prisma/zod-utils"; import { inferQueryOutput, trpc } from "@calcom/trpc/react"; import Button from "@calcom/ui/Button"; import Switch from "@calcom/ui/Switch"; @@ -124,15 +127,15 @@ export function AvailabilityForm(props: inferQueryOutput<"viewer.availability.sc ); } +const querySchema = z.object({ + schedule: stringOrNumber, +}); + export default function Availability() { const router = useRouter(); const { i18n } = useLocale(); - const query = trpc.useQuery([ - "viewer.availability.schedule", - { - scheduleId: parseInt(router.query.schedule as string), - }, - ]); + const { schedule: scheduleId } = router.isReady ? querySchema.parse(router.query) : { schedule: -1 }; + const query = trpc.useQuery(["viewer.availability.schedule", { scheduleId }], { enabled: router.isReady }); const [name, setName] = useState(); return (
@@ -158,3 +161,23 @@ export default function Availability() {
); } + +export const getStaticProps: GetStaticProps = (ctx) => { + const params = querySchema.safeParse(ctx.params); + + if (!params.success) return { notFound: true }; + + return { + props: { + schedule: params.data.schedule, + }, + revalidate: 10, // seconds + }; +}; + +export const getStaticPaths: GetStaticPaths = () => { + return { + paths: [], + fallback: "blocking", + }; +}; diff --git a/apps/web/pages/bookings/[status].tsx b/apps/web/pages/bookings/[status].tsx index 97a48fc3ad..01d0606678 100644 --- a/apps/web/pages/bookings/[status].tsx +++ b/apps/web/pages/bookings/[status].tsx @@ -1,4 +1,5 @@ import { CalendarIcon } from "@heroicons/react/outline"; +import { GetStaticPaths, GetStaticProps } from "next"; import { useRouter } from "next/router"; import { Fragment } from "react"; import { z } from "zod"; @@ -20,6 +21,8 @@ import SkeletonLoader from "@components/booking/SkeletonLoader"; type BookingListingStatus = inferQueryInput<"viewer.bookings">["status"]; type BookingOutput = inferQueryOutput<"viewer.bookings">["bookings"][0]; +const validStatuses = ["upcoming", "recurring", "past", "cancelled"] as const; + const descriptionByStatus: Record = { upcoming: "upcoming_bookings", recurring: "recurring_bookings", @@ -28,11 +31,12 @@ const descriptionByStatus: Record = { }; const querySchema = z.object({ - status: z.enum(["upcoming", "recurring", "past", "cancelled"]), + status: z.enum(validStatuses), }); export default function Bookings() { const router = useRouter(); + console.log("router", JSON.stringify(router)); const { status } = router.isReady ? querySchema.parse(router.query) : { status: "upcoming" as const }; const { t } = useLocale(); @@ -137,3 +141,25 @@ export default function Bookings() { ); } + +export const getStaticProps: GetStaticProps = (ctx) => { + const params = querySchema.safeParse(ctx.params); + + if (!params.success) return { notFound: true }; + + return { + props: { + status: params.data.status, + }, + }; +}; + +export const getStaticPaths: GetStaticPaths = () => { + return { + paths: validStatuses.map((status) => ({ + params: { status }, + locale: "en", + })), + fallback: "blocking", + }; +}; diff --git a/apps/web/pages/bookings/index.tsx b/apps/web/pages/bookings/index.tsx deleted file mode 100644 index 3dcf15eb16..0000000000 --- a/apps/web/pages/bookings/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { NextPageContext } from "next"; - -import { getSession } from "@lib/auth"; - -function RedirectPage() { - return null; -} - -export async function getServerSideProps(context: NextPageContext) { - const session = await getSession(context); - if (!session?.user?.id) { - return { redirect: { permanent: false, destination: "/auth/login" } }; - } - - return { redirect: { permanent: false, destination: "/bookings/upcoming" } }; -} - -export default RedirectPage; diff --git a/packages/ee/server/checkLicense.ts b/packages/ee/server/checkLicense.ts index 9d314c9a19..e8d0fb6b02 100644 --- a/packages/ee/server/checkLicense.ts +++ b/packages/ee/server/checkLicense.ts @@ -5,7 +5,6 @@ import { CONSOLE_URL } from "@calcom/lib/constants"; const CACHING_TIME = 86400000; // 24 hours in milliseconds async function checkLicense(license: string): Promise { - return true; if (!!process.env.NEXT_PUBLIC_IS_E2E) return true; const url = `${CONSOLE_URL}/api/license?key=${license}`; const cachedResponse = cache.get(url); diff --git a/packages/lib/server/perfObserver.ts b/packages/lib/server/perfObserver.ts index 5d70a2ce55..7efbbf053d 100644 --- a/packages/lib/server/perfObserver.ts +++ b/packages/lib/server/perfObserver.ts @@ -9,7 +9,8 @@ export const perfObserver = new PerformanceObserver((items) => { items.getEntries().forEach((entry) => { // Log entry duration in seconds with four decimal places. - console.log(entry.name.replace("$1", `${(entry.duration / 1000.0).toFixed(4)}s`)); + if (!!process.env.NEXT_PUBLIC_DEBUG) + console.log(entry.name.replace("$1", `${(entry.duration / 1000.0).toFixed(4)}s`)); }); }); diff --git a/packages/prisma/migrations/20220628190334_adds_missing_oncascades/migration.sql b/packages/prisma/migrations/20220628190334_adds_missing_oncascades/migration.sql index 0c705b1d60..9fd58bfa80 100644 --- a/packages/prisma/migrations/20220628190334_adds_missing_oncascades/migration.sql +++ b/packages/prisma/migrations/20220628190334_adds_missing_oncascades/migration.sql @@ -1,5 +1,5 @@ -- DropForeignKey -ALTER TABLE "DestinationCalendar" DROP CONSTRAINT "DestinationCalendar_bookingId_fkey"; +ALTER TABLE "DestinationCalendar" DROP CONSTRAINT IF EXISTS "DestinationCalendar_bookingId_fkey"; -- DropForeignKey ALTER TABLE "DestinationCalendar" DROP CONSTRAINT "DestinationCalendar_eventTypeId_fkey"; diff --git a/packages/prisma/migrations/20220714175322_destination_calendar_one_to_many_bookings/migration.sql b/packages/prisma/migrations/20220714175322_destination_calendar_one_to_many_bookings/migration.sql index 09154aa64b..ab56692d22 100644 --- a/packages/prisma/migrations/20220714175322_destination_calendar_one_to_many_bookings/migration.sql +++ b/packages/prisma/migrations/20220714175322_destination_calendar_one_to_many_bookings/migration.sql @@ -5,7 +5,7 @@ */ -- DropForeignKey -ALTER TABLE "DestinationCalendar" DROP CONSTRAINT "DestinationCalendar_bookingId_fkey"; +ALTER TABLE "DestinationCalendar" DROP CONSTRAINT IF EXISTS "DestinationCalendar_bookingId_fkey"; -- DropIndex DROP INDEX "DestinationCalendar_bookingId_key"; diff --git a/packages/prisma/zod-utils.ts b/packages/prisma/zod-utils.ts index d2ae938d60..b97800d353 100644 --- a/packages/prisma/zod-utils.ts +++ b/packages/prisma/zod-utils.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -import { LocationType } from "@calcom/core/location"; +import { LocationType } from "@calcom/app-store/locations"; import dayjs from "@calcom/dayjs"; import { slugify } from "@calcom/lib/slugify";