Firebase screen
import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';
const firebaseConfig = {
apiKey: "xxxxx",
authDomain: "xxxx",
projectId: "xxxxx",
storageBucket: "xxxxx",
messagingSenderId: "xxxxxxx",
appId: "xxxxxxxx",
measurementId: "xxxxxx"
};
let app;
if (firebase.apps.length === 0) {
app = firebase.initializeApp(firebaseConfig)
} else {
app = firebase.app();
}
const db = app.firestore();
const auth = firebase.auth();
const api = firebase.app();
const phoneAuth = firebase.auth;
export { db, auth, api, phoneAuth};
App Screen
//redux
import {Provider} from 'react-redux';
import { createStore, applyMiddleware } from "redux";
import rootReducer from "./redux/reducers";
import thunk from "redux-thunk";
import { auth } from './src/config/firebase';
const store = createStore(rootReducer, applyMiddleware(thunk));
const Stack = createNativeStackNavigator();
export class App extends React.Component {
constructor(props) {
super(props);
this.state = {
loaded: false,
};
}
componentDidMount() {
auth.onAuthStateChanged((user) => {
console.log(user)<------------------------------------------
if (!user) {
this.setState({
loggedIn: false,
loaded: true,
});
} else {
this.setState({
loggedIn: true,
loaded: true
});
}
});
}
render() {
const { loggedIn, loaded } = this.state;
if (!loaded) {
return (
<SafeAreaView>
<Text>Template</Text>
<ActivityIndicator size='large' color='white'/>
</SafeAreaView>
);
}
if(!loggedIn) {
return (
<Provider store={store}>
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Landing" component={LandingScreen}/>
<Stack.Screen name="Register" component={RegisterScreen}/>
<Stack.Screen name="SignGuest" component={SignGuestScreen}/>
<Stack.Screen name="VerifyPhoneNumber" component={VerifyPhoneNumberScreen} />
<Stack.Screen name="AddressSearchPage" component={AddressSearchPageScreen} />
<Stack.Screen name="AddressSearch" component={AddressSearchScreen} />
</Stack.Navigator>
</NavigationContainer>
</Provider>
)
}
return (
<Provider store={store}>
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="TabNavigator" component={TabNavigatorScreen} />
<Stack.Screen name="Account" component={AccountScreen}/>
<Stack.Screen name="Cart" component={CartScreen}/>
<Stack.Screen name="RegisterModal" component={RegisterModalScreen} />
<Stack.Screen name="AddressSearch" component={AddressSearchScreen} />
<Stack.Screen name="DisplayItem" component={DisplayItemScreen} />
</Stack.Navigator>
</NavigationContainer>
</Provider>
)}
}
export default App;
Firebase logs out user when reloading expo. I put a console.log in the componentDidMount to see the problem and it returns null after the app reloads.
To be honest I don't understand where the problem is.
I would like for the user to stay logged in. I've tried many methods and read a lot of tutorials, but it just doesn't seem to work.