/* Copyright (c) 2025 Tethys Plex This file is part of Veloera. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ import React, { useEffect, useState } from 'react'; import { Badge, Button, Tooltip } from '@douyinfe/semi-ui'; import { IconMail } from '@douyinfe/semi-icons'; import { useNavigate } from 'react-router-dom'; import { API } from '../helpers'; import { useTranslation } from 'react-i18next'; const InboxIcon = () => { const { t } = useTranslation(); const navigate = useNavigate(); const [unreadCount, setUnreadCount] = useState(0); const [loading, setLoading] = useState(false); const loadUnreadCount = async () => { if (loading) return; setLoading(true); try { const res = await API.get('/api/user/messages/unread_count'); const { success, data } = res.data; if (success) { setUnreadCount(data.unread_count || 0); } } catch (error) { // Silently fail - unread count is not critical console.error('Failed to load unread count:', error); } finally { setLoading(false); } }; const handleClick = () => { navigate('/app/inbox'); }; useEffect(() => { loadUnreadCount(); // Poll for unread count every 30 seconds const interval = setInterval(loadUnreadCount, 30000); return () => clearInterval(interval); }, []); return (
); }; export default InboxIcon;