summaryrefslogtreecommitdiff
path: root/app_expo/navigators/main-navigator.tsx
diff options
context:
space:
mode:
authorKirill Rogovoy <[email protected]>2021-07-20 21:24:52 +0300
committerKirill Rogovoy <[email protected]>2021-07-20 21:24:52 +0300
commit5f4611d65e40eae3ca6191a15f68d69ea5a1c4cb (patch)
tree273dfc086444533d86d580961c92ba8d14781a67 /app_expo/navigators/main-navigator.tsx
parentf0bf4e7afdcd8b02a62be45ab3e7d047ed865a79 (diff)
WIP
Diffstat (limited to 'app_expo/navigators/main-navigator.tsx')
-rw-r--r--app_expo/navigators/main-navigator.tsx59
1 files changed, 59 insertions, 0 deletions
diff --git a/app_expo/navigators/main-navigator.tsx b/app_expo/navigators/main-navigator.tsx
new file mode 100644
index 0000000..095a9bf
--- /dev/null
+++ b/app_expo/navigators/main-navigator.tsx
@@ -0,0 +1,59 @@
+/**
+ * This is the navigator you will modify to display the logged-in screens of your app.
+ * You can use RootNavigator to also display an auth flow or other user flows.
+ *
+ * You'll likely spend most of your time in this file.
+ */
+import React from 'react'
+import { createStackNavigator } from '@react-navigation/stack'
+import { WelcomeScreen, DemoScreen, DemoListScreen, GraphScreen } from '../screens'
+
+/**
+ * This type allows TypeScript to know what routes are defined in this navigator
+ * as well as what properties (if any) they might take when navigating to them.
+ *
+ * If no params are allowed, pass through `undefined`. Generally speaking, we
+ * recommend using your MobX-State-Tree store(s) to keep application state
+ * rather than passing state through navigation params.
+ *
+ * For more information, see this documentation:
+ * https://reactnavigation.org/docs/params/
+ * https://reactnavigation.org/docs/typescript#type-checking-the-navigator
+ */
+export type PrimaryParamList = {
+ welcome: undefined
+ demo: undefined
+ demoList: undefined
+ graph: undefined
+}
+
+// Documentation: https://reactnavigation.org/docs/stack-navigator/
+const Stack = createStackNavigator<PrimaryParamList>()
+
+export function MainNavigator() {
+ return (
+ <Stack.Navigator
+ screenOptions={{
+ cardStyle: { backgroundColor: 'transparent' },
+ headerShown: false,
+ }}
+ >
+ <Stack.Screen name="graph" component={GraphScreen} />
+ </Stack.Navigator>
+ )
+}
+
+/**
+ <Stack.Screen name="welcome" component={WelcomeScreen} />
+ <Stack.Screen name="demo" component={DemoScreen} />
+ <Stack.Screen name="demoList" component={DemoListScreen} />
+ * A list of routes from which we're allowed to leave the app when
+ * the user presses the back button on Android.
+ *
+ * Anything not on this list will be a standard `back` action in
+ * react-navigation.
+ *
+ * `canExit` is used in ./app/app.tsx in the `useBackButtonHandler` hook.
+ */
+const exitRoutes = ['welcome']
+export const canExit = (routeName: string) => exitRoutes.includes(routeName)