@@ -41,21 +41,37 @@ import TiltedCard from "@/components/TiltedCard";
4141import { lunalink } from " @bearstudio/lunalink" ;
4242import { ROUTES } from " @/routes.gen" ;
4343import { isEmpty } from " remeda" ;
44+ import RelatedEvents from " @/components/RelatedEvents/index.astro" ;
4445
4546export async function getStaticPaths() {
46- const events = await getEventsCollection ();
47+ const allEvents = await getEventsCollection ();
4748
4849 return Promise .all (
49- events .map (async (event ) => ({
50- params: { id: event .id },
51- props: {
52- event ,
53- },
54- })),
50+ allEvents .map (async (event ) => {
51+ const relatedEvents = allEvents
52+ .filter (
53+ (e ) =>
54+ e .id !== event .id &&
55+ event .data ._computed .city ?.id !== undefined &&
56+ e .data ._computed .city ?.id === event .data ._computed .city ?.id &&
57+ (dayjs (e .data .date ).isAfter (dayjs ()) ||
58+ dayjs (e .data .date ).isAfter (dayjs ().subtract (30 , " day" ))),
59+ )
60+ .sort ((a , b ) => dayjs (a .data .date ).diff (dayjs (b .data .date )))
61+ .slice (0 , 3 );
62+
63+ return {
64+ params: { id: event .id },
65+ props: {
66+ event ,
67+ relatedEvents ,
68+ },
69+ };
70+ }),
5571 );
5672}
5773
58- const { event } = Astro .props ;
74+ const { event, relatedEvents } = Astro .props ;
5975
6076const partners = await getEntries (event .data .partners ?? []);
6177const speakers = await getEntries (event .data ._computed .speakers ?? []);
@@ -65,7 +81,6 @@ const coOrganizers = (await getEntries(event.data.coOrganizers ?? [])).filter(
6581const sponsors = await getEntries (
6682 (event .data .sponsors ?? []).map ((s ) => s .slug ),
6783);
68-
6984const navItems = await getEventNavItems (event .id );
7085
7186const { Content } = await render (event );
@@ -678,6 +693,8 @@ const ctaEventMetadata = {
678693 </a >
679694 </div >
680695
696+ <RelatedEvents currentEvent ={ event } relatedEvents ={ relatedEvents } />
697+
681698 <div class =" py-8 md:py-12" >
682699 <JoinTheCommunity />
683700 </div >
0 commit comments