|
|
|
@ -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() - |
|
|
|
|