Skip to content

Commit 1c5f80c

Browse files
Add "Hide Prime" toggle (#279)
1 parent 9d7501f commit 1c5f80c

File tree

9 files changed

+53
-13
lines changed

9 files changed

+53
-13
lines changed

src/components/checklist/CategoryInfo.jsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import PropTypes from "prop-types";
22
import { useStore } from "../../hooks/useStore";
3-
import { foundersItems } from "../../utils/items";
3+
import { foundersItems, itemIsPrime } from "../../utils/items";
44
import { xpFromItem } from "../../utils/mastery-rank";
55
import BaseCategoryInfo from "./BaseCategoryInfo";
66

@@ -24,12 +24,14 @@ function CategoryItem({ name }) {
2424
itemsMastered,
2525
partiallyMasteredItems,
2626
categoryItems,
27-
hideFounders
27+
hideFounders,
28+
hidePrime
2829
} = useStore(state => ({
2930
itemsMastered: state.itemsMastered,
3031
partiallyMasteredItems: state.partiallyMasteredItems,
3132
categoryItems: state.items[name],
32-
hideFounders: state.hideFounders
33+
hideFounders: state.hideFounders,
34+
hidePrime: state.hidePrime
3335
}));
3436

3537
let masteredCount = 0;
@@ -40,11 +42,12 @@ function CategoryItem({ name }) {
4042
let totalXP = 0;
4143
Object.entries(categoryItems).forEach(([itemName, item]) => {
4244
if (
43-
hideFounders &&
44-
foundersItems.includes(itemName) &&
45-
!itemsMastered.has(itemName)
45+
!itemsMastered.has(itemName) &&
46+
((hideFounders && foundersItems.includes(itemName)) ||
47+
(hidePrime && itemIsPrime(itemName)))
4648
)
4749
return;
50+
4851
totalCount++;
4952
totalXP += xpFromItem(item, name);
5053
if (itemsMastered.has(itemName)) {

src/components/checklist/CategoryItem.jsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useState } from "react";
44
import { useStore } from "../../hooks/useStore";
55
import checkmark from "../../icons/checkmark.svg";
66
import { SHARED } from "../../utils/checklist-types";
7-
import { foundersItems, itemShape } from "../../utils/items";
7+
import { foundersItems, itemShape, itemIsPrime } from "../../utils/items";
88
import Button from "../Button";
99
import PaginatedTooltip from "../PaginatedTooltip";
1010
import ItemGeneralInfoTooltip from "./ItemGeneralInfoTooltip";
@@ -30,6 +30,9 @@ function CategoryItem({ name, item }) {
3030
(state.hideMastered && state.itemsMastered.has(name)) ||
3131
(state.hideFounders &&
3232
foundersItems.includes(name) &&
33+
!state.itemsMastered.has(name)) ||
34+
(state.hidePrime &&
35+
itemIsPrime(name) &&
3336
!state.itemsMastered.has(name))
3437
}));
3538
const [rankSelectToggled, setRankSelectToggled] = useState(false);
@@ -116,3 +119,4 @@ CategoryItem.propTypes = {
116119
};
117120

118121
export default CategoryItem;
122+

src/components/checklist/Checklist.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Masonry from "react-masonry-css";
22
import { useStore } from "../../hooks/useStore";
3-
import { foundersItems } from "../../utils/items";
3+
import { foundersItems, itemIsPrime } from "../../utils/items";
44
import Category from "./Category";
55

66
function Checklist() {
@@ -11,7 +11,8 @@ function Checklist() {
1111
!Object.keys(state.items[category]).every(
1212
item =>
1313
state.itemsMastered.has(item) ||
14-
(state.hideFounders && foundersItems.includes(item))
14+
(state.hideFounders && foundersItems.includes(item)) ||
15+
(state.hidePrime && itemIsPrime(item))
1516
)
1617
);
1718
})
@@ -36,3 +37,4 @@ function Checklist() {
3637
}
3738

3839
export default Checklist;
40+

src/components/sidebar/Sidebar.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,4 @@ function Sidebar() {
4444
}
4545

4646
export default Sidebar;
47+

src/components/sidebar/SidebarInputs.jsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ function SidebarInputs() {
1717
setDrifterIntrinsics,
1818
hideMastered,
1919
setHideMastered,
20+
hidePrime,
21+
setHidePrime,
2022
hideFounders,
2123
setHideFounders,
2224
displayingNodes,
@@ -31,6 +33,8 @@ function SidebarInputs() {
3133
setDrifterIntrinsics: state.setDrifterIntrinsics,
3234
hideMastered: state.hideMastered,
3335
setHideMastered: state.setHideMastered,
36+
hidePrime: state.hidePrime,
37+
setHidePrime: state.setHidePrime,
3438
hideFounders: state.hideFounders,
3539
setHideFounders: state.setHideFounders,
3640
displayingNodes: state.displayingNodes,
@@ -86,6 +90,11 @@ function SidebarInputs() {
8690
toggled={hideMastered}
8791
onToggle={setHideMastered}
8892
/>
93+
<LabeledToggle
94+
label="Hide Prime"
95+
toggled={hidePrime}
96+
onToggle={setHidePrime}
97+
/>
8998
{!displayingNodes && (
9099
<LabeledToggle
91100
label="Hide Founders"

src/hooks/useStore.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ export const useStore = createWithEqualityFn(
427427
needsRounding.set(
428428
componentName,
429429
(needsRounding.get(componentName) ?? 0) +
430-
componentCount
430+
componentCount
431431
);
432432
return;
433433
}
@@ -442,7 +442,8 @@ export const useStore = createWithEqualityFn(
442442
ingredientId.includes("ArchwingRecipes") ||
443443
ingredientId.includes("mechPart") ||
444444
componentName.startsWith("Cortege") ||
445-
componentName.startsWith("Morgha")) {
445+
componentName.startsWith("Morgha")
446+
) {
446447
return;
447448
}
448449

@@ -465,7 +466,7 @@ export const useStore = createWithEqualityFn(
465466
formaCost += Math.floor(
466467
(item.maxLvl -
467468
(partiallyMasteredItems[itemName] ?? 30)) /
468-
2
469+
2
469470
);
470471
}
471472
}
@@ -490,6 +491,8 @@ export const useStore = createWithEqualityFn(
490491

491492
hideMastered: true,
492493
setHideMastered: firestoreFieldSetter("hideMastered"),
494+
hidePrime: false,
495+
setHidePrime: firestoreFieldSetter("hidePrime"),
493496
hideFounders: true,
494497
setHideFounders: firestoreFieldSetter("hideFounders"),
495498

@@ -638,3 +641,4 @@ function markMasteryChange(draftState, key, id, mastered) {
638641
});
639642
}
640643
}
644+

src/pages/Login.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ function Login() {
2222
}
2323

2424
export default Login;
25+

src/pages/MasteryChecklist.jsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ function MasteryChecklist(props) {
2828
setRailjackIntrinsics,
2929
setDrifterIntrinsics,
3030
setHideMastered,
31+
setHidePrime,
3132
setHideFounders,
3233
displayingNodes
3334
} = useStore(state => ({
@@ -41,6 +42,7 @@ function MasteryChecklist(props) {
4142
setRailjackIntrinsics: state.setRailjackIntrinsics,
4243
setDrifterIntrinsics: state.setDrifterIntrinsics,
4344
setHideMastered: state.setHideMastered,
45+
setHidePrime: state.setHidePrime,
4446
setHideFounders: state.setHideFounders,
4547
displayingNodes: state.displayingNodes
4648
}));
@@ -70,6 +72,7 @@ function MasteryChecklist(props) {
7072
setRailjackIntrinsics(data?.intrinsics ?? 0, true);
7173
setDrifterIntrinsics(data?.drifterIntrinsics ?? 0, true);
7274
setHideMastered(data?.hideMastered ?? false, true);
75+
setHidePrime(data?.hidePrime ?? false, true);
7376
setHideFounders(data?.hideFounders ?? true, true);
7477
setNodesMastered(data?.starChart ?? [], false);
7578
setNodesMastered(data?.steelPath ?? [], true);
@@ -117,3 +120,4 @@ MasteryChecklist.propTypes = {
117120
};
118121

119122
export default MasteryChecklist;
123+

src/utils/items.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,19 @@ export const SCHEMA_VERSION = 3;
44

55
export const foundersItems = ["Excalibur Prime", "Skana Prime", "Lato Prime"];
66

7+
export function itemIsPrime(name) {
8+
return (
9+
(name.endsWith(" Prime") || name.startsWith("Prime ")) &&
10+
!foundersItems.includes(name)
11+
);
12+
}
13+
714
export function getComponentImageUrl(id) {
8-
return "https://cdn.jsdelivr.net/gh/Aericio/warframe-exports-data/image/" + id.slice(1).replaceAll("/", ".") + ".png";
15+
return (
16+
"https://cdn.jsdelivr.net/gh/Aericio/warframe-exports-data/image/" +
17+
id.slice(1).replaceAll("/", ".") +
18+
".png"
19+
);
920
}
1021

1122
export const relicTiers = ["Lith", "Meso", "Neo", "Axi", "Requiem"];
@@ -27,3 +38,4 @@ export const itemShape = {
2738
baro: PropTypes.arrayOf(PropTypes.number),
2839
description: PropTypes.string
2940
};
41+

0 commit comments

Comments
 (0)