import { NDKEvent } from '@nostr-dev-kit/ndk'; import { useCallback, useEffect } from 'react'; import { NotiMention } from '@app/notifications/components/mention'; import { NotiReaction } from '@app/notifications/components/reaction'; import { NotiRepost } from '@app/notifications/components/repost'; import { useStorage } from '@libs/storage/provider'; import { LoaderIcon } from '@shared/icons'; import { TitleBar } from '@shared/titleBar'; import { useActivities } from '@stores/activities'; import { useNostr } from '@utils/hooks/useNostr'; export function NotificationScreen() { const { db } = useStorage(); const { fetchActivities } = useNostr(); const [activities, setActivities, clearTotalNewActivities] = useActivities((state) => [ state.activities, state.setActivities, state.clearTotalNewActivities, ]); const renderItem = useCallback( (event: NDKEvent) => { switch (event.kind) { case 1: return ; case 6: return ; case 7: return ; default: return null; } }, [activities] ); useEffect(() => { async function getActivities() { const events = await fetchActivities(); setActivities(events, db.account.last_login_at); } getActivities(); // clear total new activities clearTotalNewActivities(); }, []); return (
{!activities ? (

Loading

) : activities.length <= 1 ? (

🎉

Yo!, no new activities around you in the last 24 hours

) : ( activities.map((event) => renderItem(event)) )}
); }