Skip to content

Commit 1b57d78

Browse files
committed
Update PaginatedDependencies usage
- loader fetches and resolves dependencies - clientLoader returns promises - Resolve promises with Await and render skeletonbox - Pass only resolved dependencies to PaginatedDependencies Refs. TS-2750
1 parent 0a55a7f commit 1b57d78

File tree

3 files changed

+58
-19
lines changed

3 files changed

+58
-19
lines changed

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
import { Suspense } from "react";
12
import { type LoaderFunctionArgs } from "react-router";
2-
import { useLoaderData } from "react-router";
3+
import { useLoaderData, Await } from "react-router";
34
import { DapperTs } from "@thunderstore/dapper-ts";
5+
import { SkeletonBox } from "@thunderstore/cyberstorm";
6+
import { PaginatedDependencies } from "~/commonComponents/PaginatedDependencies/PaginatedDependencies";
47
import {
58
getPublicEnvVariables,
69
getSessionTools,
710
} from "cyberstorm/security/publicEnvVariables";
8-
import { PaginatedDependencies } from "~/commonComponents/PaginatedDependencies/PaginatedDependencies";
911

1012
export async function loader({ params, request }: LoaderFunctionArgs) {
1113
if (params.namespaceId && params.packageId && params.packageVersion) {
@@ -66,11 +68,22 @@ export async function clientLoader({ params, request }: LoaderFunctionArgs) {
6668
}
6769

6870
export default function PackageVersionRequired() {
69-
const { version, dependencies } = useLoaderData<
70-
typeof loader | typeof clientLoader
71-
>();
71+
const { dependencies } = useLoaderData();
7272

7373
return (
74-
<PaginatedDependencies version={version} dependencies={dependencies} />
74+
<Suspense
75+
fallback={<SkeletonBox className="paginated-dependencies__skeleton" />}
76+
>
77+
<Await
78+
resolve={dependencies}
79+
errorElement={
80+
<div>Error occurred while loading required dependencies</div>
81+
}
82+
>
83+
{(resolvedDependencies) => (
84+
<PaginatedDependencies dependencies={resolvedDependencies} />
85+
)}
86+
</Await>
87+
</Suspense>
7588
);
7689
}

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

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
import { Suspense } from "react";
12
import { type LoaderFunctionArgs } from "react-router";
2-
import { useLoaderData } from "react-router";
3+
import { useLoaderData, Await } from "react-router";
34
import { DapperTs } from "@thunderstore/dapper-ts";
5+
import { SkeletonBox } from "@thunderstore/cyberstorm";
6+
import { PaginatedDependencies } from "~/commonComponents/PaginatedDependencies/PaginatedDependencies";
47
import {
58
getPublicEnvVariables,
69
getSessionTools,
710
} from "cyberstorm/security/publicEnvVariables";
8-
import { PaginatedDependencies } from "~/commonComponents/PaginatedDependencies/PaginatedDependencies";
911

1012
export async function loader({ params, request }: LoaderFunctionArgs) {
1113
if (params.namespaceId && params.packageId && params.packageVersion) {
@@ -65,12 +67,23 @@ export async function clientLoader({ params, request }: LoaderFunctionArgs) {
6567
throw new Response("Package version dependencies not found", { status: 404 });
6668
}
6769

68-
export default function PackageVersionWithoutCommunityRequired() {
69-
const { version, dependencies } = useLoaderData<
70-
typeof loader | typeof clientLoader
71-
>();
70+
export default function PackageVersionRequired() {
71+
const { dependencies } = useLoaderData();
7272

7373
return (
74-
<PaginatedDependencies version={version} dependencies={dependencies} />
74+
<Suspense
75+
fallback={<SkeletonBox className="paginated-dependencies__skeleton" />}
76+
>
77+
<Await
78+
resolve={dependencies}
79+
errorElement={
80+
<div>Error occurred while loading required dependencies</div>
81+
}
82+
>
83+
{(resolvedDependencies) => (
84+
<PaginatedDependencies dependencies={resolvedDependencies} />
85+
)}
86+
</Await>
87+
</Suspense>
7588
);
7689
}

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
import { Suspense } from "react";
12
import { type LoaderFunctionArgs } from "react-router";
2-
import { useLoaderData } from "react-router";
3+
import { useLoaderData, Await } from "react-router";
34
import { DapperTs } from "@thunderstore/dapper-ts";
5+
import { SkeletonBox } from "@thunderstore/cyberstorm";
6+
import { PaginatedDependencies } from "~/commonComponents/PaginatedDependencies/PaginatedDependencies";
47
import {
58
getPublicEnvVariables,
69
getSessionTools,
710
} from "cyberstorm/security/publicEnvVariables";
8-
import { PaginatedDependencies } from "~/commonComponents/PaginatedDependencies/PaginatedDependencies";
911

1012
export async function loader({ params, request }: LoaderFunctionArgs) {
1113
if (params.communityId && params.namespaceId && params.packageId) {
@@ -76,11 +78,22 @@ export async function clientLoader({ params, request }: LoaderFunctionArgs) {
7678
}
7779

7880
export default function PackageVersionRequired() {
79-
const { version, dependencies } = useLoaderData<
80-
typeof loader | typeof clientLoader
81-
>();
81+
const { dependencies } = useLoaderData();
8282

8383
return (
84-
<PaginatedDependencies version={version} dependencies={dependencies} />
84+
<Suspense
85+
fallback={<SkeletonBox className="paginated-dependencies__skeleton" />}
86+
>
87+
<Await
88+
resolve={dependencies}
89+
errorElement={
90+
<div>Error occurred while loading required dependencies</div>
91+
}
92+
>
93+
{(resolvedDependencies) => (
94+
<PaginatedDependencies dependencies={resolvedDependencies} />
95+
)}
96+
</Await>
97+
</Suspense>
8598
);
8699
}

0 commit comments

Comments
 (0)