Esse é o meu firebase.js:
// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import AsyncStorage from "@react-native-async-storage/async-storage";
import { initializeAuth, getReactNativePersistence} from "firebase/auth";
import { getFirestore } from 'firebase/firestore';
import {
API_KEY,
AUTH_DOMAIN,
PROJECT_ID,
STORAGE_BUCKET,
MESSAGING_SENDER_ID,
APP_ID,
MEASUREMENT_ID,
} from '@env'
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
// Your web app's Firebase configuration
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
apiKey: API_KEY,
authDomain: AUTH_DOMAIN,
projectId: PROJECT_ID,
storageBucket: STORAGE_BUCKET,
messagingSenderId: MESSAGING_SENDER_ID,
appId: APP_ID,
measurementId: MEASUREMENT_ID,
};
const app = initializeApp(firebaseConfig);
const db = getFirestore(app)
const auth = initializeAuth(app, {
persistence: getReactNativePersistence(AsyncStorage)
});
export { auth, db }
Esse é o meu DadosProduto/index.js:
import { ToastAndroid, View } from "react-native";
import { EntradaTexto } from "../../componentes/EntradaTexto";
import Botao from "../../componentes/Botao";
import estilos from './estilos'
import { useState } from "react";
import { addDoc, collection } from "firebase/firestore";
import { db } from "../../config/firebase";
import { NativeStackNavigationProp } from "@react-navigation/native-stack";
export default function DadosProduto({navigation}) {
const [produto, setProduto] = useState({
nome: '',
preco: ''
});
async function criarProduto() {
await addDoc(collection(db, "produtos"), {
"nome": produto.nome,
"preco": produto.preco
});
ToastAndroid.show('Produto criado com sucesso', ToastAndroid.SHORT);
navigation.navigate('Principal');
}
return (
<View style={estilos.container}>
<EntradaTexto
label={"Nome do produto"}
value={produto.nome}
autoCapitalize='sentences'
onChangeText={(texto) => setProduto({...produto, nome: texto})}
/>
<EntradaTexto
label={'Preço do produto'}
value={produto.preco}
onChangeText={(texto) => setProduto({...produto, preco: texto})}
/>
<Botao onPress={() => criarProduto()}>Salvar</Botao>
</View>
)
}
Não importa quantas vezes eu tente, a aplicação simplesmente não navega de volta para a tela anterior pq o firestore simplesmente não executa nada depois dessa linha que eu tento gravar. E nem adianta colocar try catch pq ele simplesmente não retorna exceção alguma. No firebase até consta leituras, mas o número de gravações não muda