From 52614ad49929748404202c724a99b6eb23d901b4 Mon Sep 17 00:00:00 2001 From: Stalin S Date: Thu, 21 May 2026 13:41:05 +0530 Subject: [PATCH] Fix TypeError in PackageDetails when licenses or dependencies are parsed as strings --- frontend/src/pages/PackageDetails.tsx | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/frontend/src/pages/PackageDetails.tsx b/frontend/src/pages/PackageDetails.tsx index 13d3cfa..47aba0b 100644 --- a/frontend/src/pages/PackageDetails.tsx +++ b/frontend/src/pages/PackageDetails.tsx @@ -75,6 +75,19 @@ export default function PackageDetails({ packageName, onBack }: PackageDetailsPr ); + const ensureArray = (val: any): string[] => { + if (!val) return []; + if (Array.isArray(val)) return val; + if (typeof val === 'string') { + return val.split(/[\s,]+/).filter(Boolean); + } + return []; + }; + + const parsedLicenses = ensureArray(pkg.licenses); + const parsedDepends = ensureArray(pkg.depends); + const parsedOptDepends = ensureArray(pkg.opt_depends); + return (
{/* Header */} @@ -123,7 +136,7 @@ export default function PackageDetails({ packageName, onBack }: PackageDetailsPr
{pkg.installed_version &&
Installed Version{pkg.installed_version}
} {pkg.arch &&
Architecture{pkg.arch}
} - {pkg.licenses && pkg.licenses.length > 0 &&
License{pkg.licenses.join(', ')}
} + {parsedLicenses.length > 0 &&
License{parsedLicenses.join(', ')}
} {pkg.size &&
Download Size{pkg.size}
} {pkg.install_size &&
Installed Size{pkg.install_size}
} {pkg.packager &&
Packager{pkg.packager}
} @@ -140,13 +153,13 @@ export default function PackageDetails({ packageName, onBack }: PackageDetailsPr {/* Right column */}
{/* Dependencies */} - {pkg.depends && pkg.depends.length > 0 && ( + {parsedDepends.length > 0 && (
- Dependencies ({pkg.depends.length}) + Dependencies ({parsedDepends.length})
- {pkg.depends.map(dep => ( + {parsedDepends.map(dep => ( {dep} @@ -156,13 +169,13 @@ export default function PackageDetails({ packageName, onBack }: PackageDetailsPr )} {/* Optional deps */} - {pkg.opt_depends && pkg.opt_depends.length > 0 && ( + {parsedOptDepends.length > 0 && (
- Optional Dependencies ({pkg.opt_depends.length}) + Optional Dependencies ({parsedOptDepends.length})
- {pkg.opt_depends.map(dep => ( + {parsedOptDepends.map(dep => ( {dep}