Skip to content
544 changes: 544 additions & 0 deletions apps/cyberstorm-remix/app/p/packageVersion.tsx

Large diffs are not rendered by default.

491 changes: 491 additions & 0 deletions apps/cyberstorm-remix/app/p/packageVersionWithoutCommunity.tsx

Large diffs are not rendered by default.

85 changes: 85 additions & 0 deletions apps/cyberstorm-remix/app/p/tabs/Readme/PackageVersionReadme.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import { Await, LoaderFunctionArgs } from "react-router";
import { useLoaderData } from "react-router";
import { DapperTs } from "@thunderstore/dapper-ts";
import {
getPublicEnvVariables,
getSessionTools,
} from "cyberstorm/security/publicEnvVariables";
import { Suspense } from "react";
import { SkeletonBox } from "@thunderstore/cyberstorm";
import "./Readme.css";

export async function loader({ params }: LoaderFunctionArgs) {
if (params.namespaceId && params.packageId && params.packageVersion) {
const publicEnvVariables = getPublicEnvVariables(["VITE_API_URL"]);
const dapper = new DapperTs(() => {
return {
apiHost: publicEnvVariables.VITE_API_URL,
sessionId: undefined,
};
});
return {
readme: await dapper.getPackageReadme(
params.namespaceId,
params.packageId,
params.packageVersion
),
};
}
return {
status: "error",
message: "Failed to load readme",
readme: { html: "" },
};
}

export async function clientLoader({ params }: LoaderFunctionArgs) {
if (params.namespaceId && params.packageId && params.packageVersion) {
const tools = getSessionTools();
const dapper = new DapperTs(() => {
return {
apiHost: tools?.getConfig().apiHost,
sessionId: tools?.getConfig().sessionId,
};
});
return {
readme: dapper.getPackageReadme(
params.namespaceId,
params.packageId,
params.packageVersion
),
};
}
return {
status: "error",
message: "Failed to load readme",
readme: { html: "" },
};
}

export default function PackageVersionReadme() {
const { status, message, readme } = useLoaderData<
typeof loader | typeof clientLoader
>();

if (status === "error") return <div>{message}</div>;
return (
<Suspense fallback={<SkeletonBox className="package-readme__skeleton" />}>
<Await
resolve={readme}
errorElement={<div>Error occurred while loading description</div>}
>
{(resolvedValue) => (
<>
<div className="markdown-wrapper">
<div
dangerouslySetInnerHTML={{ __html: resolvedValue.html }}
className="markdown"
/>
</div>
</>
)}
</Await>
</Suspense>
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import { Await, LoaderFunctionArgs } from "react-router";
import { useLoaderData } from "react-router";
import { DapperTs } from "@thunderstore/dapper-ts";
import {
getPublicEnvVariables,
getSessionTools,
} from "cyberstorm/security/publicEnvVariables";
import { Suspense } from "react";
import { SkeletonBox } from "@thunderstore/cyberstorm";
import "./Readme.css";

export async function loader({ params }: LoaderFunctionArgs) {
if (params.namespaceId && params.packageId && params.packageVersion) {
const publicEnvVariables = getPublicEnvVariables(["VITE_API_URL"]);
const dapper = new DapperTs(() => {
return {
apiHost: publicEnvVariables.VITE_API_URL,
sessionId: undefined,
};
});
return {
readme: await dapper.getPackageReadme(
params.namespaceId,
params.packageId,
params.packageVersion
),
};
}
return {
status: "error",
message: "Failed to load readme",
readme: { html: "" },
};
}

export async function clientLoader({ params }: LoaderFunctionArgs) {
if (params.namespaceId && params.packageId && params.packageVersion) {
const tools = getSessionTools();
const dapper = new DapperTs(() => {
return {
apiHost: tools?.getConfig().apiHost,
sessionId: tools?.getConfig().sessionId,
};
});
return {
readme: dapper.getPackageReadme(
params.namespaceId,
params.packageId,
params.packageVersion
),
};
}
return {
status: "error",
message: "Failed to load readme",
readme: { html: "" },
};
}

export default function PackageVersionReadme() {
const { status, message, readme } = useLoaderData<
typeof loader | typeof clientLoader
>();

if (status === "error") return <div>{message}</div>;
return (
<Suspense fallback={<SkeletonBox className="package-readme__skeleton" />}>
<Await
resolve={readme}
errorElement={<div>Error occurred while loading description</div>}
>
{(resolvedValue) => (
<>
<div className="markdown-wrapper">
<div
dangerouslySetInnerHTML={{ __html: resolvedValue.html }}
className="markdown"
/>
</div>
</>
)}
</Await>
</Suspense>
);
}
112 changes: 112 additions & 0 deletions apps/cyberstorm-remix/app/p/tabs/Required/PackageVersionRequired.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import "./Required.css";
// import { Heading, SkeletonBox } from "@thunderstore/cyberstorm";
// import {
// Await,
// LoaderFunctionArgs
// } from "react-router";
// import { useLoaderData, useOutletContext } from "react-router";
// import { ListingDependency } from "~/commonComponents/ListingDependency/ListingDependency";
// import { DapperTs } from "@thunderstore/dapper-ts";
// import { OutletContextShape } from "~/root";
// import {
// getPublicEnvVariables,
// getSessionTools,
// } from "cyberstorm/security/publicEnvVariables";
// import { Suspense } from "react";

// LOADERS ARE WAITING FOR PACKAGE DEPENDENCIES API ENDPOINT

// export async function loader({ params }: LoaderFunctionArgs) {
// if (
// params.communityId &&
// params.namespaceId &&
// params.packageId &&
// params.packageVersion
// ) {
// const publicEnvVariables = getPublicEnvVariables(["VITE_API_URL"]);
// const dapper = new DapperTs(() => {
// return {
// apiHost: publicEnvVariables.VITE_API_URL,
// sessionId: undefined,
// };
// });
// return {
// listing: dapper.getPackageListingDetails(
// params.communityId,
// params.namespaceId,
// params.packageId
// ),
// };
// }
// throw new Response("Listing dependencies not found", { status: 404 });
// }

// export async function clientLoader({ params }: LoaderFunctionArgs) {
// if (
// params.communityId &&
// params.namespaceId &&
// params.packageId &&
// params.packageVersion
// ) {
// const tools = getSessionTools();
// const dapper = new DapperTs(() => {
// return {
// apiHost: tools?.getConfig().apiHost,
// sessionId: tools?.getConfig().sessionId,
// };
// });
// return {
// listing: dapper.getPackageListingDetails(
// params.communityId,
// params.namespaceId,
// params.packageId
// ),
// };
// }
// throw new Response("Listing dependencies not found", { status: 404 });
// }

export default function PackageVersionRequired() {
// const { listing } = useLoaderData<typeof loader | typeof clientLoader>();
// const outletContext = useOutletContext() as OutletContextShape;

return <p>TODO; Waiting for package dependencies API endpoint</p>;

// return (
// <Suspense fallback={<SkeletonBox className="package-required__skeleton" />}>
// <Await
// resolve={listing}
// errorElement={
// <div>Error occurred while loading required dependencies</div>
// }
// >
// {(resolvedValue) => (
// <>
// <div className="required">
// <div className="required__title">
// <Heading csLevel="3" csSize="3">
// Required mods ({resolvedValue.dependencies.length})
// </Heading>
// <span className="required__description">
// This package requires the following packages to work.
// </span>
// </div>
// <div className="required__body">
// {resolvedValue.dependencies.map((dep, key) => {
// return (
// <ListingDependency
// key={key}
// dependency={dep}
// // TODO: Remove when package versiond detail is available
// domain={outletContext.domain}
// />
// );
// })}
// </div>
// </div>
// </>
// )}
// </Await>
// </Suspense>
// );
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import "./Required.css";
// import { Heading, SkeletonBox } from "@thunderstore/cyberstorm";
// import {
// Await,
// LoaderFunctionArgs
// } from "react-router";
// import { useLoaderData, useOutletContext } from "react-router";
// import { ListingDependency } from "~/commonComponents/ListingDependency/ListingDependency";
// import { DapperTs } from "@thunderstore/dapper-ts";
// import { OutletContextShape } from "~/root";
// import {
// getPublicEnvVariables,
// getSessionTools,
// } from "cyberstorm/security/publicEnvVariables";
// import { Suspense } from "react";

// LOADERS ARE WAITING FOR PACKAGE DEPENDENCIES API ENDPOINT

// export async function loader({ params }: LoaderFunctionArgs) {
// if (
// params.communityId &&
// params.namespaceId &&
// params.packageId &&
// params.packageVersion
// ) {
// const publicEnvVariables = getPublicEnvVariables(["VITE_API_URL"]);
// const dapper = new DapperTs(() => {
// return {
// apiHost: publicEnvVariables.VITE_API_URL,
// sessionId: undefined,
// };
// });
// return {
// listing: dapper.getPackageListingDetails(
// params.communityId,
// params.namespaceId,
// params.packageId
// ),
// };
// }
// throw new Response("Listing dependencies not found", { status: 404 });
// }

// export async function clientLoader({ params }: LoaderFunctionArgs) {
// if (
// params.communityId &&
// params.namespaceId &&
// params.packageId &&
// params.packageVersion
// ) {
// const tools = getSessionTools();
// const dapper = new DapperTs(() => {
// return {
// apiHost: tools?.getConfig().apiHost,
// sessionId: tools?.getConfig().sessionId,
// };
// });
// return {
// listing: dapper.getPackageListingDetails(
// params.communityId,
// params.namespaceId,
// params.packageId
// ),
// };
// }
// throw new Response("Listing dependencies not found", { status: 404 });
// }

export default function PackageVersionRequired() {
// const { listing } = useLoaderData<typeof loader | typeof clientLoader>();
// const outletContext = useOutletContext() as OutletContextShape;

return <p>TODO; Waiting for package dependencies API endpoint</p>;

// return (
// <Suspense fallback={<SkeletonBox className="package-required__skeleton" />}>
// <Await
// resolve={listing}
// errorElement={
// <div>Error occurred while loading required dependencies</div>
// }
// >
// {(resolvedValue) => (
// <>
// <div className="required">
// <div className="required__title">
// <Heading csLevel="3" csSize="3">
// Required mods ({resolvedValue.dependencies.length})
// </Heading>
// <span className="required__description">
// This package requires the following packages to work.
// </span>
// </div>
// <div className="required__body">
// {resolvedValue.dependencies.map((dep, key) => {
// return (
// <ListingDependency
// key={key}
// dependency={dep}
// // TODO: Remove when package versiond detail is available
// domain={outletContext.domain}
// />
// );
// })}
// </div>
// </div>
// </>
// )}
// </Await>
// </Suspense>
// );
}
Loading
Loading