Refactor getUpcomingEvents()

pull/162/head
Amy 2 years ago
parent 7f64aadebc
commit cb3408990d
  1. 57
      lib/events.ts

@ -70,37 +70,32 @@ export async function getUpcomingEvents(): Promise<Event[]> {
const nextYear = currentTerm < 2 ? currentYear : currentYear + 1;
const nextTerm = (currentTerm + 1) % 3;
let currentEvents: Event[] = [];
try {
currentEvents = await Promise.all(
(
await getEventsByTerm(currentYear.toString(), TERMS[currentTerm])
).map(
async (slug) =>
await getEventBySlug(currentYear.toString(), TERMS[currentTerm], slug)
)
);
} catch (error) {
currentEvents = [];
}
let nextEvents: Event[] = [];
try {
nextEvents = await Promise.all(
(
await getEventsByTerm(nextYear.toString(), TERMS[nextTerm])
).map(
async (slug) =>
await getEventBySlug(nextYear.toString(), TERMS[nextTerm], slug)
)
);
} catch (error) {
nextEvents = [];
}
return currentEvents
.concat(nextEvents)
.filter((ev) => {
return new Date(ev.metadata.date).getTime() > Date.now();
})
const events: Event[] = (
await Promise.all(
[
{ year: currentYear, term: currentTerm },
{ year: nextYear, term: nextTerm },
].map(async ({ year, term }) => {
try {
const eventsInTerm = await getEventsByTerm(
year.toString(),
TERMS[term]
);
return await Promise.all(
eventsInTerm.map(
async (slug) =>
await getEventBySlug(year.toString(), TERMS[term], slug)
)
);
} catch (error) {
return [];
}
})
)
).flat();
return events
.filter((ev) => new Date(ev.metadata.date).getTime() > Date.now())
.sort((a, b) => {
return (
new Date(a.metadata.date).getTime() -

Loading…
Cancel
Save