diff --git a/src/app/auth/finish.tsx b/src/app/auth/finish.tsx index 741df4d0..dc4faa38 100644 --- a/src/app/auth/finish.tsx +++ b/src/app/auth/finish.tsx @@ -1,6 +1,81 @@ -import { Link } from 'react-router-dom'; +import { NDKKind } from '@nostr-dev-kit/ndk'; +import { useQueryClient } from '@tanstack/react-query'; +import { useState } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; + +import { useArk } from '@libs/ark'; + +import { LoaderIcon } from '@shared/icons'; + +import { FETCH_LIMIT } from '@utils/constants'; export function FinishScreen() { + const { ark } = useArk(); + const [loading, setLoading] = useState(false); + + const queryClient = useQueryClient(); + const navigate = useNavigate(); + + const prefetch = async () => { + if (!ark.account.contacts.length) return navigate('/'); + + try { + setLoading(true); + + // prefetch newsfeed + await queryClient.prefetchInfiniteQuery({ + queryKey: ['newsfeed'], + initialPageParam: 0, + queryFn: async ({ + signal, + pageParam, + }: { + signal: AbortSignal; + pageParam: number; + }) => { + return await ark.getInfiniteEvents({ + filter: { + kinds: [NDKKind.Text, NDKKind.Repost], + authors: !ark.account.contacts.length + ? [ark.account.pubkey] + : ark.account.contacts, + }, + limit: FETCH_LIMIT, + pageParam, + signal, + }); + }, + }); + + // prefetch notification + await queryClient.prefetchInfiniteQuery({ + queryKey: ['notification'], + initialPageParam: 0, + queryFn: async ({ + signal, + pageParam, + }: { + signal: AbortSignal; + pageParam: number; + }) => { + return await ark.getInfiniteEvents({ + filter: { + kinds: [NDKKind.Text, NDKKind.Repost, NDKKind.Reaction, NDKKind.Zap], + '#p': [ark.account.pubkey], + }, + limit: FETCH_LIMIT, + pageParam, + signal, + }); + }, + }); + + navigate('/'); + } catch (e) { + console.error(e); + } + }; + return (
You need to restart app to make changes in previous step take effect or you can continue with Lume default settings diff --git a/src/app/auth/tutorials/finish.tsx b/src/app/auth/tutorials/finish.tsx index 8b064f8a..bf969f10 100644 --- a/src/app/auth/tutorials/finish.tsx +++ b/src/app/auth/tutorials/finish.tsx @@ -1,6 +1,81 @@ -import { Link } from 'react-router-dom'; +import { NDKKind } from '@nostr-dev-kit/ndk'; +import { useQueryClient } from '@tanstack/react-query'; +import { useState } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; + +import { useArk } from '@libs/ark'; + +import { LoaderIcon } from '@shared/icons'; + +import { FETCH_LIMIT } from '@utils/constants'; export function TutorialFinishScreen() { + const { ark } = useArk(); + const [loading, setLoading] = useState(false); + + const queryClient = useQueryClient(); + const navigate = useNavigate(); + + const prefetch = async () => { + if (!ark.account.contacts.length) return navigate('/'); + + try { + setLoading(true); + + // prefetch newsfeed + await queryClient.prefetchInfiniteQuery({ + queryKey: ['newsfeed'], + initialPageParam: 0, + queryFn: async ({ + signal, + pageParam, + }: { + signal: AbortSignal; + pageParam: number; + }) => { + return await ark.getInfiniteEvents({ + filter: { + kinds: [NDKKind.Text, NDKKind.Repost], + authors: !ark.account.contacts.length + ? [ark.account.pubkey] + : ark.account.contacts, + }, + limit: FETCH_LIMIT, + pageParam, + signal, + }); + }, + }); + + // prefetch notification + await queryClient.prefetchInfiniteQuery({ + queryKey: ['notification'], + initialPageParam: 0, + queryFn: async ({ + signal, + pageParam, + }: { + signal: AbortSignal; + pageParam: number; + }) => { + return await ark.getInfiniteEvents({ + filter: { + kinds: [NDKKind.Text, NDKKind.Repost, NDKKind.Reaction, NDKKind.Zap], + '#p': [ark.account.pubkey], + }, + limit: FETCH_LIMIT, + pageParam, + signal, + }); + }, + }); + + navigate('/'); + } catch (e) { + console.error(e); + } + }; + return (