import { invoke } from '@tauri-apps/api/tauri'; import { useEffect, useState } from 'react'; import { getActiveAccount, updateLastLogin } from '@libs/storage'; import { LoaderIcon } from '@shared/icons'; import { useNostr } from '@utils/hooks/useNostr'; const account = await getActiveAccount(); export function SplashScreen() { const [loading, setLoading] = useState(true); const { fetchChats, fetchNotes } = useNostr(); if (!account) { setTimeout(async () => await invoke('close_splashscreen'), 500); } const skip = async () => { await invoke('close_splashscreen'); }; useEffect(() => { async function prefetch() { const onboarding = localStorage.getItem('onboarding'); const step = JSON.parse(onboarding).state.step || null; if (step) await invoke('close_splashscreen'); const notes = await fetchNotes(); const chats = await fetchChats(); if (notes.status === 'ok' && chats.status === 'ok') { const now = Math.floor(Date.now() / 1000); await updateLastLogin(now); invoke('close_splashscreen'); } else { setLoading(false); console.log('fetch notes failed, error: ', notes.message); console.log('fetch chats failed, error: ', chats.message); } } if (account && loading) { prefetch(); } }, []); return (
{loading ? (

Prefetching data

This may take a few seconds, please don't close app.

) : (

Something wrong!

Prefetching process failed, click skip to continue.

)}
); }