Add gists pages ISR

Add octokit error catch
This commit is contained in:
DefectingCat
2023-02-07 10:44:24 +08:00
parent faca7369f3
commit 5b8c900493
2 changed files with 32 additions and 22 deletions

View File

@ -2,7 +2,7 @@ import { Octokit } from 'octokit';
import { GistsFile } from 'types'; import { GistsFile } from 'types';
const password = process.env.NEXT_PUBLIC_GITHUB_API; const password = process.env.NEXT_PUBLIC_GITHUB_API;
const host = process.env.NEXT_PUBLIC_GISTS_HOST ?? 'http://api.github.com'; const host = process.env.NEXT_PUBLIC_GISTS_HOST ?? 'https://api.github.com';
const octokit = new Octokit({ const octokit = new Octokit({
auth: password, auth: password,
baseUrl: host, baseUrl: host,
@ -76,7 +76,11 @@ export const getGists = async (page = 1, perPage = 10) => {
Object.keys(g.files).map(async (f) => { Object.keys(g.files).map(async (f) => {
const url = g.files[f].raw_url; const url = g.files[f].raw_url;
if (!url) return; if (!url) return;
g.files[f].content = await fetch(url).then((res) => res.text()); try {
g.files[f].content = await fetch(url).then((res) => res.text());
} catch (err) {
console.log(err);
}
}) })
); );
}) })

View File

@ -4,8 +4,8 @@ import MainLayout from 'layouts/common/main-layout';
import { GetGists, getGists, GetUser, getUser } from 'lib/fetcher'; import { GetGists, getGists, GetUser, getUser } from 'lib/fetcher';
import { GetStaticPaths, GetStaticProps, InferGetStaticPropsType } from 'next'; import { GetStaticPaths, GetStaticProps, InferGetStaticPropsType } from 'next';
import dynamic from 'next/dynamic'; import dynamic from 'next/dynamic';
import { ParsedUrlQuery } from 'querystring';
import { ReactElement, Suspense } from 'react'; import { ReactElement, Suspense } from 'react';
import { useRouter } from 'next/router';
const UserInfo = dynamic(() => import('components/gists/user-info'), { const UserInfo = dynamic(() => import('components/gists/user-info'), {
suspense: true, suspense: true,
@ -26,6 +26,12 @@ const Gists = ({
next, next,
total, total,
}: InferGetStaticPropsType<typeof getStaticProps>) => { }: InferGetStaticPropsType<typeof getStaticProps>) => {
const router = useRouter();
if (router.isFallback) {
return <>Loading...</>;
}
return ( return (
<> <>
<main className="max-w-5xl px-4 mx-auto lg:px-0"> <main className="max-w-5xl px-4 mx-auto lg:px-0">
@ -55,27 +61,27 @@ const Gists = ({
}; };
export const getStaticPaths: GetStaticPaths = async () => { export const getStaticPaths: GetStaticPaths = async () => {
const result = await getGists(); // const result = await getGists();
const next = Number(result?.pageSize.next); // const next = Number(result?.pageSize.next);
const last = Number(result?.pageSize.last); // const last = Number(result?.pageSize.last);
const paths: ( // const paths: (
| string // | string
| { // | {
params: ParsedUrlQuery; // params: ParsedUrlQuery;
locale?: string | undefined; // locale?: string | undefined;
} // }
)[] = []; // )[] = [];
for (let i = next; i <= last; i++) { // for (let i = next; i <= last; i++) {
paths.push({ // paths.push({
params: { // params: {
p: i.toString(), // p: i.toString(),
}, // },
}); // });
} // }
return { return {
paths, paths: [],
fallback: false, fallback: true,
}; };
}; };