import { useQuery, useQueryClient } from '@tanstack/react-query'; import { useEffect, useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { User } from '@app/auth/components/user'; import { useStorage } from '@libs/storage/provider'; import { ArrowRightCircleIcon, CheckCircleIcon, LoaderIcon } from '@shared/icons'; import { useOnboarding } from '@stores/onboarding'; import { useAccount } from '@utils/hooks/useAccount'; import { useNostr } from '@utils/hooks/useNostr'; import { arrayToNIP02 } from '@utils/transform'; export function OnboardStep1Screen() { const queryClient = useQueryClient(); const navigate = useNavigate(); const setStep = useOnboarding((state) => state.setStep); const { db } = useStorage(); const { publish, fetchUserData } = useNostr(); const { account } = useAccount(); const { status, data } = useQuery(['trending-profiles'], 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([]); // 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, account.pubkey]); const event = await publish({ content: '', kind: 3, tags: tags }); await db.updateAccount('follows', follows); // prefetch notes with current follows const data = await fetchUserData(follows); // redirect to next step if (event && data.status === 'ok') { queryClient.invalidateQueries(['account']); navigate('/auth/onboarding/step-2', { replace: true }); } else { setLoading(false); console.log('error: ', data.message); } } catch (e) { setLoading(false); console.log('error: ', e); } }; useEffect(() => { // save current step, if user close app and reopen it setStep('/auth/onboarding'); }, []); return (
Choose account you want to follow