Implement event info page getStaticPaths
This commit is contained in:
parent
4a785bbfea
commit
2c84e60d06
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "www-new",
|
"name": "website",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
import { ParsedUrlQuery } from "querystring";
|
||||||
|
|
||||||
|
import { GetStaticPaths, GetStaticProps } from "next";
|
||||||
|
import { MDXRemote } from "next-mdx-remote";
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
import { EventCard } from "../../../../components/EventCard";
|
||||||
|
import {
|
||||||
|
Event,
|
||||||
|
getEventYears,
|
||||||
|
getEventTermsByYear,
|
||||||
|
getEventsByTerm,
|
||||||
|
getEventBySlug,
|
||||||
|
} from "../../../../lib/events";
|
||||||
|
|
||||||
|
export default function EventInfoPage(props: Props) {
|
||||||
|
return <p>Hello, world!</p>;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
// event: Event;
|
||||||
|
event: string;
|
||||||
|
poster?: string;
|
||||||
|
registerLink?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Params extends ParsedUrlQuery {
|
||||||
|
year: string;
|
||||||
|
term: string;
|
||||||
|
event: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getStaticProps: GetStaticProps<Props, Params> = async () => {
|
||||||
|
return {
|
||||||
|
props: {
|
||||||
|
event: "test",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getStaticPaths: GetStaticPaths<Params> = async () => {
|
||||||
|
const years = await getEventYears();
|
||||||
|
const terms = (
|
||||||
|
await Promise.all(
|
||||||
|
years.map(async (year) => {
|
||||||
|
const termsInYear = await getEventTermsByYear(year);
|
||||||
|
return termsInYear.map((term) => ({ year, term }));
|
||||||
|
})
|
||||||
|
)
|
||||||
|
).flat();
|
||||||
|
const events = (
|
||||||
|
await Promise.all(
|
||||||
|
terms.map(async (term) => {
|
||||||
|
const eventsInYear = await getEventsByTerm(term.year, term.term);
|
||||||
|
return eventsInYear.map((event) => {
|
||||||
|
return { year: term.year, term: term.term, event: event };
|
||||||
|
});
|
||||||
|
})
|
||||||
|
)
|
||||||
|
).flat();
|
||||||
|
|
||||||
|
return {
|
||||||
|
paths: events.map((params) => ({ params })),
|
||||||
|
fallback: false,
|
||||||
|
};
|
||||||
|
};
|
Loading…
Reference in New Issue