Skip to content

Commit 2c332c4

Browse files
committed
Dedupe code and move semversort to its own file
1 parent 5cd6c54 commit 2c332c4

File tree

4 files changed

+25
-111
lines changed

4 files changed

+25
-111
lines changed

apps/cyberstorm-remix/app/p/tabs/Versions/PackageVersionVersions.tsx

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,21 @@ import "./Versions.css";
22
import {
33
NewTableSort,
44
NewTable,
5-
NewTableLabels,
65
Heading,
76
SkeletonBox,
87
NewLink,
98
} from "@thunderstore/cyberstorm";
109
import { Await, LoaderFunctionArgs } from "react-router";
1110
import { useLoaderData } from "react-router";
1211
import { DapperTs } from "@thunderstore/dapper-ts";
13-
import semverGt from "semver/functions/gt";
14-
import semverLt from "semver/functions/lt";
15-
import {
16-
TableCompareColumnMeta,
17-
TableRow,
18-
} from "@thunderstore/cyberstorm/src/newComponents/Table/Table";
1912
import {
2013
getPublicEnvVariables,
2114
getSessionTools,
2215
} from "cyberstorm/security/publicEnvVariables";
2316
import { Suspense } from "react";
24-
import { isSemver } from "cyberstorm/utils/typeChecks";
2517
import { DownloadLink, InstallLink, ModManagerBanner } from "./common";
18+
import { rowSemverCompare } from "cyberstorm/utils/semverCompare";
19+
import { columns } from "./Versions";
2620

2721
export async function loader({ params }: LoaderFunctionArgs) {
2822
if (params.communityId && params.namespaceId && params.packageId) {
@@ -70,22 +64,6 @@ export async function clientLoader({ params }: LoaderFunctionArgs) {
7064
};
7165
}
7266

73-
function rowSemverCompare(
74-
a: TableRow,
75-
b: TableRow,
76-
columnMeta: TableCompareColumnMeta
77-
) {
78-
if (isSemver(String(a[0].sortValue)) && isSemver(String(b[0].sortValue))) {
79-
if (semverLt(String(a[0].sortValue), String(b[0].sortValue))) {
80-
return columnMeta.direction;
81-
}
82-
if (semverGt(String(a[0].sortValue), String(b[0].sortValue))) {
83-
return -columnMeta.direction;
84-
}
85-
}
86-
return 0;
87-
}
88-
8967
export default function Versions() {
9068
const { communityId, namespaceId, packageId, status, message, versions } =
9169
useLoaderData<typeof loader | typeof clientLoader>();
@@ -154,22 +132,3 @@ export default function Versions() {
154132
</Suspense>
155133
);
156134
}
157-
158-
const columns: NewTableLabels = [
159-
{
160-
value: "Version",
161-
disableSort: false,
162-
columnClasses: "package-versions__version",
163-
},
164-
{
165-
value: "Upload date",
166-
disableSort: false,
167-
columnClasses: "package-versions__upload-date",
168-
},
169-
{
170-
value: "Downloads",
171-
disableSort: false,
172-
columnClasses: "package-versions__downloads",
173-
},
174-
{ value: "Actions", disableSort: true },
175-
];

apps/cyberstorm-remix/app/p/tabs/Versions/PackageVersionWithoutCommunityVersions.tsx

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,21 @@ import "./Versions.css";
22
import {
33
NewTableSort,
44
NewTable,
5-
NewTableLabels,
65
Heading,
76
SkeletonBox,
87
NewLink,
98
} from "@thunderstore/cyberstorm";
109
import { Await, LoaderFunctionArgs } from "react-router";
1110
import { useLoaderData } from "react-router";
1211
import { DapperTs } from "@thunderstore/dapper-ts";
13-
import semverGt from "semver/functions/gt";
14-
import semverLt from "semver/functions/lt";
15-
import {
16-
TableCompareColumnMeta,
17-
TableRow,
18-
} from "@thunderstore/cyberstorm/src/newComponents/Table/Table";
1912
import {
2013
getPublicEnvVariables,
2114
getSessionTools,
2215
} from "cyberstorm/security/publicEnvVariables";
2316
import { Suspense } from "react";
24-
import { isSemver } from "cyberstorm/utils/typeChecks";
2517
import { DownloadLink, InstallLink, ModManagerBanner } from "./common";
18+
import { rowSemverCompare } from "cyberstorm/utils/semverCompare";
19+
import { columns } from "./Versions";
2620

2721
export async function loader({ params }: LoaderFunctionArgs) {
2822
if (params.namespaceId && params.packageId) {
@@ -68,22 +62,6 @@ export async function clientLoader({ params }: LoaderFunctionArgs) {
6862
};
6963
}
7064

71-
function rowSemverCompare(
72-
a: TableRow,
73-
b: TableRow,
74-
columnMeta: TableCompareColumnMeta
75-
) {
76-
if (isSemver(String(a[0].sortValue)) && isSemver(String(b[0].sortValue))) {
77-
if (semverLt(String(a[0].sortValue), String(b[0].sortValue))) {
78-
return columnMeta.direction;
79-
}
80-
if (semverGt(String(a[0].sortValue), String(b[0].sortValue))) {
81-
return -columnMeta.direction;
82-
}
83-
}
84-
return 0;
85-
}
86-
8765
export default function Versions() {
8866
const { namespaceId, packageId, status, message, versions } = useLoaderData<
8967
typeof loader | typeof clientLoader
@@ -152,22 +130,3 @@ export default function Versions() {
152130
</Suspense>
153131
);
154132
}
155-
156-
const columns: NewTableLabels = [
157-
{
158-
value: "Version",
159-
disableSort: false,
160-
columnClasses: "package-versions__version",
161-
},
162-
{
163-
value: "Upload date",
164-
disableSort: false,
165-
columnClasses: "package-versions__upload-date",
166-
},
167-
{
168-
value: "Downloads",
169-
disableSort: false,
170-
columnClasses: "package-versions__downloads",
171-
},
172-
{ value: "Actions", disableSort: true },
173-
];

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

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,14 @@ import {
99
} from "@thunderstore/cyberstorm";
1010
import { Await, LoaderFunctionArgs } from "react-router";
1111
import { useLoaderData } from "react-router";
12-
import { versionsSchema } from "@thunderstore/dapper-ts/src/methods/package";
1312
import { DapperTs } from "@thunderstore/dapper-ts";
14-
import semverGt from "semver/functions/gt";
15-
import semverLt from "semver/functions/lt";
16-
import {
17-
TableCompareColumnMeta,
18-
TableRow,
19-
} from "@thunderstore/cyberstorm/src/newComponents/Table/Table";
2013
import {
2114
getPublicEnvVariables,
2215
getSessionTools,
2316
} from "cyberstorm/security/publicEnvVariables";
2417
import { Suspense } from "react";
25-
import { isSemver } from "cyberstorm/utils/typeChecks";
2618
import { DownloadLink, InstallLink, ModManagerBanner } from "./common";
19+
import { rowSemverCompare } from "cyberstorm/utils/semverCompare";
2720

2821
export async function loader({ params }: LoaderFunctionArgs) {
2922
if (params.communityId && params.namespaceId && params.packageId) {
@@ -71,22 +64,6 @@ export async function clientLoader({ params }: LoaderFunctionArgs) {
7164
};
7265
}
7366

74-
function rowSemverCompare(
75-
a: TableRow,
76-
b: TableRow,
77-
columnMeta: TableCompareColumnMeta
78-
) {
79-
if (isSemver(String(a[0].sortValue)) && isSemver(String(b[0].sortValue))) {
80-
if (semverLt(String(a[0].sortValue), String(b[0].sortValue))) {
81-
return columnMeta.direction;
82-
}
83-
if (semverGt(String(a[0].sortValue), String(b[0].sortValue))) {
84-
return -columnMeta.direction;
85-
}
86-
}
87-
return 0;
88-
}
89-
9067
export default function Versions() {
9168
const { communityId, namespaceId, packageId, status, message, versions } =
9269
useLoaderData<typeof loader | typeof clientLoader>();
@@ -156,7 +133,7 @@ export default function Versions() {
156133
);
157134
}
158135

159-
const columns: NewTableLabels = [
136+
export const columns: NewTableLabels = [
160137
{
161138
value: "Version",
162139
disableSort: false,
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { TableCompareColumnMeta } from "@thunderstore/cyberstorm";
2+
import { TableRow } from "@thunderstore/cyberstorm/src/newComponents/Table/Table";
3+
import { isSemver } from "./typeChecks";
4+
import semverCompare from "semver/functions/compare";
5+
6+
export function rowSemverCompare(
7+
a: TableRow,
8+
b: TableRow,
9+
columnMeta: TableCompareColumnMeta
10+
) {
11+
const av = String(a[0].sortValue);
12+
const bv = String(b[0].sortValue);
13+
14+
if (isSemver(av) && isSemver(bv)) {
15+
return semverCompare(av, bv) * columnMeta.direction;
16+
}
17+
18+
return 0;
19+
}

0 commit comments

Comments
 (0)