code-share/renderer/utils.ts

41 lines
1.5 KiB
TypeScript
Raw Normal View History

2024-02-22 12:14:58 +00:00
import type { PageContext } from "vike/types";
2024-03-03 18:55:51 +07:00
import { BASE_URL } from "~/lib/consts";
2024-02-22 12:14:58 +00:00
2024-03-03 18:55:51 +07:00
export function getPageTitle(pageContext: PageContext) {
2024-02-22 12:14:58 +00:00
let title = pageContext.data?.title || pageContext.config.title;
2024-02-22 20:59:20 +00:00
title = title ? `${title} - CodeShare` : "Welcome to CodeShare";
2024-02-22 12:14:58 +00:00
2024-03-03 18:55:51 +07:00
return title;
}
export function getPageMetadata(pageContext: PageContext) {
2024-03-12 06:38:50 +07:00
const canonicalUrl = BASE_URL + pageContext.req.originalUrl;
2024-03-03 18:55:51 +07:00
const title = getPageTitle(pageContext);
2024-02-22 12:14:58 +00:00
const description =
2024-02-22 20:59:20 +00:00
pageContext.data?.description ||
pageContext.config.description ||
"Share your frontend result with everyone";
2024-03-03 18:55:51 +07:00
const ogImage = pageContext.data?.ogImage;
return `
<meta name="description" content="${description}" />
<title>${title}</title>
<link rel="canonical" href="${canonicalUrl}" />
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="${canonicalUrl}" />
<meta property="og:title" content="${title}" />
<meta property="og:description" content="${description}" />
${ogImage ? `<meta property="og:image" content="${ogImage}" />` : ""}
2024-02-22 12:14:58 +00:00
2024-03-03 18:55:51 +07:00
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content="${canonicalUrl}" />
<meta property="twitter:title" content="${title}" />
<meta property="twitter:description" content="${description}" />
${ogImage ? `<meta property="twitter:image" content="${ogImage}" />` : ""}
`.trim();
2024-02-22 12:14:58 +00:00
}