Skip to content

Commit f371d32

Browse files
committed
Enhance error handling in all package required routes
1 parent 5ac0d36 commit f371d32

File tree

3 files changed

+195
-119
lines changed

3 files changed

+195
-119
lines changed

apps/cyberstorm-remix/app/p/tabs/Required/PackageVersionRequired.tsx

Lines changed: 52 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,60 +12,76 @@ import { DapperTs } from "@thunderstore/dapper-ts";
1212

1313
export async function loader({ params, request }: LoaderFunctionArgs) {
1414
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-
});
15+
const { dapper } = getLoaderTools();
2216
const searchParams = new URL(request.url).searchParams;
23-
const page = searchParams.get("page");
17+
const page = parseIntegerSearchParam(searchParams.get("page"));
2418

25-
return {
26-
version: await dapper.getPackageVersionDetails(
19+
try {
20+
const version = await dapper.getPackageVersionDetails(
2721
params.namespaceId,
2822
params.packageId,
2923
params.packageVersion
30-
),
31-
dependencies: await dapper.getPackageVersionDependencies(
24+
);
25+
const dependencies = await dapper.getPackageVersionDependencies(
3226
params.namespaceId,
3327
params.packageId,
3428
params.packageVersion,
35-
page === null ? undefined : Number(page)
36-
),
37-
};
29+
page
30+
);
31+
32+
return {
33+
version,
34+
dependencies,
35+
};
36+
} catch (error) {
37+
handleLoaderError(error, { mappings: packageDependenciesErrorMappings });
38+
}
3839
}
39-
throw new Response("Package version dependencies not found", { status: 404 });
40+
throwUserFacingPayloadResponse({
41+
headline: "Dependencies not found.",
42+
description: "We could not find the requested version dependencies.",
43+
category: "not_found",
44+
status: 404,
45+
});
4046
}
4147

42-
export async function clientLoader({ params, request }: LoaderFunctionArgs) {
48+
export function clientLoader({ params, request }: LoaderFunctionArgs) {
4349
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-
});
50+
const { dapper } = getLoaderTools();
5151
const searchParams = new URL(request.url).searchParams;
52-
const page = searchParams.get("page");
52+
const page = parseIntegerSearchParam(searchParams.get("page"));
5353

54-
return {
55-
version: dapper.getPackageVersionDetails(
54+
const version = dapper
55+
.getPackageVersionDetails(
5656
params.namespaceId,
5757
params.packageId,
5858
params.packageVersion
59-
),
60-
dependencies: dapper.getPackageVersionDependencies(
59+
)
60+
.catch((error) =>
61+
handleLoaderError(error, { mappings: packageDependenciesErrorMappings })
62+
);
63+
const dependencies = dapper
64+
.getPackageVersionDependencies(
6165
params.namespaceId,
6266
params.packageId,
6367
params.packageVersion,
64-
page === null ? undefined : Number(page)
65-
),
68+
page
69+
)
70+
.catch((error) =>
71+
handleLoaderError(error, { mappings: packageDependenciesErrorMappings })
72+
);
73+
74+
return {
75+
version,
76+
dependencies,
6677
};
6778
}
68-
throw new Response("Package version dependencies not found", { status: 404 });
79+
throwUserFacingPayloadResponse({
80+
headline: "Dependencies not found.",
81+
description: "We could not find the requested version dependencies.",
82+
category: "not_found",
83+
status: 404,
84+
});
6985
}
7086

7187
export default function PackageVersionRequired() {
@@ -88,3 +104,7 @@ export default function PackageVersionRequired() {
88104
</Suspense>
89105
);
90106
}
107+
108+
export function ErrorBoundary() {
109+
return <NimbusDefaultRouteErrorBoundary />;
110+
}

apps/cyberstorm-remix/app/p/tabs/Required/PackageVersionWithoutCommunityRequired.tsx

Lines changed: 52 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,60 +12,76 @@ import { DapperTs } from "@thunderstore/dapper-ts";
1212

1313
export async function loader({ params, request }: LoaderFunctionArgs) {
1414
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-
});
15+
const { dapper } = getLoaderTools();
2216
const searchParams = new URL(request.url).searchParams;
23-
const page = searchParams.get("page");
17+
const page = parseIntegerSearchParam(searchParams.get("page"));
2418

25-
return {
26-
version: await dapper.getPackageVersionDetails(
19+
try {
20+
const version = await dapper.getPackageVersionDetails(
2721
params.namespaceId,
2822
params.packageId,
2923
params.packageVersion
30-
),
31-
dependencies: await dapper.getPackageVersionDependencies(
24+
);
25+
const dependencies = await dapper.getPackageVersionDependencies(
3226
params.namespaceId,
3327
params.packageId,
3428
params.packageVersion,
35-
page === null ? undefined : Number(page)
36-
),
37-
};
29+
page
30+
);
31+
32+
return {
33+
version,
34+
dependencies,
35+
};
36+
} catch (error) {
37+
handleLoaderError(error, { mappings: packageDependenciesErrorMappings });
38+
}
3839
}
39-
throw new Response("Package version dependencies not found", { status: 404 });
40+
throwUserFacingPayloadResponse({
41+
headline: "Dependencies not found.",
42+
description: "We could not find the requested version dependencies.",
43+
category: "not_found",
44+
status: 404,
45+
});
4046
}
4147

42-
export async function clientLoader({ params, request }: LoaderFunctionArgs) {
48+
export function clientLoader({ params, request }: LoaderFunctionArgs) {
4349
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-
});
50+
const { dapper } = getLoaderTools();
5151
const searchParams = new URL(request.url).searchParams;
52-
const page = searchParams.get("page");
52+
const page = parseIntegerSearchParam(searchParams.get("page"));
5353

54-
return {
55-
version: dapper.getPackageVersionDetails(
54+
const version = dapper
55+
.getPackageVersionDetails(
5656
params.namespaceId,
5757
params.packageId,
5858
params.packageVersion
59-
),
60-
dependencies: dapper.getPackageVersionDependencies(
59+
)
60+
.catch((error) =>
61+
handleLoaderError(error, { mappings: packageDependenciesErrorMappings })
62+
);
63+
const dependencies = dapper
64+
.getPackageVersionDependencies(
6165
params.namespaceId,
6266
params.packageId,
6367
params.packageVersion,
64-
page === null ? undefined : Number(page)
65-
),
68+
page
69+
)
70+
.catch((error) =>
71+
handleLoaderError(error, { mappings: packageDependenciesErrorMappings })
72+
);
73+
74+
return {
75+
version,
76+
dependencies,
6677
};
6778
}
68-
throw new Response("Package version dependencies not found", { status: 404 });
79+
throwUserFacingPayloadResponse({
80+
headline: "Dependencies not found.",
81+
description: "We could not find the requested version dependencies.",
82+
category: "not_found",
83+
status: 404,
84+
});
6985
}
7086

7187
export default function PackageVersionWithoutCommunityRequired() {
@@ -88,3 +104,7 @@ export default function PackageVersionWithoutCommunityRequired() {
88104
</Suspense>
89105
);
90106
}
107+
108+
export function ErrorBoundary() {
109+
return <NimbusDefaultRouteErrorBoundary />;
110+
}

0 commit comments

Comments
 (0)