diff --git a/apps/page/components/seo-tags.tsx b/apps/page/components/seo-tags.tsx index d39bb33..8a1db5a 100644 --- a/apps/page/components/seo-tags.tsx +++ b/apps/page/components/seo-tags.tsx @@ -1,7 +1,6 @@ import { IPage, IPageSettings, - IPost, PageTypeToLabel, } from "@changes-page/supabase/types/page"; import { NextSeo } from "next-seo"; @@ -9,26 +8,32 @@ import Head from "next/head"; import { useMemo } from "react"; import { getOgUrl, getPageUrl } from "../lib/url"; import logoImage from "../public/logo.png"; -import { IPostPublicData } from "../lib/data"; const SeoTags = ({ page, settings, - posts, - content = "", + title = null, + description = null, url = null, }: { page: IPage; settings: IPageSettings; - posts: IPostPublicData[]; - content?: string; + title?: string | null; + description?: string | null; url?: string | null; }) => { const pageUrl = useMemo(() => getPageUrl(page, settings), [page, settings]); + const truncatedDescription = useMemo(() => { + if (!description) return null; + return description.length > 150 + ? description.substring(0, 150) + "..." + : description; + }, [description]); + const ogImageUrl = useMemo( - () => getOgUrl(page, settings, posts.length ? posts[0] : null, content), - [page, settings, posts, content] + () => getOgUrl(page, settings, title, truncatedDescription), + [page, settings, title, truncatedDescription] ); return ( @@ -39,15 +44,23 @@ const SeoTags = ({ 350 ? content.substring(0, 350) + "..." : content; - + if (title?.length && description?.length) { return `${pageUrl}/api/og?title=${encodeURIComponent( page?.title - )}&body=${encodeURIComponent(post.title)}&content=${encodeURIComponent( - contentTruncated + )}&body=${encodeURIComponent(title)}&content=${encodeURIComponent( + description )}${settings?.page_logo ? "&logo=" + settings?.page_logo : ""}`; } return `${pageUrl}/api/og?title=${encodeURIComponent( page?.title - )}&body=${encodeURIComponent(page.description ?? "")}${ - settings?.page_logo ? "&logo=" + settings?.page_logo : "" - }`; + )}&body=${encodeURIComponent( + title ?? description ?? page.description ?? "" + )}${settings?.page_logo ? "&logo=" + settings?.page_logo : ""}`; } diff --git a/apps/page/pages/_sites/[site]/index.tsx b/apps/page/pages/_sites/[site]/index.tsx index fa8f1a8..817d562 100644 --- a/apps/page/pages/_sites/[site]/index.tsx +++ b/apps/page/pages/_sites/[site]/index.tsx @@ -68,7 +68,7 @@ export default function Index({ return ( <> - +
diff --git a/apps/page/pages/_sites/[site]/notifications/confirm-email-subscription.tsx b/apps/page/pages/_sites/[site]/notifications/confirm-email-subscription.tsx index d51e8d0..7a84869 100644 --- a/apps/page/pages/_sites/[site]/notifications/confirm-email-subscription.tsx +++ b/apps/page/pages/_sites/[site]/notifications/confirm-email-subscription.tsx @@ -1,12 +1,13 @@ +import { IPage, IPageSettings } from "@changes-page/supabase/types/page"; import { CheckCircleIcon } from "@heroicons/react/outline"; import type { GetServerSideProps } from "next"; import { useTheme } from "next-themes"; import { useEffect } from "react"; import PageHeader from "../../../../components/page-header"; import SeoTags from "../../../../components/seo-tags"; -import { IPage, IPageSettings } from "@changes-page/supabase/types/page"; import { fetchRenderData } from "../../../../lib/data"; import { verifyPageEmailToken } from "../../../../lib/notifications"; +import { getPageUrl } from "../../../../lib/url"; export default function Index({ page, @@ -26,7 +27,16 @@ export default function Index({ return ( <> - +
diff --git a/apps/page/pages/_sites/[site]/plain.tsx b/apps/page/pages/_sites/[site]/plain.tsx index 88ce472..1f76920 100644 --- a/apps/page/pages/_sites/[site]/plain.tsx +++ b/apps/page/pages/_sites/[site]/plain.tsx @@ -16,6 +16,7 @@ import { fetchRenderData, translateHostToPageIdentifier, } from "../../../lib/data"; +import { getPageUrl } from "../../../lib/url"; export default function Index({ posts, @@ -40,7 +41,11 @@ export default function Index({ return ( <> - +
{hideTitle !== "true" && ( diff --git a/apps/page/pages/_sites/[site]/post/[postId]/[slug].tsx b/apps/page/pages/_sites/[site]/post/[postId]/[slug].tsx index 16e407f..1a9b0bc 100644 --- a/apps/page/pages/_sites/[site]/post/[postId]/[slug].tsx +++ b/apps/page/pages/_sites/[site]/post/[postId]/[slug].tsx @@ -39,8 +39,8 @@ export default function Index({