From eac61fffe3493834996b5be78dbecf0c9421c95c Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Wed, 13 Sep 2023 22:52:34 -0700 Subject: [PATCH] Fixing up the og image generation. --- src/lib/components/socialImageCard.svelte | 71 +++++++++++++++++++---- src/routes/(app)/+page.server.ts | 4 +- src/routes/og/+server.ts | 59 ++++++++++--------- 3 files changed, 97 insertions(+), 37 deletions(-) diff --git a/src/lib/components/socialImageCard.svelte b/src/lib/components/socialImageCard.svelte index 21359df..5a3aede 100644 --- a/src/lib/components/socialImageCard.svelte +++ b/src/lib/components/socialImageCard.svelte @@ -1,14 +1,65 @@ - - -
Bored Game
{title}
-
- - - -
\ No newline at end of file +
+ + +
+ + \ No newline at end of file diff --git a/src/routes/(app)/+page.server.ts b/src/routes/(app)/+page.server.ts index 1aee354..63f2005 100644 --- a/src/routes/(app)/+page.server.ts +++ b/src/routes/(app)/+page.server.ts @@ -14,7 +14,9 @@ export const load = async ({ fetch, url }) => { description: 'Bored Game, keep track of your games', images: [ { - url: `${new URL(url.pathname, url.origin).href}og?title=Home | Bored Game`, + url: `${ + new URL(url.pathname, url.origin).href + }og?title=Home | Bored Game&description=Bored Game, keep track of your games`, width: 1200, height: 630 } diff --git a/src/routes/og/+server.ts b/src/routes/og/+server.ts index 8681f04..f137f29 100644 --- a/src/routes/og/+server.ts +++ b/src/routes/og/+server.ts @@ -9,33 +9,40 @@ const height = 630; const width = 1200; export const GET: RequestHandler = async ({ url }) => { - const title = url.searchParams.get('title') ?? undefined; - const result = SocialImageCard.render({ title }); - const element = toReactNode(`${result.html}`); - const svg = await satori(element, { - fonts: [ - { - name: 'Noto Sans', - data: Buffer.from(NotoSans), - style: 'normal' + try { + const ogImage = `${new URL(url.origin).href}images/bored-game.png`; + const title = url.searchParams.get('title') ?? undefined; + const description = url.searchParams.get('description') ?? ''; + const result = SocialImageCard.render({ title, image: ogImage, description }); + console.log('result', result); + const element = toReactNode(`${result.html}`); + const svg = await satori(element, { + fonts: [ + { + name: 'Noto Sans', + data: Buffer.from(NotoSans), + style: 'normal' + } + ], + height, + width + }); + + const resvg = new Resvg(svg, { + fitTo: { + mode: 'width', + value: width } - ], - height, - width - }); + }); - const resvg = new Resvg(svg, { - fitTo: { - mode: 'width', - value: width - } - }); + const image = resvg.render(); - const image = resvg.render(); - - return new Response(image.asPng(), { - headers: { - 'content-type': 'image/png' - } - }); + return new Response(image.asPng(), { + headers: { + 'content-type': 'image/png' + } + }); + } catch (e) { + console.error(e); + } };