diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 5282133a..a9a995cb 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -20,5 +20,6 @@ module.exports = { "react-hooks/exhaustive-deps": process.env.NODE_ENV === "production" ? "off" : "warn", "import/no-named-as-default-member": "off", + "react/no-unknown-property": ['error', { ignore: ['tw'] }] }, } diff --git a/src/app/api/og/route.tsx b/src/app/api/og/route.tsx index c1c54a9a..2579c0c8 100644 --- a/src/app/api/og/route.tsx +++ b/src/app/api/og/route.tsx @@ -1,4 +1,5 @@ import { ImageResponse, type NextRequest } from "next/server" +import removeMarkdown from "remove-markdown" import uniqolor from "uniqolor" import { gql } from "@urql/core" @@ -7,7 +8,7 @@ import { toGateway } from "~/lib/ipfs-parser" import { client } from "~/queries/graphql" const fontNormal = fetch( - "https://github.com/lxgw/LxgwWenKai/releases/download/v1.300/LXGWWenKai-Regular.ttf", + "https://github.com/lxgw/LxgwWenKai-Screen/releases/download/v1.300/LXGWWenKaiScreenR.ttf", ).then((res) => res.arrayBuffer()) export const runtime = "edge" @@ -55,9 +56,12 @@ export const GET = async (req: NextRequest) => { ) .toPromise() const title = result.data.note.metadata?.content?.title - const subtitle = result.data.note.metadata?.content?.summary?.slice(0, 15) + const subtitle = + result.data.note.metadata?.content?.summary || + removeMarkdown(result.data.note.metadata.content.content) const avatar = toGateway( - result.data.note.character.metadata?.content?.avatars?.[0], + result.data.note.character.metadata?.content?.avatars?.[0] || + `https://api.dicebear.com/6.x/bottts-neutral/svg?seed=${characterId}`, ) const siteName = @@ -82,78 +86,37 @@ export const GET = async (req: NextRequest) => { return new ImageResponse( (
-
+
{avatar && ( + // eslint-disable-next-line @next/next/no-img-element avatar )} - - +

{siteName}

-
-

- {title?.slice(0, 20)} -

+

+ {title} +

+

{subtitle} @@ -162,8 +125,8 @@ export const GET = async (req: NextRequest) => {

), { - width: 1200, - height: 600, + width: 1920, + height: 1080, fonts: [ { name: "LXGW WenKai Screen R", diff --git a/src/app/site/[site]/[slug]/page.tsx b/src/app/site/[site]/[slug]/page.tsx index d8e54a23..caee5635 100644 --- a/src/app/site/[site]/[slug]/page.tsx +++ b/src/app/site/[site]/[slug]/page.tsx @@ -8,7 +8,6 @@ import PageContent from "~/components/common/PageContent" import { OIAButton } from "~/components/site/OIAButton" import { PostFooter } from "~/components/site/PostFooter" import PostMeta from "~/components/site/PostMeta" -import { SITE_URL } from "~/lib/env" import { getSiteLink } from "~/lib/helpers" import { getTranslation } from "~/lib/i18n" import { toCid, toGateway } from "~/lib/ipfs-parser" @@ -44,9 +43,8 @@ export async function generateMetadata({ }` const description = page?.metadata?.content?.summary - const siteImages = `${SITE_URL}/api/og?noteId=${page?.noteId}&characterId=${site?.characterId}` - const images = toGateway(page?.metadata?.content?.cover || siteImages) + const images = toGateway(page?.metadata?.content?.cover!) const useLargeOGImage = !!page?.metadata?.content?.cover const twitterCreator = site?.metadata?.content?.connected_accounts ?.find((account) => account?.endsWith?.("@twitter")) diff --git a/src/lib/expand-unit.ts b/src/lib/expand-unit.ts index 9da27ce2..f04bf77b 100644 --- a/src/lib/expand-unit.ts +++ b/src/lib/expand-unit.ts @@ -54,7 +54,9 @@ export const expandCrossbellNote = async ({ expandedNote.metadata.content.cover = expandedNote.metadata?.content?.attachments?.find( (attachment) => attachment.name === "cover", - )?.address || rendered.cover + )?.address || + rendered.cover || + `${SITE_URL}/api/og?noteId=${expandedNote.noteId}&characterId=${expandedNote.characterId}` expandedNote.metadata.content.audio = rendered.audio expandedNote.metadata.content.frontMatter = rendered.frontMatter