import { message } from '@tauri-apps/api/dialog'; import { invoke } from '@tauri-apps/api/tauri'; import { useEffect } from 'react'; import { useNDK } from '@libs/ndk/provider'; import { useStorage } from '@libs/storage/provider'; import { LoaderIcon } from '@shared/icons'; import { useNostr } from '@utils/hooks/useNostr'; export function SplashScreen() { const { db } = useStorage(); const { ndk } = useNDK(); const { fetchUserData } = useNostr(); useEffect(() => { async function syncUserData() { if (!db.account) { await invoke('close_splashscreen'); } else { const onboarding = localStorage.getItem('onboarding'); const step = JSON.parse(onboarding).state.step || null; if (step) { await invoke('close_splashscreen'); } else { try { const userData = await fetchUserData(); if (userData.status === 'ok') { // update last login = current time await db.updateLastLogin(); // close splash screen and open main app screen await invoke('close_splashscreen'); } } catch (e) { await message(e, { title: 'An unexpected error has occurred', type: 'error', }); await invoke('close_splashscreen'); } } } } if (ndk) { syncUserData(); } }, [ndk, db.account]); return (

{!ndk ? 'Connecting...' : 'Syncing...'}

); }