El uso del código a continuación de otras publicaciones parece sugerir que esto funciona para mantener a un usuario (cuando la aplicación se cierra y se inicia nuevamente) a través de la reacción nativa para firebase versión 8. Sin embargo, usar firebase v9 involucra el directorio "firebase/compat" que no contienen initializeAuth. Aunque el código se ejecuta para firebase v9, no persiste en el usuario. ¿Alguien sabe una solución para esto?
import { initializeApp } from "firebase/app" import { initializeAuth } from "firebase/auth" import { getReactNativePersistence } from "firebase/auth/react-native" import AsyncStorage from "@react-native-async-storage/async-storage" const defaultApp = initializeApp(config); initializeAuth(defaultApp, { persistence: getReactNativePersistence(AsyncStorage) });Mi flujo de registro en el contexto de autenticación:
try { await checkIsValidUsername(userData.username); await checkIsValidEmail(userData.email); await checkIsValidPassword(password); // create in firebase const result = await getAuth().createUserWithEmailAndPassword(userData.email, password); if (!result || !result.user || !result.user.uid) { dispatch({ type: 'error', payload: `Account creation failed for '${userData.email}'` }); return; } console.log(`Created account: ${result.user.uid} for ${result.user.email}, ${userData.username}`); // save in the account table with the new uid and oddsPreference added in await createUser({ ...userData, uid: result.user.uid, oddsPreference }); // Now try to login with the email and password const userCredential = await getAuth().signInWithEmailAndPassword(userData.email, password); const user = await getUserByUid(userCredential.user?.uid); if (user === null) { dispatch({ type: 'error', payload: 'Login failed!' }); } else { // Set the user in context dispatch({ type: 'set_user', payload: { ...user, username: user.username, email: user.email, oddsPreference: user.oddsPreference } }); } onSuccess(); } catch (e) { dispatch({ type: 'error', payload: e.message }); } finally { dispatch({ type: 'processing', payload: false }); } };