Skip to content

Commit afea594

Browse files
committed
Use useLoadingState hook in route files
1 parent 68e39a6 commit afea594

File tree

10 files changed

+51
-119
lines changed

10 files changed

+51
-119
lines changed

frontend/src/routes/accolade.jsx

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@ import { mdiArrowLeft, mdiArrowRight, mdiLink, mdiViewGridPlus } from "@mdi/js";
22
import Icon from "@mdi/react";
33
import { useEffect, useMemo, useState } from "react";
44
import { Badge, Button, Card, ListGroup } from "react-bootstrap";
5-
import { useDispatch, useSelector } from "react-redux";
5+
import { useSelector } from "react-redux";
66
import { Link, useParams, useSearchParams } from "react-router";
77

88
import VertItem from "../components/vertitem.jsx";
99
import { useRetrieveAccoladeQuery, useRetrieveAvermentQuery } from "../features/call.js";
10-
import { hideLoad, showLoad } from "../features/part.js";
10+
import { useLoadingState } from "../features/hooks.js";
1111
import { formatTime, generateIdentity, portraitProvider, rarities, relativeImageUrl } from "../features/util.js";
1212
import Mistaken from "./mistaken.jsx";
1313

1414
export default function Accolade() {
15-
const dispatch = useDispatch();
1615
const { slugdata: accolade } = useParams();
1716
const vibe = useSelector((data) => data.area.vibe);
1817

@@ -101,14 +100,7 @@ export default function Accolade() {
101100
}
102101
}, [pageCall, awardees, pagePoll, setPageCall]);
103102

104-
// Show or Hide LoadNote
105-
useEffect(() => {
106-
if (progress) {
107-
dispatch(showLoad());
108-
} else {
109-
dispatch(hideLoad());
110-
}
111-
}, [progress, dispatch]);
103+
useLoadingState(progress);
112104

113105
if (haveError) {
114106
return <Mistaken />;

frontend/src/routes/accolist.jsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,21 @@
11
import { mdiHistory } from "@mdi/js";
22
import Icon from "@mdi/react";
3-
import { useEffect } from "react";
43
import { Button, Card } from "react-bootstrap";
5-
import { useDispatch, useSelector } from "react-redux";
4+
import { useSelector } from "react-redux";
65
import { Link } from "react-router";
76

87
import AccoItem from "../components/accoitem.jsx";
98
import Grouping from "../components/grouping.jsx";
109
import { useRetrieveAccoListQuery } from "../features/call.js";
11-
import { hideLoad, showLoad } from "../features/part.js";
10+
import { useLoadingState } from "../features/hooks.js";
1211
import { formatTime, generateIdentity } from "../features/util.js";
1312
import Mistaken from "./mistaken.jsx";
1413

1514
export default function AccoList() {
16-
const dispatch = useDispatch();
1715
const { data: list, isLoading, error } = useRetrieveAccoListQuery();
1816
const vibe = useSelector((data) => data.area.vibe);
1917

20-
// Show or Hide LoadNote
21-
useEffect(() => {
22-
if (isLoading) {
23-
dispatch(showLoad());
24-
} else {
25-
dispatch(hideLoad());
26-
}
27-
}, [isLoading, dispatch]);
18+
useLoadingState(isLoading);
2819

2920
if (error) {
3021
return <Mistaken />;

frontend/src/routes/category.jsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,22 @@
11
import { mdiViewGridPlus } from "@mdi/js";
22
import Icon from "@mdi/react";
3-
import { useEffect } from "react";
43
import { Button, Card } from "react-bootstrap";
5-
import { useDispatch, useSelector } from "react-redux";
4+
import { useSelector } from "react-redux";
65
import { Link, useParams } from "react-router";
76

87
import AccoItem from "../components/accoitem.jsx";
98
import Grouping from "../components/grouping.jsx";
109
import { useRetrieveCategoryQuery } from "../features/call.js";
11-
import { hideLoad, showLoad } from "../features/part.js";
10+
import { useLoadingState } from "../features/hooks.js";
1211
import { formatTime, generateIdentity } from "../features/util.js";
1312
import Mistaken from "./mistaken.jsx";
1413

1514
export default function Category() {
16-
const dispatch = useDispatch();
1715
const { slugdata: category } = useParams();
1816
const { data: list, isLoading, error } = useRetrieveCategoryQuery(category);
1917
const vibe = useSelector((data) => data.area.vibe);
2018

21-
// Show or Hide LoadNote
22-
useEffect(() => {
23-
if (isLoading) {
24-
dispatch(showLoad());
25-
} else {
26-
dispatch(hideLoad());
27-
}
28-
}, [isLoading, dispatch]);
19+
useLoadingState(isLoading);
2920

3021
if (error) {
3122
return <Mistaken />;

frontend/src/routes/findpage.jsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,19 @@
1-
import { useEffect } from "react";
21
import { Badge, Card, ListGroup } from "react-bootstrap";
3-
import { useDispatch, useSelector } from "react-redux";
2+
import { useSelector } from "react-redux";
43
import { useParams } from "react-router";
54

65
import VertItem from "../components/vertitem.jsx";
76
import { useRetrieveDiscoverQuery } from "../features/call.js";
8-
import { hideLoad, showLoad } from "../features/part.js";
7+
import { useLoadingState } from "../features/hooks.js";
98
import { formatTime, generateIdentity, portraitProvider } from "../features/util.js";
109
import Mistaken from "./mistaken.jsx";
1110

1211
export default function FindPage() {
13-
const dispatch = useDispatch();
1412
const { slugdata: findtext } = useParams();
1513
const { data: dict, isLoading, error } = useRetrieveDiscoverQuery(findtext, { skip: false });
1614
const vibe = useSelector((data) => data.area.vibe);
1715

18-
// Show or Hide LoadNote
19-
useEffect(() => {
20-
if (isLoading) {
21-
dispatch(showLoad());
22-
} else {
23-
dispatch(hideLoad());
24-
}
25-
}, [isLoading, dispatch]);
16+
useLoadingState(isLoading);
2617

2718
if (findtext.length < 4) {
2819
return <Mistaken />;

frontend/src/routes/homepage.jsx

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
1-
import { mdiCrosshairsGps, mdiHeart, mdiHistory, mdiStarFourPoints, mdiTrophy, mdiViewGridPlus } from "@mdi/js";
1+
import {
2+
mdiCrosshairsGps,
3+
mdiHeart,
4+
mdiHistory,
5+
mdiInformationOutline,
6+
mdiStarFourPoints,
7+
mdiTrophy,
8+
mdiViewGridPlus,
9+
} from "@mdi/js";
210
import Icon from "@mdi/react";
311
import dayjs from "dayjs";
412
import relativeTime from "dayjs/plugin/relativeTime";
5-
import { useEffect } from "react";
613
import { Button, Card, ListGroup, OverlayTrigger, Tooltip } from "react-bootstrap";
7-
import { useDispatch, useSelector } from "react-redux";
14+
import { useSelector } from "react-redux";
815
import { Link, useNavigate } from "react-router";
916

1017
import VertItem from "../components/vertitem.jsx";
1118
import { useRetrieveAccoListQuery, useRetrieveGrantingQuery } from "../features/call.js";
12-
import { hideLoad, showLoad } from "../features/part.js";
19+
import { useLoadingState } from "../features/hooks.js";
1320
import { generateIdentity, portraitProvider } from "../features/util.js";
1421
import Mistaken from "./mistaken.jsx";
1522

1623
dayjs.extend(relativeTime);
1724

1825
export default function Homepage() {
19-
const dispatch = useDispatch();
2026
const navigate = useNavigate();
2127
const { data: granting, isLoading: isGrantingLoading, error: grantingError } = useRetrieveGrantingQuery();
2228
const { data: accolade, isLoading: isAccoladeLoading, error: accoladeError } = useRetrieveAccoListQuery();
@@ -32,14 +38,7 @@ export default function Homepage() {
3238
}
3339
};
3440

35-
// Show or Hide LoadNote
36-
useEffect(() => {
37-
if (isLoading) {
38-
dispatch(showLoad());
39-
} else {
40-
dispatch(hideLoad());
41-
}
42-
}, [isLoading, dispatch]);
41+
useLoadingState(isLoading);
4342

4443
if (error) {
4544
return <Mistaken />;
@@ -128,6 +127,17 @@ export default function Homepage() {
128127
<Icon path={mdiCrosshairsGps} size={0.875} className="me-1" />
129128
Explore badges
130129
</Button>
130+
<Button
131+
as={Link}
132+
to="/addendum"
133+
variant="outline-secondary"
134+
className="d-grid d-inline-flex align-items-center ps-1 vibe-border"
135+
size="sm"
136+
style={{ "--vibe": vibe }}
137+
>
138+
<Icon path={mdiInformationOutline} size={0.875} className="me-1" />
139+
Service information
140+
</Button>
131141
<Button
132142
as="a"
133143
href="https://chat.fedoraproject.org/#/room/#badges:fedoraproject.org"
@@ -175,7 +185,7 @@ export default function Homepage() {
175185
)}
176186
</>
177187
}
178-
shot={item.person?.email ? portraitProvider(item.person.email, 45) : null}
188+
shot={item.person?.mail ? portraitProvider(item.person.mail, 45) : null}
179189
link={`/identity/${item.person?.nickname || ""}`}
180190
/>
181191
))}

frontend/src/routes/identity.jsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
import { mdiHistory, mdiSend } from "@mdi/js";
22
import Icon from "@mdi/react";
3-
import { useEffect } from "react";
43
import { Button, Card } from "react-bootstrap";
5-
import { useDispatch, useSelector } from "react-redux";
4+
import { useSelector } from "react-redux";
65
import { Link, useParams } from "react-router";
76

87
import AccoItem from "../components/accoitem.jsx";
98
import Grouping from "../components/grouping.jsx";
109
import { useRetrieveIdentityQuery } from "../features/call.js";
11-
import { hideLoad, showLoad } from "../features/part.js";
10+
import { useLoadingState } from "../features/hooks.js";
1211
import { formatTime, generateIdentity, portraitProvider } from "../features/util.js";
1312
import Mistaken from "./mistaken.jsx";
1413

1514
export default function Identity() {
16-
const dispatch = useDispatch();
1715
const { slugdata: identity } = useParams();
1816
const vibe = useSelector((data) => data.area.vibe);
1917
const authUser = useSelector((data) => data.auth.user);
@@ -26,14 +24,7 @@ export default function Identity() {
2624
skip: !identity,
2725
});
2826

29-
// Show or Hide LoadNote
30-
useEffect(() => {
31-
if (isLoading) {
32-
dispatch(showLoad());
33-
} else {
34-
dispatch(hideLoad());
35-
}
36-
}, [isLoading, dispatch]);
27+
useLoadingState(isLoading);
3728

3829
if (error) {
3930
return <Mistaken />;

frontend/src/routes/rankings.jsx

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { mdiCalendarCheck, mdiCalendarHeart, mdiCalendarMonth, mdiCalendarRange, mdiCalendarWeek } from "@mdi/js";
22
import Icon from "@mdi/react";
3-
import { useEffect } from "react";
43
import { Badge, Button, Card, Form, ListGroup } from "react-bootstrap";
54
import { useDispatch, useSelector } from "react-redux";
65
import { Link, useLocation, useNavigate, useParams } from "react-router";
76

87
import VertItem from "../components/vertitem.jsx";
98
import { useRetrieveRankingsQuery } from "../features/call.js";
10-
import { hideLoad, keepDate, showLoad } from "../features/part.js";
9+
import { useLoadingState } from "../features/hooks.js";
10+
import { keepDate } from "../features/part.js";
1111
import { generateIdentity, portraitProvider } from "../features/util.js";
1212
import Mistaken from "./mistaken.jsx";
1313

@@ -50,14 +50,7 @@ export default function Rankings() {
5050

5151
const { data: dict, isLoading, error } = useRetrieveRankingsQuery(params, { skip: false });
5252

53-
// Show or Hide LoadNote
54-
useEffect(() => {
55-
if (isLoading) {
56-
dispatch(showLoad());
57-
} else {
58-
dispatch(hideLoad());
59-
}
60-
}, [isLoading, dispatch]);
53+
useLoadingState(isLoading);
6154

6255
if (error) {
6356
return <Mistaken />;

frontend/src/routes/rarities.jsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,20 @@
1-
import { useEffect } from "react";
21
import { Button, Card, Image, ListGroup } from "react-bootstrap";
3-
import { useDispatch, useSelector } from "react-redux";
2+
import { useSelector } from "react-redux";
43
import { Link, useParams } from "react-router";
54

65
import AccoItem from "../components/accoitem.jsx";
76
import Grouping from "../components/grouping.jsx";
87
import { useRetrieveRaritiesQuery } from "../features/call.js";
9-
import { hideLoad, showLoad } from "../features/part.js";
8+
import { useLoadingState } from "../features/hooks.js";
109
import { formatTime, generateIdentity, obtainRarityText, rareColors, rarities } from "../features/util.js";
1110
import Mistaken from "./mistaken.jsx";
1211

1312
export default function Rarities() {
14-
const dispatch = useDispatch();
1513
const { slugdata: rareunit } = useParams();
1614
const { data: list, isLoading, error } = useRetrieveRaritiesQuery(rareunit);
1715
const vibe = useSelector((data) => data.area.vibe);
1816

19-
// Show or Hide LoadNote
20-
useEffect(() => {
21-
if (isLoading) {
22-
dispatch(showLoad());
23-
} else {
24-
dispatch(hideLoad());
25-
}
26-
}, [isLoading, dispatch]);
17+
useLoadingState(isLoading);
2718

2819
if (error) {
2920
return <Mistaken />;

frontend/src/routes/recently.jsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,21 @@
11
import { mdiViewGridPlus } from "@mdi/js";
22
import Icon from "@mdi/react";
3-
import { useEffect } from "react";
43
import { Button, Card } from "react-bootstrap";
5-
import { useDispatch, useSelector } from "react-redux";
4+
import { useSelector } from "react-redux";
65
import { Link } from "react-router";
76

87
import AccoItem from "../components/accoitem.jsx";
98
import Grouping from "../components/grouping.jsx";
109
import { useRetrieveAccoListQuery } from "../features/call.js";
11-
import { hideLoad, showLoad } from "../features/part.js";
10+
import { useLoadingState } from "../features/hooks.js";
1211
import { formatTime, generateIdentity } from "../features/util.js";
1312
import Mistaken from "./mistaken.jsx";
1413

1514
export default function Recently() {
16-
const dispatch = useDispatch();
1715
const { data: list, isLoading, error } = useRetrieveAccoListQuery();
1816
const vibe = useSelector((data) => data.area.vibe);
1917

20-
// Show or Hide LoadNote
21-
useEffect(() => {
22-
if (isLoading) {
23-
dispatch(showLoad());
24-
} else {
25-
dispatch(hideLoad());
26-
}
27-
}, [isLoading, dispatch]);
18+
useLoadingState(isLoading);
2819

2920
if (error) {
3021
return <Mistaken />;

frontend/src/routes/userpast.jsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
import { mdiBookAccount, mdiSend } from "@mdi/js";
22
import Icon from "@mdi/react";
3-
import { useEffect } from "react";
43
import { Badge, Button, Card, ListGroup } from "react-bootstrap";
5-
import { useDispatch, useSelector } from "react-redux";
4+
import { useSelector } from "react-redux";
65
import { Link, useParams } from "react-router";
76

87
import VertItem from "../components/vertitem.jsx";
98
import { useRetrieveIdentityQuery } from "../features/call.js";
10-
import { hideLoad, showLoad } from "../features/part.js";
9+
import { useLoadingState } from "../features/hooks.js";
1110
import { formatTime, generateIdentity, portraitProvider } from "../features/util.js";
1211
import Mistaken from "./mistaken.jsx";
1312

1413
export default function UserPast() {
15-
const dispatch = useDispatch();
1614
const { slugdata: identity } = useParams();
1715
const vibe = useSelector((data) => data.area.vibe);
1816
const authUser = useSelector((data) => data.auth.user);
@@ -25,14 +23,7 @@ export default function UserPast() {
2523
skip: !identity,
2624
});
2725

28-
// Show or Hide LoadNote
29-
useEffect(() => {
30-
if (isLoading) {
31-
dispatch(showLoad());
32-
} else {
33-
dispatch(hideLoad());
34-
}
35-
}, [isLoading, dispatch]);
26+
useLoadingState(isLoading);
3627

3728
if (error) {
3829
return <Mistaken />;

0 commit comments

Comments
 (0)