From cd2fdaf3da0d853b58a093e897183671e654bc6f Mon Sep 17 00:00:00 2001 From: DIYgod Date: Thu, 17 Nov 2022 20:22:34 +0000 Subject: [PATCH] feat: render home page via api to reduce js size --- src/components/dashboard/PagesManager.tsx | 1 - src/components/site/SiteLayout.server.tsx | 1 - src/models/page.model.ts | 5 +---- src/models/site.model.ts | 2 +- src/pages/_site/[site]/archives.tsx | 1 - src/pages/_site/[site]/feed/index.tsx | 1 - src/pages/_site/[site]/index.tsx | 1 - src/pages/_site/[site]/tag/[tag].tsx | 1 - src/pages/api/pages.ts | 13 +++++++++++++ src/queries/page.ts | 18 ++++++++++-------- 10 files changed, 25 insertions(+), 19 deletions(-) create mode 100644 src/pages/api/pages.ts diff --git a/src/components/dashboard/PagesManager.tsx b/src/components/dashboard/PagesManager.tsx index 7e80bf3b..0b8282ba 100644 --- a/src/components/dashboard/PagesManager.tsx +++ b/src/components/dashboard/PagesManager.tsx @@ -70,7 +70,6 @@ export const PagesManager: React.FC<{ site: subdomain!, take: 100, visibility, - render: true, }) const tabItems: TabItem[] = [ diff --git a/src/components/site/SiteLayout.server.tsx b/src/components/site/SiteLayout.server.tsx index ddda1e64..2ed3fa08 100644 --- a/src/components/site/SiteLayout.server.tsx +++ b/src/components/site/SiteLayout.server.tsx @@ -59,7 +59,6 @@ export const getServerSideProps = async ( ...(options?.take && { take: options.take }), type: "post", visibility: PageVisibilityEnum.Published, - render: true, ...(tag && { tags: [tag] }), }, queryClient, diff --git a/src/models/page.model.ts b/src/models/page.model.ts index 165edc7d..9c111a76 100644 --- a/src/models/page.model.ts +++ b/src/models/page.model.ts @@ -195,9 +195,6 @@ export async function getPagesBySite( visibility?: PageVisibilityEnum | null take?: number | null cursor?: string | null - includeContent?: boolean - includeExcerpt?: boolean - render?: boolean tags?: string[] }, customUnidata?: Unidata, @@ -284,7 +281,7 @@ export async function getPagesBySite( pages.total = pages.total - ((input.take || 10) - pages.list.length) pages?.list.map((page) => { - expandPage(page, input.render || false) + expandPage(page, true) delete page.body return page }) diff --git a/src/models/site.model.ts b/src/models/site.model.ts index c207c052..8feed178 100644 --- a/src/models/site.model.ts +++ b/src/models/site.model.ts @@ -43,7 +43,7 @@ const expandSite = (site: Profile) => { (a: any) => a.trait_type === "xlog_custom_domain", )?.value || "" site.name = site.name || site.username - site.description = renderPageContent(site.bio || "", true).contentHTML + site.description = site.bio if (site.avatars) { site.avatars = site.avatars.map((avatar) => toGateway(avatar)) diff --git a/src/pages/_site/[site]/archives.tsx b/src/pages/_site/[site]/archives.tsx index 334afaf8..0026e8bb 100644 --- a/src/pages/_site/[site]/archives.tsx +++ b/src/pages/_site/[site]/archives.tsx @@ -38,7 +38,6 @@ function SiteArchivesPage({ take: 100, type: "post", visibility: PageVisibilityEnum.Published, - render: true, }) return ( diff --git a/src/pages/_site/[site]/feed/index.tsx b/src/pages/_site/[site]/feed/index.tsx index 05fe6b3d..e08a1e87 100644 --- a/src/pages/_site/[site]/feed/index.tsx +++ b/src/pages/_site/[site]/feed/index.tsx @@ -19,7 +19,6 @@ export const getServerSideProps: GetServerSideProps = async (ctx) => { site: domainOrSubdomain, type: "post", visibility: PageVisibilityEnum.Published, - render: true, }, queryClient, ) diff --git a/src/pages/_site/[site]/index.tsx b/src/pages/_site/[site]/index.tsx index 96c4dfb0..61d62fbb 100644 --- a/src/pages/_site/[site]/index.tsx +++ b/src/pages/_site/[site]/index.tsx @@ -25,7 +25,6 @@ function SiteIndexPage({ domainOrSubdomain }: { domainOrSubdomain: string }) { site: domainOrSubdomain, type: "post", visibility: PageVisibilityEnum.Published, - render: true, }) return ( diff --git a/src/pages/_site/[site]/tag/[tag].tsx b/src/pages/_site/[site]/tag/[tag].tsx index e4dc479a..53db5963 100644 --- a/src/pages/_site/[site]/tag/[tag].tsx +++ b/src/pages/_site/[site]/tag/[tag].tsx @@ -43,7 +43,6 @@ function SiteTagPage({ take: 100, type: "post", visibility: PageVisibilityEnum.Published, - render: true, tags: [tag], }) diff --git a/src/pages/api/pages.ts b/src/pages/api/pages.ts new file mode 100644 index 00000000..7d2c50d5 --- /dev/null +++ b/src/pages/api/pages.ts @@ -0,0 +1,13 @@ +import { NextApiRequest, NextApiResponse } from "next" +import { getPagesBySite } from "~/models/page.model" + +export default async function handler( + req: NextApiRequest, + res: NextApiResponse, +) { + const query = req.query + + const result = await getPagesBySite(query as any) + + res.status(200).json(result) +} diff --git a/src/queries/page.ts b/src/queries/page.ts index 918bda3a..4e0dcbfa 100644 --- a/src/queries/page.ts +++ b/src/queries/page.ts @@ -11,17 +11,19 @@ import { useContract } from "./crossbell" export const useGetPagesBySite = ( input: Parameters[0], ) => { - const unidata = useUnidata() return useInfiniteQuery({ queryKey: ["getPagesBySite", input.site, input], queryFn: async ({ pageParam }) => { - return pageModel.getPagesBySite( - { - ...input, - cursor: pageParam, - }, - unidata, - ) + const result: ReturnType = await ( + await fetch( + "/api/pages?" + + new URLSearchParams({ + ...input, + ...(pageParam && { cursor: pageParam }), + } as any), + ) + ).json() + return result }, getNextPageParam: (lastPage) => lastPage.cursor, })