1import { LinkingOptions, NavigationContainer } from '@react-navigation/native';
2import { createStackNavigator } from '@react-navigation/stack';
3import * as Linking from 'expo-linking';
4import * as React from 'react';
5import { Text } from 'react-native';
6
7import RedirectScreen from '../screens/RedirectScreen';
8import SearchScreen from '../screens/SearchScreen';
9import MainNavigators from './MainNavigators';
10import MainTabNavigator from './MainTabNavigator';
11
12const Switch = createStackNavigator();
13
14export const linking: LinkingOptions<object> = {
15  prefixes: [Linking.createURL('/')],
16  config: {
17    screens: {
18      main: {
19        initialRouteName: 'apis',
20        screens: {
21          apis: MainNavigators.apis.linking,
22          components: MainNavigators.components.linking,
23        },
24      },
25      search: {
26        screens: {
27          search: 'search',
28        },
29      },
30    },
31  },
32};
33
34export default function RootNavigation() {
35  return (
36    <NavigationContainer linking={linking} fallback={<Text>Loading…</Text>}>
37      <Switch.Navigator screenOptions={{ presentation: 'modal', headerShown: false }}>
38        <Switch.Screen name="main" component={MainTabNavigator} />
39        <Switch.Screen name="redirect" component={RedirectScreen} />
40        <Switch.Screen
41          name="searchNavigator"
42          component={SearchScreen}
43          options={{ cardStyle: { backgroundColor: 'transparent' } }}
44        />
45      </Switch.Navigator>
46    </NavigationContainer>
47  );
48}
49