Skip to content

Commit

Permalink
fix: include app directory in rewrites generation logic + migrate /re…
Browse files Browse the repository at this point in the history
…schedule pages to App Router (#18261)

* chore: app router - /reschedule pages (#18150)

* app router - /reschedule pages

* add to config.matcher

* generateMetdata is not needed

* include app directory in rewrites generation logic

* make it more readable

* make code more elegant

* fix

* fix

* fix

* fix

* test and refactor
  • Loading branch information
hbjORbj authored Dec 19, 2024
1 parent c27b73a commit 355aaa7
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import { getServerSideProps as _getServerSideProps } from "@pages/reschedule/[uid]";
import { withAppDirSsr } from "app/WithAppDirSsr";
import withEmbedSsrAppDir from "app/WithEmbedSSR";
import type { PageProps } from "app/_types";
import { cookies, headers } from "next/headers";

import { buildLegacyCtx } from "@lib/buildLegacyCtx";
import withEmbedSsr from "@lib/withEmbedSsr";
import { getServerSideProps } from "@lib/reschedule/[uid]/getServerSideProps";

const getData = withEmbedSsr(_getServerSideProps);
const getData = withAppDirSsr(getServerSideProps);
const getEmbedData = withEmbedSsrAppDir(getData);

const Page = async ({ params, searchParams }: PageProps) => {
const legacyCtx = buildLegacyCtx(headers(), cookies(), params, searchParams);
await getData(legacyCtx);
await getEmbedData(legacyCtx);

return null;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
import { withAppDirSsr } from "app/WithAppDirSsr";
import type { PageProps } from "app/_types";
import { _generateMetadata } from "app/_utils";
import { headers, cookies } from "next/headers";

import { buildLegacyCtx } from "@lib/buildLegacyCtx";
import { getServerSideProps } from "@lib/reschedule/[uid]/getServerSideProps";

export const generateMetadata = async () =>
await _generateMetadata(
() => "",
() => ""
);

const getData = withAppDirSsr(getServerSideProps);

const Page = async ({ params, searchParams }: PageProps) => {
Expand Down
1 change: 1 addition & 0 deletions apps/web/middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ export const config = {
"/teams",
"/future/teams/",
"/settings/:path*",
"/reschedule/:path*",
"/availability/:path*",
"/booking/:path*",
],
Expand Down
6 changes: 0 additions & 6 deletions apps/web/pages/reschedule/[uid].tsx

This file was deleted.

7 changes: 0 additions & 7 deletions apps/web/pages/reschedule/[uid]/embed.tsx

This file was deleted.

22 changes: 19 additions & 3 deletions apps/web/pagesAndRewritePaths.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,31 @@
const glob = require("glob");
const { getSubdomainRegExp } = require("./getSubdomainRegExp");
/** Needed to rewrite public booking page, gets all static pages but [user] */
// Pages found here are excluded from redirects in beforeFiles in next.config.js
let pages = (exports.pages = glob
.sync("pages/**/[^_]*.{tsx,js,ts}", { cwd: __dirname })
.sync("{pages,app}/**/[^_]*.{tsx,js,ts}", { cwd: __dirname })
.map((filename) =>
filename
.substr(6)
.replace(/^(pages|app)\//, "")
.replace(/(\.tsx|\.js|\.ts)/, "")
.replace(/\/.*/, "")
)
.filter((v, i, self) => self.indexOf(v) === i && !v.startsWith("[user]")));
// "/future" is a temporary directory for incremental migration to App Router
.filter(
(v, i, self) =>
self.indexOf(v) === i &&
![
"[user]",
"future",
"_trpc",
"layout",
"layoutHOC",
"WithAppDirSsg",
"global-error",
"WithAppDirSsr",
"WithEmbedSSR",
].some((prefix) => v.startsWith(prefix))
));

// .* matches / as well(Note: *(i.e wildcard) doesn't match / but .*(i.e. RegExp) does)
// It would match /free/30min but not /bookings/upcoming because 'bookings' is an item in pages
Expand Down
45 changes: 45 additions & 0 deletions apps/web/test/lib/pagesAndRewritePaths.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { it, expect, describe } from "vitest";

import { pages } from "../../pagesAndRewritePaths.js";

describe("pagesAndRewritePaths", () => {
describe("beforeFiles must exclude routes in pages/app router", () => {
const BEFORE_REWRITE_EXCLUDE_PAGES = [
"apps",
"availability",
"booking",
"connect-and-join",
"enterprise",
"error",
"getting-started",
"insights",
"maintenance",
"more",
"not-found",
"reschedule",
"settings",
"teams",
"upgrade",
"video",
"workflows",
"403",
"404",
"500",
"bookings",
"event-types",
"icons",
"org",
"payment",
"routing-forms",
"signup",
"team",
"d",
];

it("should include all required routes", () => {
BEFORE_REWRITE_EXCLUDE_PAGES.forEach((route) => {
expect(pages).toContain(route);
});
});
});
});

0 comments on commit 355aaa7

Please sign in to comment.