From 80890eef2aede4d57fe86dacf32fc01d75440205 Mon Sep 17 00:00:00 2001
From: Amy
Date: Thu, 19 Aug 2021 01:47:25 -0400
Subject: [PATCH] Add getRecentEvents()
---
lib/events.ts | 14 ++++-------
lib/news.ts | 37 +++++++++++++++++++++++++++++
pages/index.tsx | 63 ++++++++++++++++++++++++++++---------------------
3 files changed, 78 insertions(+), 36 deletions(-)
diff --git a/lib/events.ts b/lib/events.ts
index be78c66a..c9725f61 100644
--- a/lib/events.ts
+++ b/lib/events.ts
@@ -73,18 +73,14 @@ export async function getUpcomingEvents(): Promise {
const events: Event[] = (
await Promise.all(
[
- { year: currentYear, term: currentTerm },
- { year: nextYear, term: nextTerm },
+ { year: currentYear.toString(), term: currentTerm },
+ { year: nextYear.toString(), term: nextTerm },
].map(async ({ year, term }) => {
try {
- const eventsInTerm = await getEventsByTerm(
- year.toString(),
- TERMS[term]
- );
+ const eventsInTerm = await getEventsByTerm(year, TERMS[term]);
return await Promise.all(
eventsInTerm.map(
- async (slug) =>
- await getEventBySlug(year.toString(), TERMS[term], slug)
+ async (slug) => await getEventBySlug(year, TERMS[term], slug)
)
);
} catch (error) {
@@ -95,7 +91,7 @@ export async function getUpcomingEvents(): Promise {
).flat();
return events
- .filter((ev) => new Date(ev.metadata.date).getTime() > Date.now())
+ .filter((ev) => new Date(ev.metadata.date).getTime() >= Date.now())
.sort((a, b) => {
return (
new Date(a.metadata.date).getTime() -
diff --git a/lib/news.ts b/lib/news.ts
index 0d9b8bdd..6329964b 100644
--- a/lib/news.ts
+++ b/lib/news.ts
@@ -65,3 +65,40 @@ export async function getNewsBySlug(
metadata: metadata as Metadata,
};
}
+
+export async function getRecentNews(): Promise {
+ const today = new Date();
+ const currentYear = today.getFullYear();
+ const currentTerm = Math.trunc(today.getMonth() / 4);
+ const prevYear = currentTerm > 0 ? currentYear : currentYear - 1;
+ const prevTerm = (currentTerm - 1 + 3) % 3;
+
+ const news: News[] = (
+ await Promise.all(
+ [
+ { year: currentYear.toString(), term: currentTerm },
+ { year: prevYear.toString(), term: prevTerm },
+ ].map(async ({ year, term }) => {
+ try {
+ const newsInTerm = await getNewsByTerm(year, TERMS[term]);
+ return await Promise.all(
+ newsInTerm.map(
+ async (slug) => await getNewsBySlug(year, TERMS[term], slug)
+ )
+ );
+ } catch (error) {
+ return [];
+ }
+ })
+ )
+ ).flat();
+
+ return news
+ .filter((news) => new Date(news.metadata.date).getTime() <= Date.now())
+ .sort((a, b) => {
+ return (
+ new Date(b.metadata.date).getTime() -
+ new Date(a.metadata.date).getTime()
+ );
+ });
+}
diff --git a/pages/index.tsx b/pages/index.tsx
index edb4d65c..6fe67c11 100644
--- a/pages/index.tsx
+++ b/pages/index.tsx
@@ -1,6 +1,7 @@
import { ParsedUrlQuery } from "querystring";
import { GetStaticProps } from "next";
+import { MDXRemote } from "next-mdx-remote";
import React from "react";
import { ConnectWithUs } from "@/components/ConnectWithUs";
@@ -11,15 +12,13 @@ import { Image } from "@/components/Image";
import { NewsCard } from "@/components/NewsCard";
import { SocialLinks } from "@/components/SocialLinks";
import { Event, getUpcomingEvents } from "@/lib/events";
-
-import UnavailableContent, {
- metadata as unavailableMetadata,
-} from "../content/playground/unavailable.news.mdx";
+import { News, getRecentNews } from "@/lib/news";
import styles from "./index.module.css";
interface Props {
events: Event[];
+ news: News[];
}
export default function Home(props: Props) {
@@ -54,27 +53,29 @@ export default function Home(props: Props) {
Upcoming Events
See past events here
+ {props.events.length == 0 ? (
+
+ There are no upcoming events right now. Please check back later!
+
+ ) : null}
- {props.events.length > 0 ? (
- props.events
- .slice(0, 2)
- .map((event) => (
-
- ))
- ) : (
-
- There are no upcoming events right now. Please check back
- later!
-
- )}
- {props.events.length > 2 ? (
-
See more upcoming events here
- ) : null}
+ {props.events.length > 0
+ ? props.events
+ .slice(0, 2)
+ .map((event) => (
+
+ ))
+ : null}
+ {props.events.length > 2 ? (
+ See more upcoming events here
+ ) : null}
News
@@ -83,9 +84,16 @@ export default function Home(props: Props) {
See past news here
-
-
-
+ {props.news.length > 0 ? (
+
+
+
+ ) : (
+ There is no news right now. Please check back later!
+ )}
@@ -105,5 +113,6 @@ type Params = ParsedUrlQuery;
export const getStaticProps: GetStaticProps = async () => {
const events = await getUpcomingEvents();
- return { props: { events } };
+ const news = await getRecentNews();
+ return { props: { events, news } };
};