From 86baa9c3fb0c9c9de790e28eb65df802d56a622f Mon Sep 17 00:00:00 2001 From: turboblitz Date: Sat, 22 Feb 2025 21:42:30 -0800 Subject: [PATCH] Navigation changes (#183) Co-authored-by: Justin Hernandez Co-authored-by: Aaron DeRuvo Co-authored-by: turnoffthiscomputer <98749896+remicolin@users.noreply.github.com> --- app/src/screens/Onboarding/LoadingScreen.tsx | 9 +++---- app/src/screens/SplashScreen.tsx | 26 ++++++++++++++++---- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/src/screens/Onboarding/LoadingScreen.tsx b/app/src/screens/Onboarding/LoadingScreen.tsx index cb437c296..7fdcfb56e 100644 --- a/app/src/screens/Onboarding/LoadingScreen.tsx +++ b/app/src/screens/Onboarding/LoadingScreen.tsx @@ -79,17 +79,16 @@ const LoadingScreen: React.FC = ({}) => { return; } const isRegistered = await isUserRegistered(passportData, secret); - const isNullifierOnchain = await isPassportNullified(passportData); console.log('User is registered:', isRegistered); - console.log('Passport is nullified:', isNullifierOnchain); if (isRegistered) { console.log( - 'Passport is registered already. Skipping to HomeScreen', + 'Passport is registered already. Skipping to AccountVerifiedSuccess', ); - // Should this go the to AccountVerified Screen too? - navigation.navigate('Home'); + navigation.navigate('AccountVerifiedSuccess'); return; } + const isNullifierOnchain = await isPassportNullified(passportData); + console.log('Passport is nullified:', isNullifierOnchain); if (isNullifierOnchain) { console.log( 'Passport is nullified, but not registered with this secret. Prompt to restore secret from iCloud or manual backup', diff --git a/app/src/screens/SplashScreen.tsx b/app/src/screens/SplashScreen.tsx index 53d844ecd..32af4c3c0 100644 --- a/app/src/screens/SplashScreen.tsx +++ b/app/src/screens/SplashScreen.tsx @@ -10,6 +10,7 @@ import { loadPassportData } from '../stores/passportDataProvider'; import { useSettingStore } from '../stores/settingStore'; import { black } from '../utils/colors'; import { impactLight } from '../utils/haptic'; +import { isUserRegistered } from '../utils/proving/payload'; const SplashScreen: React.FC = ({}) => { const navigation = useNavigation(); @@ -31,13 +32,28 @@ const SplashScreen: React.FC = ({}) => { setTimeout(async () => { impactLight(); const secret = await hasSecretStored(); - const passportData = await loadPassportData(); - - if (secret && passportData) { - navigation.navigate('Home'); - } else { + const passportDataString = await loadPassportData(); + if (!secret || !passportDataString) { navigation.navigate('Launch'); + return; } + + const passportData = JSON.parse(passportDataString); + const isRegistered = await isUserRegistered(passportData, secret); + console.log('User is registered:', isRegistered); + if (isRegistered) { + console.log('Passport is registered already. Skipping to HomeScreen'); + navigation.navigate('Home'); + return; + } + // Currently, we dont check isPassportNullified(passportData); + // This could lead to AccountRecoveryChoice just like in LoadingScreen + // But it looks better right now to keep the LaunchScreen flow + // In case user wants to try with another passport. + // Long term, we could also show a modal instead that prompts the user to recover or scan a new passport. + + // Rest of the time, keep the LaunchScreen flow + navigation.navigate('Launch'); }, 1000); }, [navigation]);