diff --git a/client/src/components/AuthOnboarding.tsx b/client/src/components/AuthOnboarding.tsx index c047a4a..f6138e9 100644 --- a/client/src/components/AuthOnboarding.tsx +++ b/client/src/components/AuthOnboarding.tsx @@ -40,14 +40,13 @@ export default function AuthOnboarding({ onAuthenticated }: AuthOnboardingProps) } } - const handleLogin = async (e: React.FormEvent) => { - e.preventDefault() - if (!username.trim()) return + const handleLogin = async (e?: React.FormEvent) => { + if (e) e.preventDefault() setLoading(true) setError(null) try { - const result = await loginUser(username.trim()) + const result = await loginUser() if (result.verified) { if (result.prfSuccess) { // Biometric E2E decryption succeeded @@ -55,6 +54,9 @@ export default function AuthOnboarding({ onAuthenticated }: AuthOnboardingProps) } else { // Biometrics succeeded but PRF key wasn't supported/available, fall back to recovery phrase setEncryptedPayloads(result.encryptedPayloads) + if (result.username) { + setUsername(result.username) + } setShowRecoveryFallback(true) } } @@ -72,7 +74,8 @@ export default function AuthOnboarding({ onAuthenticated }: AuthOnboardingProps) setLoading(true) setError(null) try { - const success = await completeLoginWithRecovery(username.trim(), recoveryInput.trim(), encryptedPayloads) + const resolvedUser = username.trim() || encryptedPayloads.username + const success = await completeLoginWithRecovery(resolvedUser, recoveryInput.trim(), encryptedPayloads) if (success) { onAuthenticated() } else { @@ -180,40 +183,51 @@ export default function AuthOnboarding({ onAuthenticated }: AuthOnboardingProps)
{t('auth.tagline')}