-
Notifications
You must be signed in to change notification settings - Fork 2.8k
/
BottomTabNavigator.tsx
45 lines (39 loc) · 1.77 KB
/
BottomTabNavigator.tsx
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
import {useNavigationState} from '@react-navigation/native';
import type {StackNavigationOptions} from '@react-navigation/stack';
import React from 'react';
import createCustomBottomTabNavigator from '@libs/Navigation/AppNavigator/createCustomBottomTabNavigator';
import getTopmostCentralPaneRoute from '@libs/Navigation/getTopmostCentralPaneRoute';
import type {BottomTabNavigatorParamList} from '@libs/Navigation/types';
import AllSettingsScreen from '@pages/home/sidebar/AllSettingsScreen';
import SidebarScreen from '@pages/home/sidebar/SidebarScreen';
import SCREENS from '@src/SCREENS';
import ActiveRouteContext from './ActiveRouteContext';
const loadWorkspaceInitialPage = () => require('../../../../pages/workspace/WorkspaceInitialPage').default as React.ComponentType;
const Tab = createCustomBottomTabNavigator<BottomTabNavigatorParamList>();
const screenOptions: StackNavigationOptions = {
headerShown: false,
animationEnabled: false,
};
function BottomTabNavigator() {
const activeRoute = useNavigationState(getTopmostCentralPaneRoute);
return (
<ActiveRouteContext.Provider value={activeRoute?.name ?? ''}>
<Tab.Navigator screenOptions={screenOptions}>
<Tab.Screen
name={SCREENS.HOME}
component={SidebarScreen}
/>
<Tab.Screen
name={SCREENS.ALL_SETTINGS}
component={AllSettingsScreen}
/>
<Tab.Screen
name={SCREENS.WORKSPACE.INITIAL}
getComponent={loadWorkspaceInitialPage}
/>
</Tab.Navigator>
</ActiveRouteContext.Provider>
);
}
BottomTabNavigator.displayName = 'BottomTabNavigator';
export default BottomTabNavigator;