import { Tooltip } from "@mui/joy";
import clsx from "clsx";
import { ArchiveIcon, BellIcon, Globe2Icon, HomeIcon, LogInIcon, PaperclipIcon, SettingsIcon, SmileIcon, User2Icon } from "lucide-react";
import { useEffect } from "react";
import { NavLink } from "react-router-dom";
import useCurrentUser from "@/hooks/useCurrentUser";
import { Routes } from "@/router";
import { useInboxStore } from "@/store/v1";
import { Inbox_Status } from "@/types/proto/api/v1/inbox_service";
import { useTranslate } from "@/utils/i18n";
import UserBanner from "./UserBanner";
interface NavLinkItem {
id: string;
path: string;
title: string;
icon: React.ReactNode;
}
interface Props {
collapsed?: boolean;
className?: string;
}
const Navigation = (props: Props) => {
const { collapsed, className } = props;
const t = useTranslate();
const user = useCurrentUser();
const inboxStore = useInboxStore();
const hasUnreadInbox = inboxStore.inboxes.some((inbox) => inbox.status === Inbox_Status.UNREAD);
useEffect(() => {
if (!user) {
return;
}
inboxStore.fetchInboxes();
// Fetch inboxes every 5 minutes.
const timer = setInterval(
async () => {
await inboxStore.fetchInboxes();
},
1000 * 60 * 5,
);
return () => {
clearInterval(timer);
};
}, []);
const homeNavLink: NavLinkItem = {
id: "header-home",
path: Routes.ROOT,
title: t("common.home"),
icon: