-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
94 lines (88 loc) · 2.23 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import { NavigationContainer } from "@react-navigation/native";
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import LoginScreen from "./screens/LoginScreen";
import SignUpScreen from "./screens/SignUpScreen";
import HomeScreen from "./screens/HomeScreen";
import AuthContextProvider, { useAuthContext } from "./context/AuthContext";
import { Pressable, StyleSheet } from "react-native";
import { Ionicons } from '@expo/vector-icons';
const Stack = createNativeStackNavigator();
function NormalStack() {
return (
<Stack.Navigator
screenOptions={{
headerStyle: {
backgroundColor: "bluviolet",
},
headerTintColor: "white",
contentStyle: {
backgroundColor: "white",
},
}}
>
<Stack.Screen
name="Login"
component={LoginScreen}
options={{
headerTitle: "Kullanıcı Giriş",
}}
/>
<Stack.Screen
name="Signup"
component={SignUpScreen}
options={{
headerTitle: "Kullanıcı Kayıt",
}}
/>
</Stack.Navigator>
);
}
function AfterAuthenticatedStack() {
const { logout } = useAuthContext()
return (
<Stack.Navigator
screenOptions={{
headerStyle: {
backgroundColor: "bluviolet",
},
headerTintColor: "white",
contentStyle: {
backgroundColor: "white",
},
}}
>
<Stack.Screen
name="Home"
component={HomeScreen}
options={{
headerTitle: "Ana Sayfa",
headerRight: ({ tintColor }) => (
<Pressable style={({pressed}) => pressed && styles.pressed} onPress={logout}>
<Ionicons name="exit" size={24} color={tintColor} />
</Pressable>
)
}}
/>
</Stack.Navigator>
);
}
function Navigation() {
const { isAuthenticated } = useAuthContext()
return (
<NavigationContainer>
{isAuthenticated ? <AfterAuthenticatedStack /> : <NormalStack />}
</NavigationContainer>
)
}
export default function App() {
return (
<AuthContextProvider>
<Navigation />
</AuthContextProvider>
);
}
const styles = StyleSheet.create({
pressed: {
opacity: 0.5
}
})