import { NDKEvent, NDKKind } from '@nostr-dev-kit/ndk'; import { useQuery } from '@tanstack/react-query'; import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { toast } from 'sonner'; import { useNDK } from '@libs/ndk/provider'; import { useStorage } from '@libs/storage/provider'; import { ArrowLeftIcon, CheckCircleIcon, LoaderIcon } from '@shared/icons'; import { User } from '@shared/user'; import { useOnboarding } from '@stores/onboarding'; import { arrayToNIP02 } from '@utils/transform'; export function OnboardEnrichScreen() { const { ndk } = useNDK(); const { db } = useStorage(); const { status, data } = useQuery({ queryKey: ['trending-profiles-widget'], queryFn: async () => { const res = await fetch('https://api.nostr.band/v0/trending/profiles'); if (!res.ok) { throw new Error('Error'); } return res.json(); }, }); const [loading, setLoading] = useState(false); const [follows, setFollows] = useState([]); const navigate = useNavigate(); const setEnrich = useOnboarding((state) => state.toggleEnrich); // toggle follow state const toggleFollow = (pubkey: string) => { const arr = follows.includes(pubkey) ? follows.filter((i) => i !== pubkey) : [...follows, pubkey]; setFollows(arr); }; const submit = async () => { try { setLoading(true); const tags = arrayToNIP02(follows); const event = new NDKEvent(ndk); event.content = ''; event.kind = NDKKind.Contacts; event.created_at = Math.floor(Date.now() / 1000); event.tags = tags; const publish = await event.publish(); // redirect to next step if (publish) { db.account.follows = follows; await db.updateAccount('follows', JSON.stringify(follows)); await db.updateAccount('circles', JSON.stringify(follows)); setEnrich(); navigate(-1); } else { setLoading(false); } } catch (e) { setLoading(false); toast(e); } }; return (