import { BellIcon } from '@heroicons/react/outline' import clsx from 'clsx' import { Row } from 'web/components/layout/row' import { useEffect, useState } from 'react' import { usePrivateUser, useUser } from 'web/hooks/use-user' import { useRouter } from 'next/router' import { useUnseenPreferredNotificationGroups } from 'web/hooks/use-notifications' import { NOTIFICATIONS_PER_PAGE } from 'web/pages/notifications' import { requestBonuses } from 'web/lib/firebase/api' import { PrivateUser } from 'common/user' export default function NotificationsIcon(props: { className?: string }) { const user = useUser() const privateUser = usePrivateUser(user?.id) useEffect(() => { if ( privateUser && privateUser.lastTimeCheckedBonuses && Date.now() - privateUser.lastTimeCheckedBonuses > 1000 * 70 ) requestBonuses({}).catch(() => console.log('no bonuses for you (yet)')) }, [privateUser]) return (
{privateUser && }
) } function UnseenNotificationsBubble(props: { privateUser: PrivateUser }) { const router = useRouter() const { privateUser } = props const [seen, setSeen] = useState(false) useEffect(() => { if (router.pathname.endsWith('notifications')) return setSeen(true) else setSeen(false) }, [router.pathname]) const notifications = useUnseenPreferredNotificationGroups(privateUser) if (!notifications || notifications.length === 0 || seen) { return
} return (
{notifications.length > NOTIFICATIONS_PER_PAGE ? `${NOTIFICATIONS_PER_PAGE}+` : notifications.length}
) }