Skip to content

Commit 7bf2006

Browse files
πŸ’„ feat(components/pages/talk): show conference dates
1 parent b5dbe41 commit 7bf2006

File tree

3 files changed

+51
-5
lines changed

3 files changed

+51
-5
lines changed

β€Žsrc/components/pages/talk/events-section-item.tsxβ€Ž

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { FunctionComponent, PropsWithChildren } from 'react';
2+
import { BsFillCalendarEventFill } from 'react-icons/bs';
23
import { CgWebsite } from 'react-icons/cg';
34
import { FaMapMarkedAlt, FaYoutube, FaSpeakerDeck } from 'react-icons/fa';
45

6+
import { FormattedDate } from 'utils/date';
7+
58
import CardOutlined from 'components/shared/card-outlined';
69
import CardOutlinedListItem from 'components/shared/card-outlined-list-item';
710
import Link from 'components/shared/link';
@@ -14,9 +17,10 @@ export type EventsSectionItemProps = {
1417
// Event
1518
eventName: string;
1619
eventLocation: string;
17-
eventStartingDate: string;
18-
eventEndingDate: string;
20+
eventStartingDate: FormattedDate;
21+
eventEndingDate: FormattedDate;
1922
eventWebsite: string;
23+
isSingleDayEvent: boolean;
2024
// Session
2125
sessionAudience: string;
2226
sessionLanguage: string;
@@ -35,6 +39,9 @@ const EventsSectionItem: FunctionComponent<
3539
const {
3640
eventName,
3741
eventLocation,
42+
isSingleDayEvent,
43+
eventStartingDate,
44+
eventEndingDate,
3845
eventWebsite,
3946
sessionSlides,
4047
sessionRecording,
@@ -47,6 +54,23 @@ const EventsSectionItem: FunctionComponent<
4754
{eventLocation}
4855
</CardOutlinedListItem>
4956

57+
<CardOutlinedListItem
58+
icon={<BsFillCalendarEventFill size={20} aria-hidden />}
59+
>
60+
<time dateTime={eventStartingDate.raw}>
61+
{eventStartingDate.formatted}
62+
</time>
63+
64+
{!isSingleDayEvent && (
65+
<>
66+
{'-'}
67+
<time dateTime={eventEndingDate.raw}>
68+
{eventEndingDate.formatted}
69+
</time>
70+
</>
71+
)}
72+
</CardOutlinedListItem>
73+
5074
<CardOutlinedListItem icon={<CgWebsite size={20} aria-hidden />}>
5175
<Link href={eventWebsite} rel="nofollow">
5276
Check their website

β€Žsrc/services/talks-content-service.tsβ€Ž

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { DeepNonNullable } from 'utility-types';
2121

2222
import ContentfulService from 'services/contentful-service';
2323

24-
import { formatDate } from 'utils/date';
24+
import { formatDate, isSingleDayTimeSpan } from 'utils/date';
2525
import { toIndexableCollection } from 'utils/search';
2626

2727
const contentfulServiceInstance = ContentfulService.getInstance();
@@ -223,8 +223,18 @@ const sessionTransformer = (session: DeepNonNullable<Session>) => ({
223223
eventName: session.event?.name,
224224
eventLocation: locationTransformer(session.event?.city),
225225
eventWebsite: session.event?.website,
226-
eventStartingDate: formatters.date(session.event?.startingDate),
227-
eventEndingDate: formatters.date(session.event?.endingDate),
226+
eventStartingDate: {
227+
raw: session.event?.startingDate,
228+
formatted: formatters.date(session.event?.startingDate),
229+
},
230+
eventEndingDate: {
231+
raw: session.event?.endingDate,
232+
formatted: formatters.date(session.event?.endingDate),
233+
},
234+
isSingleDayEvent: isSingleDayTimeSpan(
235+
session.event?.startingDate,
236+
session.event?.endingDate
237+
),
228238
sessionAudience: formatters.audience(session.audience),
229239
sessionLanguage: formatters.language(session.language),
230240
sessionOnline: session.online,

β€Žsrc/utils/date.tsβ€Ž

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,15 @@ export const formatDate = (dateString: string) =>
66
day: 'numeric',
77
year: 'numeric',
88
}).format(new Date(dateString));
9+
10+
export const isSingleDayTimeSpan = (
11+
startingDate: string,
12+
endingDate: string
13+
) => {
14+
return formatDate(startingDate) === formatDate(endingDate);
15+
};
16+
17+
export type FormattedDate = {
18+
raw: string;
19+
formatted: string;
20+
};

0 commit comments

Comments
Β (0)