Skip to content

Commit 7b56e33

Browse files
fix: issue where transcript URLs with (em dash) are not found
1 parent f6c3d4b commit 7b56e33

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

src/app/transcript/[...slug]/page.tsx

+22-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { BaseCrumbType } from "@/components/common/BaseCrumbLists";
88
import { findAlternateLanguageForTranscript } from "@/utils/sources";
99
import { LanguageCode } from "@/config";
1010
import { Metadata } from "next";
11-
import { previewImageDimensions } from "@/utils/data";
1211
import { buildMetadata } from "@/utils/metadata";
1312

1413
// forces 404 for paths not generated from `generateStaticParams` function.
@@ -28,8 +27,17 @@ export function generateStaticParams() {
2827

2928
export const generateMetadata = async ({params}: { params: { slug: string[] } }): Promise<Metadata> => {
3029

31-
const slugArray = params.slug;
32-
let transcriptUrl = `/${slugArray.join("/")}`;
30+
const decodedSlug = params.slug.map((segment) => {
31+
try {
32+
return decodeURIComponent(segment);
33+
} catch {
34+
// Hanlde malformed URL encoding
35+
console.error("Invalid URL encoding:", segment);
36+
return "";
37+
}
38+
});
39+
40+
let transcriptUrl = `/${decodedSlug.join("/")}`;
3341

3442
const transcript = allTranscripts.find(
3543
(transcript) => transcript.languageURL === transcriptUrl
@@ -63,8 +71,17 @@ export const generateMetadata = async ({params}: { params: { slug: string[] } })
6371
};
6472

6573
const Page = ({ params }: { params: { slug: string[] } }) => {
66-
const slugArray = params.slug;
67-
let transcriptUrl = `/${slugArray.join("/")}`;
74+
const decodedSlug = params.slug.map((segment) => {
75+
try {
76+
return decodeURIComponent(segment);
77+
} catch {
78+
// Hanlde malformed URL encoding
79+
console.error("Invalid URL encoding:", segment);
80+
return "";
81+
}
82+
});
83+
84+
let transcriptUrl = `/${decodedSlug.join("/")}`;
6885

6986
const transcript = allTranscripts.find(
7087
(transcript) => transcript.languageURL === transcriptUrl

0 commit comments

Comments
 (0)