chore(talks): show the most recent talks first

This commit is contained in:
Oliver Davies 2023-07-04 07:08:19 +01:00
parent 36d11d7654
commit ba3f644557
2 changed files with 13 additions and 4 deletions

View file

@ -1,12 +1,12 @@
--- ---
import Markdown from "../Markdown.astro"; import Markdown from "../Markdown.astro";
interface Event { export type Event = {
date: string; date: string;
location: string; location: string;
name: string; name: string;
online?: boolean; online?: boolean;
time: string; time?: string;
url?: string; url?: string;
} }

View file

@ -5,8 +5,10 @@ import Layout from "~/layouts/Layout.astro";
import Markdown from "~/components/Markdown.astro"; import Markdown from "~/components/Markdown.astro";
import Slides from "~/components/talk/Slides.astro"; import Slides from "~/components/talk/Slides.astro";
import Video from "~/components/talk/Video.astro"; import Video from "~/components/talk/Video.astro";
import { getSlugFromFile } from "~/utils.ts"; import _ from "lodash";
import type { Event } from "~/components/talk/Events";
import { getCollection } from "astro:content"; import { getCollection } from "astro:content";
import { getSlugFromFile } from "~/utils.ts";
export async function getStaticPaths() { export async function getStaticPaths() {
const talks = await getCollection("talk"); const talks = await getCollection("talk");
@ -21,6 +23,13 @@ export async function getStaticPaths() {
const { Content } = await Astro.props.talk.render(); const { Content } = await Astro.props.talk.render();
const { events, speakerdeck, title, video } = Astro.props.talk.data; const { events, speakerdeck, title, video } = Astro.props.talk.data;
const getOrderedEvents = (events: Record<number, Event>) => {
return _(events)
.sortBy((event: Event) => new Date(event.date))
.reverse()
.value();
};
--- ---
<Layout title={title}> <Layout title={title}>
@ -33,7 +42,7 @@ const { events, speakerdeck, title, video } = Astro.props.talk.data;
{video && <Video id={video.id} type={video.type} />} {video && <Video id={video.id} type={video.type} />}
<Events events={events} /> <Events events={getOrderedEvents(events)} />
<AboutMe /> <AboutMe />
</div> </div>