2020-10-23 09:22:17 +02:00
|
|
|
import 'react-native-gesture-handler'
|
|
|
|
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'
|
|
|
|
import { NavigationContainer } from '@react-navigation/native'
|
|
|
|
import { enableScreens } from 'react-native-screens'
|
|
|
|
|
|
|
|
import React from 'react'
|
2020-10-24 18:07:09 +02:00
|
|
|
import { Feather } from '@expo/vector-icons'
|
2020-11-21 13:19:05 +01:00
|
|
|
|
|
|
|
// @ts-ignore
|
2020-11-06 00:59:33 +01:00
|
|
|
import Toast from 'react-native-toast-message'
|
2020-10-23 09:22:17 +02:00
|
|
|
|
2020-11-21 13:19:05 +01:00
|
|
|
import ScreenLocal from 'src/screens/Local'
|
|
|
|
import ScreenPublic from 'src/screens/Public'
|
|
|
|
import ScreenNotifications from 'src/screens/Notifications'
|
|
|
|
import ScreenMe from 'src/screens/Me'
|
2020-10-23 09:22:17 +02:00
|
|
|
|
2020-11-23 00:07:32 +01:00
|
|
|
import { themes } from 'src/utils/styles/themes'
|
|
|
|
import { useTheme } from 'src/utils/styles/ThemeManager'
|
|
|
|
|
2020-10-26 00:27:53 +01:00
|
|
|
enableScreens()
|
2020-10-23 09:22:17 +02:00
|
|
|
const Tab = createBottomTabNavigator()
|
|
|
|
|
2020-10-31 21:04:46 +01:00
|
|
|
export const Index: React.FC = () => {
|
2020-11-23 00:07:32 +01:00
|
|
|
const { mode, theme } = useTheme()
|
|
|
|
|
2020-10-23 09:22:17 +02:00
|
|
|
return (
|
2020-11-23 00:07:32 +01:00
|
|
|
<NavigationContainer theme={themes[mode]}>
|
2020-11-21 13:19:05 +01:00
|
|
|
<Tab.Navigator
|
|
|
|
screenOptions={({ route }) => ({
|
|
|
|
tabBarIcon: ({ focused, color, size }) => {
|
|
|
|
let name: string
|
|
|
|
switch (route.name) {
|
|
|
|
case 'Screen-Local':
|
|
|
|
name = 'home'
|
|
|
|
break
|
|
|
|
case 'Screen-Public':
|
|
|
|
name = 'globe'
|
|
|
|
break
|
|
|
|
case 'Screen-Post':
|
|
|
|
name = 'plus'
|
|
|
|
break
|
|
|
|
case 'Screen-Notifications':
|
|
|
|
name = 'bell'
|
|
|
|
break
|
|
|
|
case 'Screen-Me':
|
|
|
|
name = focused ? 'smile' : 'meh'
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
name = 'alert-octagon'
|
|
|
|
break
|
|
|
|
}
|
|
|
|
return <Feather name={name} size={size} color={color} />
|
|
|
|
}
|
|
|
|
})}
|
|
|
|
tabBarOptions={{
|
2020-11-23 00:07:32 +01:00
|
|
|
activeTintColor: theme.primary,
|
|
|
|
inactiveTintColor: theme.secondary,
|
2020-11-21 13:19:05 +01:00
|
|
|
showLabel: false
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
<Tab.Screen name='Screen-Local' component={ScreenLocal} />
|
|
|
|
<Tab.Screen name='Screen-Public' component={ScreenPublic} />
|
|
|
|
<Tab.Screen
|
|
|
|
name='Screen-Post'
|
|
|
|
listeners={({ navigation, route }) => ({
|
|
|
|
tabPress: e => {
|
|
|
|
e.preventDefault()
|
|
|
|
const {
|
|
|
|
length,
|
|
|
|
[length - 1]: last
|
|
|
|
} = navigation.dangerouslyGetState().history
|
2020-11-22 00:57:43 +01:00
|
|
|
navigation.navigate(last.key.split(new RegExp(/(.*)-/))[1], {
|
|
|
|
screen: 'Screen-Shared-Compose'
|
2020-11-21 13:19:05 +01:00
|
|
|
})
|
2020-11-15 23:33:01 +01:00
|
|
|
}
|
|
|
|
})}
|
2020-11-22 00:46:23 +01:00
|
|
|
>
|
|
|
|
{() => <></>}
|
|
|
|
</Tab.Screen>
|
|
|
|
<Tab.Screen
|
|
|
|
name='Screen-Notifications'
|
|
|
|
component={ScreenNotifications}
|
2020-11-21 13:19:05 +01:00
|
|
|
/>
|
|
|
|
<Tab.Screen name='Screen-Me' component={ScreenMe} />
|
|
|
|
</Tab.Navigator>
|
2020-11-06 00:59:33 +01:00
|
|
|
|
2020-11-21 13:19:05 +01:00
|
|
|
<Toast ref={(ref: any) => Toast.setRef(ref)} />
|
|
|
|
</NavigationContainer>
|
2020-10-23 09:22:17 +02:00
|
|
|
)
|
|
|
|
}
|