Add /events page (#159)
continuous-integration/drone/push Build is passing Details

Closes #111

Blocked by !158

Co-authored-by: Jared He <66887902+jaredjhe@users.noreply.github.com>
Co-authored-by: Aditya Thakral <a3thakra@csclub.uwaterloo.ca>
Reviewed-on: #159
Reviewed-by: Aditya Thakral <a3thakra@csclub.uwaterloo.ca>
Co-authored-by: j285he <j285he@localhost>
Co-committed-by: j285he <j285he@localhost>
This commit is contained in:
Jared He 2021-08-27 18:37:42 -04:00
parent e548bd9c5a
commit 5933dd03b8
3 changed files with 29 additions and 6 deletions

View File

@ -104,7 +104,13 @@ export async function getUpcomingEvents(): Promise<Event[]> {
}); });
} }
export async function getProps(year: string, term: string): Promise<Props> { export async function getEventsPageProps({
year,
term,
}: {
year: string;
term: string;
}): Promise<Props> {
const eventNames = await getEventsByTerm(year, term); const eventNames = await getEventsByTerm(year, term);
const events: Event[] = ( const events: Event[] = (

View File

@ -9,7 +9,7 @@ import { Link } from "@/components/Link";
import { MiniEventCard } from "@/components/MiniEventCard"; import { MiniEventCard } from "@/components/MiniEventCard";
import { import {
Event, Event,
getProps, getEventsPageProps,
getEventYears, getEventYears,
getEventTermsByYear, getEventTermsByYear,
} from "@/lib/events"; } from "@/lib/events";
@ -61,7 +61,7 @@ export default function Term(props: Props) {
key={link.year + link.term} key={link.year + link.term}
/> />
))} ))}
<Link href="/events/archives">Archives</Link> <Link href="/events/archive">Archive</Link>
</div> </div>
{hasFutureEvents && ( {hasFutureEvents && (
<> <>
@ -88,6 +88,14 @@ export default function Term(props: Props) {
</span> </span>
</h2> </h2>
)} )}
{!hasFutureEvents && !hasPastEvents && (
<>
<h2>Events</h2>
There are no upcoming or past events for the{" "}
{`${capitalize(props.term)} ${props.year}`} term. Please check back
later!
</>
)}
<div className={styles.miniEventCards}> <div className={styles.miniEventCards}>
{props.pastEvents.map(({ content, metadata }) => ( {props.pastEvents.map(({ content, metadata }) => (
<MiniEventCard <MiniEventCard
@ -125,9 +133,7 @@ export const getStaticProps: GetStaticProps<Props, Params> = async (
context context
) => { ) => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const { year, term } = context.params!; return { props: await getEventsPageProps(context.params!) };
return { props: await getProps(year, term) };
}; };
export const getStaticPaths: GetStaticPaths<Params> = async () => { export const getStaticPaths: GetStaticPaths<Params> = async () => {

11
pages/events/index.tsx Normal file
View File

@ -0,0 +1,11 @@
import { GetStaticProps } from "next";
import { getCurrentTerm, getEventsPageProps } from "@/lib/events";
import Term, { Props } from "./[year]/[term]/index";
export default Term;
export const getStaticProps: GetStaticProps<Props> = async () => {
return { props: await getEventsPageProps(getCurrentTerm()) };
};