mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-09-13 23:55:35 -04:00
dynamic site.webmanifest
This commit is contained in:
@@ -54,7 +54,7 @@ const App = ({ Component, pageProps }: AppProps) => {
|
||||
site_name: config.siteName,
|
||||
title: `${config.siteName} – ${config.shortDescription}`,
|
||||
url: `${config.baseUrl}/`,
|
||||
locale: "en_US",
|
||||
locale: config.siteLocale,
|
||||
type: "website",
|
||||
images: [
|
||||
{
|
||||
@@ -64,8 +64,8 @@ const App = ({ Component, pageProps }: AppProps) => {
|
||||
],
|
||||
}}
|
||||
twitter={{
|
||||
handle: `@${config.twitterHandle}`,
|
||||
site: `@${config.twitterHandle}`,
|
||||
handle: `@${config.authorSocial.twitter}`,
|
||||
site: `@${config.authorSocial.twitter}`,
|
||||
cardType: "summary",
|
||||
}}
|
||||
facebook={{
|
||||
@@ -169,18 +169,18 @@ const App = ({ Component, pageProps }: AppProps) => {
|
||||
/>
|
||||
<SocialProfileJsonLd
|
||||
type="Person"
|
||||
name="Jake Jarvis"
|
||||
name={config.authorName}
|
||||
url={`${config.baseUrl}/`}
|
||||
sameAs={[
|
||||
`${config.baseUrl}/`,
|
||||
"https://github.com/jakejarvis",
|
||||
"https://keybase.io/jakejarvis",
|
||||
"https://twitter.com/jakejarvis",
|
||||
"https://medium.com/@jakejarvis",
|
||||
"https://www.linkedin.com/in/jakejarvis/",
|
||||
"https://www.facebook.com/jakejarvis",
|
||||
"https://www.instagram.com/jakejarvis/",
|
||||
"https://mastodon.social/@jakejarvis",
|
||||
`https://github.com/${config.authorSocial.github}`,
|
||||
`https://keybase.io/${config.authorSocial.keybase}`,
|
||||
`https://twitter.com/${config.authorSocial.twitter}`,
|
||||
`https://medium.com/@${config.authorSocial.medium}`,
|
||||
`https://www.linkedin.com/in/${config.authorSocial.linkedin}/`,
|
||||
`https://www.facebook.com/${config.authorSocial.facebook}`,
|
||||
`https://www.instagram.com/${config.authorSocial.instagram}/`,
|
||||
`https://${config.authorSocial.mastodon}`,
|
||||
]}
|
||||
/>
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import { buildFeed } from "../lib/build-feed";
|
||||
import type { GetServerSideProps } from "next";
|
||||
|
||||
const AtomPage = () => null;
|
||||
const AtomFeed = () => null;
|
||||
|
||||
export const getServerSideProps: GetServerSideProps = async (context) => {
|
||||
const feed = buildFeed();
|
||||
@@ -16,4 +16,4 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
|
||||
};
|
||||
};
|
||||
|
||||
export default AtomPage;
|
||||
export default AtomFeed;
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import { buildFeed } from "../lib/build-feed";
|
||||
import type { GetServerSideProps } from "next";
|
||||
|
||||
const RssPage = () => null;
|
||||
const RssFeed = () => null;
|
||||
|
||||
export const getServerSideProps: GetServerSideProps = async (context) => {
|
||||
const feed = buildFeed();
|
||||
@@ -16,4 +16,4 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
|
||||
};
|
||||
};
|
||||
|
||||
export default RssPage;
|
||||
export default RssFeed;
|
||||
|
@@ -38,8 +38,8 @@ const Note = ({ source, frontMatter, slug }) => (
|
||||
],
|
||||
}}
|
||||
twitter={{
|
||||
handle: `@${config.twitterHandle}`,
|
||||
site: `@${config.twitterHandle}`,
|
||||
handle: `@${config.authorSocial.twitter}`,
|
||||
site: `@${config.authorSocial.twitter}`,
|
||||
cardType: "summary_large_image",
|
||||
}}
|
||||
/>
|
||||
|
35
pages/site.webmanifest.ts
Normal file
35
pages/site.webmanifest.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import * as config from "../lib/config";
|
||||
import type { GetServerSideProps } from "next";
|
||||
|
||||
const SiteManifest = () => null;
|
||||
|
||||
export const getServerSideProps: GetServerSideProps = async (context) => {
|
||||
const manifest = {
|
||||
name: config.siteName,
|
||||
short_name: config.siteDomain,
|
||||
description: config.longDescription,
|
||||
lang: config.siteLocale,
|
||||
icons: [
|
||||
{ src: "/static/favicons/android-chrome-512x512.png", sizes: "512x512", type: "image/png", purpose: "any" },
|
||||
{ src: "/static/favicons/android-chrome-192x192.png", sizes: "192x192", type: "image/png", purpose: "any" },
|
||||
{ src: "/static/favicons/maskable-512x512.png", sizes: "512x512", type: "image/png", purpose: "maskable" },
|
||||
{ src: "/static/favicons/maskable-192x192.png", sizes: "192x192", type: "image/png", purpose: "maskable" },
|
||||
],
|
||||
display: "browser",
|
||||
start_url: "/",
|
||||
};
|
||||
const { res } = context;
|
||||
|
||||
// https://developer.mozilla.org/en-US/docs/Web/Manifest#deploying_a_manifest
|
||||
res.setHeader("content-type", "application/manifest+json");
|
||||
// cache for one day
|
||||
res.setHeader("cache-control", "s-maxage=86400, stale-while-revalidate");
|
||||
res.write(JSON.stringify(manifest));
|
||||
res.end();
|
||||
|
||||
return {
|
||||
props: {},
|
||||
};
|
||||
};
|
||||
|
||||
export default SiteManifest;
|
Reference in New Issue
Block a user