-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmenu.jsx
71 lines (62 loc) · 1.48 KB
/
menu.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { useState, useEffect } from "react";
import Daily from "../components/icons/Daily";
import Museum from "../components/icons/Museum";
import Song from "../components/icons/Song";
import Case from "../components/icons/Case";
function useMenu(language) {
const [menuItems, setMenuItems] = useState([
{
label: "daily",
Icon: Daily,
path: "/",
rootPath: "",
visible: true,
},
{
label: "museum",
Icon: Museum,
path: "/museum/bugs",
rootPath: "museum",
visible: true,
},
{
label: "songs",
Icon: Song,
path: "/songs",
rootPath: "songs",
visible: true,
},
{
label: "settings",
Icon: Case,
path: "/settings",
rootPath: "settings",
visible: true,
},
]);
useEffect(() => {
let hiddenMenus = localStorage.getItem("hiddenMenus");
if (hiddenMenus) {
hiddenMenus = JSON.parse(hiddenMenus);
} else {
return;
}
const state = [...menuItems].map((menuItem) => {
if (hiddenMenus.includes(menuItem.rootPath)) {
menuItem.visible = false;
}
return menuItem;
});
setMenuItems(state);
}, []);
useEffect(() => {
const hiddenMenus = menuItems.map((menuItem) => {
if (!menuItem.visible) {
return menuItem.rootPath;
}
});
localStorage.setItem("hiddenMenus", JSON.stringify(hiddenMenus));
}, [menuItems]);
return [menuItems, setMenuItems];
}
export default useMenu;