From bd88de8a9011b54190b5688db527074fb668512b Mon Sep 17 00:00:00 2001 From: Uruk Date: Fri, 22 May 2026 01:44:20 +0200 Subject: [PATCH] fix(seerr): guard SeerrItemRouter query params against undefined releaseYear and mediaType are typed as required but can be undefined or NaN at runtime, so .toString() could throw inside the onPress handler. Coerce every value with String(... ?? fallback). --- components/common/SeerrItemRouter.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/components/common/SeerrItemRouter.tsx b/components/common/SeerrItemRouter.tsx index c6ab28fd..b567ea1d 100644 --- a/components/common/SeerrItemRouter.tsx +++ b/components/common/SeerrItemRouter.tsx @@ -42,7 +42,9 @@ export const TouchableSeerrRouter: React.FC> = ({ onPress={() => { if (!result) return; - // Build URL with query params - avoids Expo Router's strict type checking + // Build URL with query params - avoids Expo Router's strict type checking. + // Every value is coerced defensively: releaseYear/mediaType can be + // undefined or NaN at runtime, so `.toString()` would throw. const params = new URLSearchParams({ ...Object.fromEntries( Object.entries(result).map(([key, value]) => [ @@ -50,11 +52,11 @@ export const TouchableSeerrRouter: React.FC> = ({ String(value ?? ""), ]), ), - mediaTitle, - releaseYear: releaseYear.toString(), - canRequest: canRequest.toString(), - posterSrc, - mediaType: mediaType.toString(), + mediaTitle: mediaTitle ?? "", + releaseYear: String(releaseYear ?? ""), + canRequest: String(canRequest ?? false), + posterSrc: posterSrc ?? "", + mediaType: String(mediaType ?? ""), }); router.push(