Skip to content

Commit b3730f5

Browse files
committed
Improve error handling
1 parent fb6af9e commit b3730f5

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

src/app/conf/2024/speakers/[id]/page.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ type SpeakerProps = { params: { id: string } }
1818

1919
export function generateMetadata({ params }: SpeakerProps): Metadata {
2020
const decodedId = decodeURIComponent(params.id)
21-
const speaker = speakers.find(s => s.username === decodedId)!
21+
const speaker = speakers.find(s => s.username === decodedId)
22+
23+
if (!speaker) {
24+
throw new Error(`Speaker "${decodedId}" not found for details page`)
25+
}
2226

2327
const keywords = [speaker.name, speaker.company, speaker.position].filter(
2428
Boolean,

src/app/conf/2025/schedule/[id]/page.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,15 @@ export default function SessionPage({ params }: SessionProps) {
5555
notFound()
5656
}
5757

58-
// @ts-expect-error -- fixme
59-
session.speakers = (session.speakers || []).map(speaker =>
60-
speakers.find(s => s.username === speaker.username),
61-
)
58+
session.speakers = (session.speakers || []).map(speaker => {
59+
const s = speakers.find(s => s.username === speaker.username)
60+
if (!s) {
61+
throw new Error(
62+
`Speaker "${speaker.username}" not found for "${session.name}"`,
63+
)
64+
}
65+
return s
66+
})
6267

6368
const eventTitle = getEventTitle(
6469
session,

src/app/conf/2025/speakers/[id]/page.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ type SpeakerProps = { params: { id: string } }
2424

2525
export function generateMetadata({ params }: SpeakerProps): Metadata {
2626
const decodedId = decodeURIComponent(params.id)
27-
const speaker = speakers.find(s => s.username === decodedId)!
27+
const speaker = speakers.find(s => s.username === decodedId)
28+
29+
if (!speaker) {
30+
throw new Error(`Speaker "${decodedId}" not found for details page`)
31+
}
2832

2933
const keywords = [speaker.name, speaker.company, speaker.position].filter(
3034
Boolean,
@@ -46,8 +50,9 @@ export function generateStaticParams() {
4650

4751
export default function SpeakerPage({ params }: SpeakerProps) {
4852
const speaker = speakers.find(s => s.username === params.id)
53+
4954
if (!speaker) {
50-
notFound()
55+
throw new Error(`Speaker "${params.id}" not found for details page`)
5156
}
5257

5358
return (

tsconfig.tsbuildinfo

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)