diff --git a/app/(home-pages)/p/[didOrHandle]/layout.tsx b/app/(home-pages)/p/[didOrHandle]/layout.tsx index effa6e60..3921d3d1 100644 --- a/app/(home-pages)/p/[didOrHandle]/layout.tsx +++ b/app/(home-pages)/p/[didOrHandle]/layout.tsx @@ -8,6 +8,38 @@ import { DashboardLayout } from "components/PageLayouts/DashboardLayout"; import { ProfileLayout } from "./ProfileLayout"; import { Agent } from "@atproto/api"; import { get_profile_data } from "app/api/rpc/[command]/get_profile_data"; +import { Metadata } from "next"; + +export async function generateMetadata(props: { + params: Promise<{ didOrHandle: string }>; +}): Promise { + let params = await props.params; + let didOrHandle = decodeURIComponent(params.didOrHandle); + + let did = didOrHandle; + if (!didOrHandle.startsWith("did:")) { + let resolved = await idResolver.handle.resolve(didOrHandle); + if (!resolved) return { title: "Profile - Leaflet" }; + did = resolved; + } + + let profileData = await get_profile_data.handler( + { didOrHandle: did }, + { supabase: supabaseServerClient }, + ); + let { profile } = profileData.result; + + if (!profile) return { title: "Profile - Leaflet" }; + + const displayName = profile.displayName; + const handle = profile.handle; + + const title = displayName + ? `${displayName} (@${handle}) - Leaflet` + : `@${handle} - Leaflet`; + + return { title }; +} export default async function ProfilePageLayout(props: { params: Promise<{ didOrHandle: string }>; diff --git a/app/(home-pages)/tag/[tag]/page.tsx b/app/(home-pages)/tag/[tag]/page.tsx index a2efb113..2121ab72 100644 --- a/app/(home-pages)/tag/[tag]/page.tsx +++ b/app/(home-pages)/tag/[tag]/page.tsx @@ -3,6 +3,15 @@ import { Tag } from "components/Tags"; import { PostListing } from "components/PostListing"; import { getDocumentsByTag } from "./getDocumentsByTag"; import { TagTiny } from "components/Icons/TagTiny"; +import { Metadata } from "next"; + +export async function generateMetadata(props: { + params: Promise<{ tag: string }>; +}): Promise { + const params = await props.params; + const decodedTag = decodeURIComponent(params.tag); + return { title: `${decodedTag} - Leaflet` }; +} export default async function TagPage(props: { params: Promise<{ tag: string }>;