diff --git a/web/src/components/Header.tsx b/web/src/components/Header.tsx
index 07fa3980..fe4905cc 100644
--- a/web/src/components/Header.tsx
+++ b/web/src/components/Header.tsx
@@ -1,12 +1,10 @@
import classNames from "classnames";
import { useEffect } from "react";
-import { NavLink, useLocation } from "react-router-dom";
+import { NavLink } from "react-router-dom";
import useCurrentUser from "@/hooks/useCurrentUser";
-import { useLayoutStore } from "@/store/module";
import { useInboxStore } from "@/store/v1";
import { Inbox_Status } from "@/types/proto/api/v2/inbox_service";
import { useTranslate } from "@/utils/i18n";
-import { resolution } from "@/utils/layout";
import Icon from "./Icon";
import UserBanner from "./UserBanner";
@@ -19,11 +17,8 @@ interface NavLinkItem {
const Header = () => {
const t = useTranslate();
- const location = useLocation();
- const layoutStore = useLayoutStore();
const user = useCurrentUser();
const inboxStore = useInboxStore();
- const showHeader = layoutStore.state.showHeader;
const hasUnreadInbox = inboxStore.inboxes.some((inbox) => inbox.status === Inbox_Status.UNREAD);
useEffect(() => {
@@ -42,22 +37,6 @@ const Header = () => {
};
}, []);
- useEffect(() => {
- const handleWindowResize = () => {
- if (window.innerWidth < resolution.sm) {
- layoutStore.setHeaderStatus(false);
- } else {
- layoutStore.setHeaderStatus(true);
- }
- };
- handleWindowResize();
- window.addEventListener("resize", handleWindowResize);
-
- return () => {
- window.removeEventListener("resize", handleWindowResize);
- };
- }, [location]);
-
const homeNavLink: NavLinkItem = {
id: "header-home",
path: "/",
@@ -119,44 +98,28 @@ const Header = () => {
: [exploreNavLink, signInNavLink];
return (
-
-
layoutStore.setHeaderStatus(false)}
- >
-
-
-
- {navLinks.map((navLink) => (
-
- classNames(
- "px-4 pr-5 py-2 rounded-2xl border flex flex-row items-center text-lg text-gray-800 dark:text-gray-300 hover:bg-white hover:border-gray-200 dark:hover:border-zinc-600 dark:hover:bg-zinc-700",
- isActive ? "bg-white drop-shadow-sm dark:bg-zinc-700 border-gray-200 dark:border-zinc-600" : "border-transparent"
- )
- }
- >
- <>
- {navLink.icon} {navLink.title}
- >
-
- ))}
-
-
-
+
+
+
+ {navLinks.map((navLink) => (
+
+ classNames(
+ "px-4 pr-5 py-2 rounded-2xl border flex flex-row items-center text-lg text-gray-800 dark:text-gray-300 hover:bg-white hover:border-gray-200 dark:hover:border-zinc-600 dark:hover:bg-zinc-700",
+ isActive ? "bg-white drop-shadow-sm dark:bg-zinc-700 border-gray-200 dark:border-zinc-600" : "border-transparent"
+ )
+ }
+ >
+ <>
+ {navLink.icon} {navLink.title}
+ >
+
+ ))}
+
+
);
};
diff --git a/web/src/components/HeaderDrawer.tsx b/web/src/components/HeaderDrawer.tsx
new file mode 100644
index 00000000..99671315
--- /dev/null
+++ b/web/src/components/HeaderDrawer.tsx
@@ -0,0 +1,37 @@
+import { Drawer, IconButton } from "@mui/joy";
+import { useEffect, useState } from "react";
+import { useLocation } from "react-router-dom";
+import Header from "./Header";
+import Icon from "./Icon";
+
+const HeaderDrawer = () => {
+ const location = useLocation();
+ const [open, setOpen] = useState(false);
+
+ useEffect(() => {
+ setOpen(false);
+ }, [location.pathname]);
+
+ const toggleDrawer = (inOpen: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => {
+ if (event.type === "keydown" && ((event as React.KeyboardEvent).key === "Tab" || (event as React.KeyboardEvent).key === "Shift")) {
+ return;
+ }
+
+ setOpen(inOpen);
+ };
+
+ return (
+
+ );
+};
+
+export default HeaderDrawer;
diff --git a/web/src/components/MobileHeader.tsx b/web/src/components/MobileHeader.tsx
index aeb8fe66..2cf61f6b 100644
--- a/web/src/components/MobileHeader.tsx
+++ b/web/src/components/MobileHeader.tsx
@@ -1,5 +1,6 @@
import { useState } from "react";
import { useLayoutStore } from "@/store/module";
+import HeaderDrawer from "./HeaderDrawer";
import Icon from "./Icon";
interface Props {
@@ -14,12 +15,13 @@ const MobileHeader = (props: Props) => {
return (
-
layoutStore.setHeaderStatus(true)}
>
-
+
*/}
+
location.reload()}
diff --git a/web/src/layouts/Root.tsx b/web/src/layouts/Root.tsx
index d7631439..73380b1c 100644
--- a/web/src/layouts/Root.tsx
+++ b/web/src/layouts/Root.tsx
@@ -9,7 +9,9 @@ function Root() {
-
+
+
+
diff --git a/web/src/store/module/layout.ts b/web/src/store/module/layout.ts
index 7158a7b1..1437ab9c 100644
--- a/web/src/store/module/layout.ts
+++ b/web/src/store/module/layout.ts
@@ -1,5 +1,5 @@
import store, { useAppSelector } from "..";
-import { setHeaderStatus, setHomeSidebarStatus } from "../reducer/layout";
+import { setHomeSidebarStatus } from "../reducer/layout";
export const useLayoutStore = () => {
const state = useAppSelector((state) => state.layout);
@@ -8,9 +8,6 @@ export const useLayoutStore = () => {
getState: () => {
return store.getState().tag;
},
- setHeaderStatus: (showHeader: boolean) => {
- store.dispatch(setHeaderStatus(showHeader));
- },
setHomeSidebarStatus: (showHomeSidebar: boolean) => {
store.dispatch(setHomeSidebarStatus(showHomeSidebar));
},
diff --git a/web/src/store/reducer/layout.ts b/web/src/store/reducer/layout.ts
index 7d7e7951..5af9fd0f 100644
--- a/web/src/store/reducer/layout.ts
+++ b/web/src/store/reducer/layout.ts
@@ -1,23 +1,15 @@
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
interface State {
- showHeader: boolean;
showHomeSidebar: boolean;
}
const layoutSlice = createSlice({
name: "layout",
initialState: {
- showHeader: false,
showHomeSidebar: false,
} as State,
reducers: {
- setHeaderStatus: (state, action: PayloadAction
) => {
- return {
- ...state,
- showHeader: action.payload,
- };
- },
setHomeSidebarStatus: (state, action: PayloadAction) => {
return {
...state,
@@ -27,6 +19,6 @@ const layoutSlice = createSlice({
},
});
-export const { setHeaderStatus, setHomeSidebarStatus } = layoutSlice.actions;
+export const { setHomeSidebarStatus } = layoutSlice.actions;
export default layoutSlice.reducer;