1- import {
2- getPublicEnvVariables ,
3- getSessionTools ,
4- } from "cyberstorm/security/publicEnvVariables" ;
1+ import { NimbusDefaultRouteErrorBoundary } from "cyberstorm/utils/errors/NimbusErrorBoundary" ;
2+ import { handleLoaderError } from "cyberstorm/utils/errors/handleLoaderError" ;
3+ import { throwUserFacingPayloadResponse } from "cyberstorm/utils/errors/userFacingErrorResponse" ;
4+ import { getLoaderTools } from "cyberstorm/utils/getLoaderTools" ;
5+ import { parseIntegerSearchParam } from "cyberstorm/utils/searchParamsUtils" ;
56import { Suspense } from "react" ;
67import { type LoaderFunctionArgs } from "react-router" ;
78import { Await , useLoaderData } from "react-router" ;
89import { PaginatedDependencies } from "~/commonComponents/PaginatedDependencies/PaginatedDependencies" ;
910
1011import { SkeletonBox } from "@thunderstore/cyberstorm" ;
11- import { DapperTs } from "@thunderstore/dapper-ts" ;
12+
13+ import { packageDependenciesErrorMappings } from "./Required" ;
1214
1315export async function loader ( { params, request } : LoaderFunctionArgs ) {
1416 if ( params . namespaceId && params . packageId && params . packageVersion ) {
15- const publicEnvVariables = getPublicEnvVariables ( [ "VITE_API_URL" ] ) ;
16- const dapper = new DapperTs ( ( ) => {
17- return {
18- apiHost : publicEnvVariables . VITE_API_URL ,
19- sessionId : undefined ,
20- } ;
21- } ) ;
17+ const { dapper } = getLoaderTools ( ) ;
2218 const searchParams = new URL ( request . url ) . searchParams ;
23- const page = searchParams . get ( "page" ) ;
19+ const page = parseIntegerSearchParam ( searchParams . get ( "page" ) ) ;
2420
25- return {
26- version : await dapper . getPackageVersionDetails (
21+ try {
22+ const version = await dapper . getPackageVersionDetails (
2723 params . namespaceId ,
2824 params . packageId ,
2925 params . packageVersion
30- ) ,
31- dependencies : await dapper . getPackageVersionDependencies (
26+ ) ;
27+ const dependencies = await dapper . getPackageVersionDependencies (
3228 params . namespaceId ,
3329 params . packageId ,
3430 params . packageVersion ,
35- page === null ? undefined : Number ( page )
36- ) ,
37- } ;
31+ page
32+ ) ;
33+
34+ return {
35+ version,
36+ dependencies,
37+ } ;
38+ } catch ( error ) {
39+ handleLoaderError ( error , { mappings : packageDependenciesErrorMappings } ) ;
40+ }
3841 }
39- throw new Response ( "Package version dependencies not found" , { status : 404 } ) ;
42+ throwUserFacingPayloadResponse ( {
43+ headline : "Dependencies not found." ,
44+ description : "We could not find the requested version dependencies." ,
45+ category : "not_found" ,
46+ status : 404 ,
47+ } ) ;
4048}
4149
42- export async function clientLoader ( { params, request } : LoaderFunctionArgs ) {
50+ export function clientLoader ( { params, request } : LoaderFunctionArgs ) {
4351 if ( params . namespaceId && params . packageId && params . packageVersion ) {
44- const tools = getSessionTools ( ) ;
45- const dapper = new DapperTs ( ( ) => {
46- return {
47- apiHost : tools ?. getConfig ( ) . apiHost ,
48- sessionId : tools ?. getConfig ( ) . sessionId ,
49- } ;
50- } ) ;
52+ const { dapper } = getLoaderTools ( ) ;
5153 const searchParams = new URL ( request . url ) . searchParams ;
52- const page = searchParams . get ( "page" ) ;
54+ const page = parseIntegerSearchParam ( searchParams . get ( "page" ) ) ;
5355
54- return {
55- version : dapper . getPackageVersionDetails (
56+ const version = dapper
57+ . getPackageVersionDetails (
5658 params . namespaceId ,
5759 params . packageId ,
5860 params . packageVersion
59- ) ,
60- dependencies : dapper . getPackageVersionDependencies (
61+ )
62+ . catch ( ( error ) =>
63+ handleLoaderError ( error , { mappings : packageDependenciesErrorMappings } )
64+ ) ;
65+ const dependencies = dapper
66+ . getPackageVersionDependencies (
6167 params . namespaceId ,
6268 params . packageId ,
6369 params . packageVersion ,
64- page === null ? undefined : Number ( page )
65- ) ,
70+ page
71+ )
72+ . catch ( ( error ) =>
73+ handleLoaderError ( error , { mappings : packageDependenciesErrorMappings } )
74+ ) ;
75+
76+ return {
77+ version,
78+ dependencies,
6679 } ;
6780 }
68- throw new Response ( "Package version dependencies not found" , { status : 404 } ) ;
81+ throwUserFacingPayloadResponse ( {
82+ headline : "Dependencies not found." ,
83+ description : "We could not find the requested version dependencies." ,
84+ category : "not_found" ,
85+ status : 404 ,
86+ } ) ;
6987}
7088
7189export default function PackageVersionWithoutCommunityRequired ( ) {
@@ -88,3 +106,7 @@ export default function PackageVersionWithoutCommunityRequired() {
88106 </ Suspense >
89107 ) ;
90108}
109+
110+ export function ErrorBoundary ( ) {
111+ return < NimbusDefaultRouteErrorBoundary /> ;
112+ }
0 commit comments