@@ -8,7 +8,6 @@ import { BaseCrumbType } from "@/components/common/BaseCrumbLists";
8
8
import { findAlternateLanguageForTranscript } from "@/utils/sources" ;
9
9
import { LanguageCode } from "@/config" ;
10
10
import { Metadata } from "next" ;
11
- import { previewImageDimensions } from "@/utils/data" ;
12
11
import { buildMetadata } from "@/utils/metadata" ;
13
12
14
13
// forces 404 for paths not generated from `generateStaticParams` function.
@@ -28,8 +27,17 @@ export function generateStaticParams() {
28
27
29
28
export const generateMetadata = async ( { params} : { params : { slug : string [ ] } } ) : Promise < Metadata > => {
30
29
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 ( "/" ) } ` ;
33
41
34
42
const transcript = allTranscripts . find (
35
43
( transcript ) => transcript . languageURL === transcriptUrl
@@ -63,8 +71,17 @@ export const generateMetadata = async ({params}: { params: { slug: string[] } })
63
71
} ;
64
72
65
73
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 ( "/" ) } ` ;
68
85
69
86
const transcript = allTranscripts . find (
70
87
( transcript ) => transcript . languageURL === transcriptUrl
0 commit comments