From 3677a3507d0a3733609ab32e66a9eefc969f87a7 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Mon, 7 Aug 2023 18:51:21 +0100 Subject: [PATCH] feat: portfolios page --- src/app/site/[site]/portfolios/page.tsx | 39 +++++++++++++++++++++++++ src/components/site/SiteHome.tsx | 12 ++++++-- 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 src/app/site/[site]/portfolios/page.tsx diff --git a/src/app/site/[site]/portfolios/page.tsx b/src/app/site/[site]/portfolios/page.tsx new file mode 100644 index 00000000..47e00055 --- /dev/null +++ b/src/app/site/[site]/portfolios/page.tsx @@ -0,0 +1,39 @@ +import { Hydrate, dehydrate } from "@tanstack/react-query" + +import SiteHome from "~/components/site/SiteHome" +import getQueryClient from "~/lib/query-client" +import { PageVisibilityEnum } from "~/lib/types" +import { prefetchGetPagesBySite } from "~/queries/page.server" +import { fetchGetSite } from "~/queries/site.server" + +async function SiteIndexPage({ + params, +}: { + params: { + site: string + } +}) { + const queryClient = getQueryClient() + + const site = await fetchGetSite(params.site, queryClient) + await prefetchGetPagesBySite( + { + characterId: site?.characterId, + type: "portfolio", + visibility: PageVisibilityEnum.Published, + useStat: true, + limit: 18, + }, + queryClient, + ) + + const dehydratedState = dehydrate(queryClient) + + return ( + + + + ) +} + +export default SiteIndexPage diff --git a/src/components/site/SiteHome.tsx b/src/components/site/SiteHome.tsx index dae71b7b..39927163 100644 --- a/src/components/site/SiteHome.tsx +++ b/src/components/site/SiteHome.tsx @@ -1,15 +1,21 @@ "use client" import PostList from "~/components/site/PostList" -import { PageVisibilityEnum } from "~/lib/types" +import { NoteType, PageVisibilityEnum } from "~/lib/types" import { useGetPagesBySiteLite, usePinnedPage } from "~/queries/page" import { useGetSite } from "~/queries/site" -export default function SiteHome({ handle }: { handle: string }) { +export default function SiteHome({ + handle, + type, +}: { + handle: string + type?: NoteType +}) { const site = useGetSite(handle) const posts = useGetPagesBySiteLite({ characterId: site.data?.characterId, - type: ["post", "portfolio"], + type: type || ["post", "portfolio"], visibility: PageVisibilityEnum.Published, useStat: true, limit: 18,