diff --git a/src/app/api/open-graph/route.ts b/src/app/api/open-graph/route.ts index 8630583f..ba99505a 100644 --- a/src/app/api/open-graph/route.ts +++ b/src/app/api/open-graph/route.ts @@ -5,9 +5,24 @@ import { NextServerResponse, getQuery } from "~/lib/server-helper" export async function GET(req: Request) { const query = getQuery(req) - const result = await ogs({ + const { result } = await ogs({ url: query.url, }) + + if (result?.ogImage?.[0]) { + let type = "image/png" + if (result?.ogImage?.[0]?.type) { + type = result?.ogImage?.[0]?.type?.startsWith("image/") + ? result?.ogImage?.[0]?.type + : `image/${result?.ogImage?.[0]?.type}` + } + result.ogImage[0].type = type + + if (result.ogImage[0].url.startsWith("//")) { + result.ogImage[0].url = `https:${result.ogImage[0].url}` + } + } + const res = new NextServerResponse() return res.status(200).json(result) } diff --git a/src/app/dashboard/[subdomain]/editor/portfolio-editor.tsx b/src/app/dashboard/[subdomain]/editor/portfolio-editor.tsx index 233f34a0..0c582f09 100644 --- a/src/app/dashboard/[subdomain]/editor/portfolio-editor.tsx +++ b/src/app/dashboard/[subdomain]/editor/portfolio-editor.tsx @@ -270,7 +270,7 @@ export default function PortfolioEditor() { ) : ( <>
- +
{ const [filling, setFilling] = useState(false) const autofill = async () => { setFilling(true) - const { result } = await ( + const result = await ( await fetch(`/api/open-graph?url=${values.externalUrl}`) ).json() + const time = + result?.articlePublishedTime || result?.publishedTime || result?.ogDate + updateValue({ - cover: { - address: result?.ogImage?.[0]?.url, - mime_type: result?.ogImage?.[0]?.type || "image/png", - }, + cover: result?.ogImage?.[0] + ? { + address: result?.ogImage?.[0]?.url, + mime_type: result?.ogImage?.[0]?.type, + } + : undefined, title: result?.ogTitle, excerpt: result?.ogDescription, - publishedAt: result?.articlePublishedTime || result?.publishedTime, + publishedAt: time ? new Date(time).toISOString() : undefined, }) setFilling(false) }