import { sortBy } from "lodash-es"; import { BellIcon } from "lucide-react"; import { observer } from "mobx-react-lite"; import { useEffect } from "react"; import Empty from "@/components/Empty"; import MemoCommentMessage from "@/components/Inbox/MemoCommentMessage"; import MobileHeader from "@/components/MobileHeader"; import useResponsiveWidth from "@/hooks/useResponsiveWidth"; import { userStore } from "@/store"; import { Inbox, Inbox_Status, Inbox_Type } from "@/types/proto/api/v1/inbox_service"; import { useTranslate } from "@/utils/i18n"; const Inboxes = observer(() => { const t = useTranslate(); const { md } = useResponsiveWidth(); const inboxes = sortBy(userStore.state.inboxes, (inbox: Inbox) => { if (inbox.status === Inbox_Status.UNREAD) return 0; if (inbox.status === Inbox_Status.ARCHIVED) return 1; return 2; }); const fetchInboxes = async () => { try { await userStore.fetchInboxes(); } catch (error) { console.error("Failed to fetch inboxes:", error); } }; useEffect(() => { fetchInboxes(); }, []); return (
{!md && }

{t("common.inbox")}

{inboxes.length === 0 && (

{t("message.no-data")}

)}
{inboxes.map((inbox: Inbox) => { if (inbox.type === Inbox_Type.MEMO_COMMENT) { return ; } return undefined; })}
); }); export default Inboxes;