Skip to content

Commit f6dfc54

Browse files
committed
Fix Splash + Onboarding
1 parent 09d02fa commit f6dfc54

File tree

14 files changed

+242
-184
lines changed

14 files changed

+242
-184
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,7 @@
9090
22. Handle ID javascript with firebase
9191

9292
- https://stackoverflow.com/questions/56144736/react-native-firebase-display-array-of-objects-using-flatlist
93+
94+
23. Folder structure READ.ME
95+
96+
- https://github.com/kriasoft/Folder-Structure-Conventions/blob/master/README.md

src/navigation/AppNavigator.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
import React from 'react';
1+
import React, {useEffect, useState} from 'react';
22
import {createStackNavigator} from '@react-navigation/stack';
3+
import {useNavigation} from '@react-navigation/native';
4+
import firebase from 'firebase';
35

46
import AuthLoadingScreen from './AuthLoadingNavigator';
57
import DrawerNavigator from './DrawerNavigator';
@@ -8,6 +10,22 @@ import AuthStackNavigator from './AuthNavigator';
810
const Stack = createStackNavigator();
911

1012
export default function AppStackNavigator() {
13+
const navigation = useNavigation();
14+
const {navigate} = navigation;
15+
16+
// const authContext = useContext(CTX);
17+
// const {token} = authContext;
18+
19+
useEffect(() => {
20+
_bootstrapAsync();
21+
}, []);
22+
23+
function _bootstrapAsync() {
24+
firebase.auth().onAuthStateChanged(user => {
25+
navigate(user ? 'Dashboard' : 'Auth');
26+
});
27+
}
28+
1129
return (
1230
<Stack.Navigator initialRouteName="AuthLoading" headerMode="none">
1331
<Stack.Screen name="Auth" component={AuthStackNavigator} />

src/navigation/AuthLoadingNavigator.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default function AuthLoadingScreen(props) {
1515

1616
useEffect(() => {
1717
_bootstrapAsync();
18-
});
18+
}, []);
1919

2020
function _bootstrapAsync() {
2121
firebase.auth().onAuthStateChanged(user => {

src/navigation/InitNavigator.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
import React, {useEffect} from 'react';
22
import {createStackNavigator} from '@react-navigation/stack';
3+
import {LayoutAnimation} from 'react-native';
34

4-
import SplashScreen from '../screens/Splash';
5-
import OnBoardingScreen from '../screens/OnBoarding';
65
import AppNavigator from './AppNavigator';
7-
8-
// import LoadingScreen from '../components/Loading';
9-
import {LayoutAnimation} from 'react-native';
6+
import IntroScreen from '../screens/Intro';
107

118
const Stack = createStackNavigator();
129

@@ -15,10 +12,8 @@ export default function InitialStackNavigator() {
1512
LayoutAnimation.easeInEaseOut();
1613
});
1714
return (
18-
<Stack.Navigator initialRouteName="Splash" headerMode="none">
19-
{/* <Stack.Screen name="Loading" component={LoadingScreen} /> */}
20-
<Stack.Screen name="Splash" component={SplashScreen} />
21-
<Stack.Screen name="OnBoarding" component={OnBoardingScreen} />
15+
<Stack.Navigator initialRouteName="Intro" headerMode="none">
16+
<Stack.Screen name="Intro" component={IntroScreen} />
2217
<Stack.Screen name="App" component={AppNavigator} />
2318
</Stack.Navigator>
2419
);

src/screens/Home.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,20 @@ export default function HomeScreen() {
6464
var returnArray = [];
6565

6666
snapshot.forEach(function(doc) {
67-
let item = {};
68-
item = doc.data();
69-
item.id = doc.id;
70-
item.avatar = require('../assets/avatar/image1.png');
71-
returnArray.push(item);
67+
const {id} = doc;
68+
returnArray.push({
69+
id,
70+
...doc.data(),
71+
avatar: require('../assets/avatar/image1.png'),
72+
});
7273
});
7374

74-
// console.log(returnArray);
75-
7675
setPosts(returnArray);
7776
})
7877
.catch(err => {
7978
console.log('Error getting documents', err);
8079
});
81-
});
80+
}, []);
8281

8382
renderPost = post => {
8483
return (

src/screens/Intro.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import React, {useEffect, useContext, useState} from 'react';
2+
import {View, StyleSheet} from 'react-native';
3+
import {useNavigation} from '@react-navigation/native';
4+
5+
import {CTX} from '../tools/context';
6+
7+
import SplashScreen from './Splash';
8+
import OnBoardingScreen from './OnBoarding';
9+
10+
export default function IntroScreen() {
11+
const [loading, setLoading] = useState(true);
12+
13+
const skipContext = useContext(CTX);
14+
const {skip} = skipContext;
15+
16+
const navigation = useNavigation();
17+
const {navigate} = navigation;
18+
19+
useEffect(() => {
20+
const timer = setTimeout(() => {
21+
setLoading(false);
22+
}, 1000);
23+
return () => clearTimeout(timer);
24+
});
25+
26+
return (
27+
<View style={styles.container}>
28+
{loading ? (
29+
<SplashScreen />
30+
) : skip ? (
31+
navigate('App')
32+
) : (
33+
<OnBoardingScreen />
34+
)}
35+
</View>
36+
);
37+
}
38+
39+
const styles = StyleSheet.create({
40+
container: {
41+
flex: 1,
42+
alignItems: 'center',
43+
justifyContent: 'center',
44+
backgroundColor: '#FFF6F9',
45+
},
46+
title: {
47+
color: '#000000',
48+
},
49+
image: {
50+
height: 200,
51+
width: 200,
52+
},
53+
});

0 commit comments

Comments
 (0)