Skip to content

Commit 46c36c4

Browse files
committed
feat: added endDate to return from parseEvent. Handled times which are not in UTC time format
1 parent 14fa8da commit 46c36c4

File tree

1 file changed

+58
-33
lines changed

1 file changed

+58
-33
lines changed

api/events.js

Lines changed: 58 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ dayjs.extend(timezone)
1414
const TBD = 'TBD'
1515

1616
export const getEvents = (year) => {
17-
const events_path = year ? `content/${year}/events` : 'content/events';
17+
const events_path = year ? `content/${year}/events` : 'content/events'
1818
const eventFiles = fs.readdirSync(events_path)
1919

2020
const events = eventFiles
@@ -30,13 +30,15 @@ export const getEvents = (year) => {
3030
}
3131

3232
export const getEventBySlug = (slug, year) => {
33-
const event = getDataFromMD(year?`content/${year}/events/${slug}.md`:`content/events/${slug}.md`)
34-
const link = year? `/${year}/schedule/${slug}` : `/schedule/${slug}`;
33+
const event = getDataFromMD(
34+
year ? `content/${year}/events/${slug}.md` : `content/events/${slug}.md`,
35+
)
36+
const link = year ? `/${year}/schedule/${slug}` : `/schedule/${slug}`
3537

3638
return {
3739
slug,
3840
...event,
39-
link
41+
link,
4042
}
4143
}
4244

@@ -59,6 +61,7 @@ export const parseEvent = (event) => {
5961
event.date,
6062
event.UTCStartTime,
6163
event.UTCEndTime,
64+
event.endDate,
6265
)
6366

6467
return {
@@ -68,9 +71,14 @@ export const parseEvent = (event) => {
6871
}
6972

7073
// TODO: refactor
71-
const formatEventDateTime = (date = dayjs.utc(), startTime, endTime) => {
74+
const formatEventDateTime = (
75+
startDate = dayjs.utc(),
76+
startTime,
77+
endTime,
78+
endDate,
79+
) => {
7280
// Date
73-
const [month, day] = date.split('/')
81+
const [month, day] = startDate.split('/')
7482

7583
if (isNaN(month) || isNaN(day)) {
7684
throw new TypeError('date must be in mm/dd format (e.g. 06/12).')
@@ -80,61 +88,78 @@ const formatEventDateTime = (date = dayjs.utc(), startTime, endTime) => {
8088
.utc()
8189
.date(day)
8290
.month(month - 1)
91+
8392
const formattedDate = UTCDate.format('MMM D')
8493

94+
let formattedEndDate = null
95+
96+
if (endDate && endDate !== startDate) {
97+
const [endMonth, endDay] = endDate.split('/')
98+
99+
if (isNaN(endMonth) || isNaN(endDay)) {
100+
throw new TypeError('date must be in mm/dd format (e.g. 06/12).')
101+
}
102+
103+
const endUTCDate = dayjs
104+
.utc()
105+
.date(endDay)
106+
.month(endMonth - 1)
107+
108+
formattedEndDate = endUTCDate.format('MMM D')
109+
}
110+
85111
// Start time
86-
let formattedStartTime = {}
112+
let formattedStartTime = {
113+
utc: TBD,
114+
pt: TBD,
115+
}
87116

88-
if (startTime && startTime !== TBD) {
117+
if (startTime) {
89118
const [startHour, startMinute] = startTime.split(':')
90119

91120
const UTCStartTime = UTCDate.hour(startHour).minute(startMinute)
92121

93-
if (isNaN(UTCStartTime)) {
94-
throw new TypeError(
95-
'UTCStartTime must be in hh:mm format (e.g. 12:30) or be "TDB".',
96-
)
97-
}
98-
99-
const PTStartTime = UTCStartTime.tz('America/Los_Angeles')
122+
if (!isNaN(UTCStartTime)) {
123+
const PTStartTime = UTCStartTime.tz('America/Los_Angeles')
100124

101-
const formattedUTCStartTime = UTCStartTime.format('HH:mm a')
102-
const formattedPTStartTime = PTStartTime.format('HH:mm a')
125+
const formattedUTCStartTime = UTCStartTime.format('HH:mm a')
126+
const formattedPTStartTime = PTStartTime.format('HH:mm a')
103127

104-
formattedStartTime = {
105-
utc: formattedUTCStartTime,
106-
pt: formattedPTStartTime,
128+
formattedStartTime = {
129+
utc: formattedUTCStartTime,
130+
pt: formattedPTStartTime,
131+
}
107132
}
108133
}
109134

110135
// End time
111-
let formattedEndTime = {}
136+
let formattedEndTime = {
137+
utc: TBD,
138+
pt: TBD,
139+
}
112140

113141
if (endTime && endTime !== TBD) {
114142
const [endHour, endMinute] = endTime.split(':')
115143

116144
const UTCEndTime = UTCDate.hour(endHour).minute(endMinute)
117145

118-
if (isNaN(UTCEndTime)) {
119-
throw new TypeError(
120-
'UTCEndTime must be in hh:mm format (e.g. 12:30) or be "TDB".',
121-
)
122-
}
123-
124-
const PTEndTime = UTCEndTime.tz('America/Los_Angeles')
146+
if (!isNaN(UTCEndTime)) {
147+
const PTEndTime = UTCEndTime.tz('America/Los_Angeles')
125148

126-
const formattedUTCEndTime = UTCEndTime.format('HH:mm a')
127-
const formattedPTEndTime = PTEndTime.format('HH:mm a')
149+
const formattedUTCEndTime = UTCEndTime.format('HH:mm a')
150+
const formattedPTEndTime = PTEndTime.format('HH:mm a')
128151

129-
formattedEndTime = {
130-
utc: formattedUTCEndTime,
131-
pt: formattedPTEndTime,
152+
formattedEndTime = {
153+
utc: formattedUTCEndTime,
154+
pt: formattedPTEndTime,
155+
}
132156
}
133157
}
134158

135159
return {
136160
date: formattedDate,
137161
startTime: formattedStartTime,
138162
endTime: formattedEndTime,
163+
endDate: formattedEndDate,
139164
}
140165
}

0 commit comments

Comments
 (0)