Skip to content

Commit 4106cbf

Browse files
committed
sort resource entries
1 parent 8ec5ed6 commit 4106cbf

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

src/routes/Resources/ResourcePage.tsx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { useEffect, useState } from "react";
22
import { useParams } from "react-router";
3-
import { JsonData } from "./types";
3+
import { JsonData, Entry } from "./types";
44
import ResourceCard from "./ResourceCard";
5+
import { sortEntries } from "./utils";
56

67
const ResourcePage = () => {
78
const { category } = useParams();
89
const [data, setData] = useState<JsonData | null>(null);
10+
const [entries, setEntries] = useState<Entry[]>([]);
911

1012
useEffect(() => {
1113
const fetchData = async () => {
@@ -19,14 +21,14 @@ const ResourcePage = () => {
1921
}
2022
};
2123

22-
fetchData().then(
23-
(json) => {
24-
setData(json);
25-
},
26-
() => {
27-
setData({ pageName: "", entries: [] });
28-
},
29-
);
24+
fetchData()
25+
.then((json) => {
26+
if (json.entries.length > 0) {
27+
setData(json);
28+
setEntries(sortEntries(json.entries));
29+
}
30+
})
31+
.catch(console.error);
3032
}, [category]);
3133

3234
if (data) {
@@ -38,7 +40,7 @@ const ResourcePage = () => {
3840
</h3>
3941
<div className="flex w-full justify-center">
4042
<div className="mx-4 flex flex-wrap justify-center gap-6 sm:w-5/6 xl:w-3/4">
41-
{data.entries.map((e) => (
43+
{entries.map((e) => (
4244
<ResourceCard entry={e} key={e.title} />
4345
))}
4446
</div>
@@ -47,5 +49,7 @@ const ResourcePage = () => {
4749
</>
4850
);
4951
}
52+
53+
return <></>;
5054
};
5155
export default ResourcePage;

src/routes/Resources/utils.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { Entry } from "./types";
2+
3+
export const sortEntries = (entries: Entry[]) =>
4+
entries.sort((a, b) => (sanitize(a.title) < sanitize(b.title) ? -1 : 1));
5+
6+
const sanitize = (title: string) =>
7+
title.toLowerCase().replace("the", "").trim();

0 commit comments

Comments
 (0)