diff --git a/lib/events.ts b/lib/events.ts index 1b9f4b4b..be78c66a 100644 --- a/lib/events.ts +++ b/lib/events.ts @@ -70,37 +70,32 @@ export async function getUpcomingEvents(): Promise { 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() -