import React from 'react'; import { createBottomTabNavigator, BottomTabNavigationProp, BottomTabNavigationOptions } from '@react-navigation/bottom-tabs'; import { createStackNavigator, StackNavigationProp } from '@react-navigation/stack'; import { CompositeNavigationProp } from '@react-navigation/native'; import { THEME_COLOR } from 'CONSTANTS'; import Search from './Search'; import Music from './Music'; import Settings from './Settings'; import Downloads from './Downloads'; import Onboarding from './Onboarding'; import TrackPopupMenu from './modals/TrackPopupMenu'; import SetJellyfinServer from './modals/SetJellyfinServer'; import SearchIcon from 'assets/magnifying-glass.svg'; import NotesIcon from 'assets/notes.svg'; import GearIcon from 'assets/gear.svg'; import DownloadsIcon from 'assets/arrow-down-to-line.svg'; import { useTypedSelector } from 'store'; import { ModalStackParams } from './types'; import { t } from '@localisation'; import ErrorReportingAlert from 'utility/ErrorReportingAlert'; import ErrorReportingPopup from './modals/ErrorReportingPopup'; const Stack = createStackNavigator(); const Tab = createBottomTabNavigator(); type Screens = { NowPlaying: undefined; Music: undefined; Settings: undefined; } function Screens() { const isOnboardingComplete = useTypedSelector(state => state.settings.isOnboardingComplete); // GUARD: If onboarding has not been completed, we instead render the // onboarding component, so that the user can get setup in the app. if (!isOnboardingComplete) { return ; } return ( <> ({ tabBarIcon: function TabBarIcon({ color, size }) { switch (route.name) { case 'Search': return ; case 'Music': return ; case 'Settings': return ; case 'Downloads': return ; default: return null; } }, tabBarActiveTintColor: THEME_COLOR, tabBarInactiveTintColor: 'gray', headerShown: false, })} > ); } type Routes = { Screens: undefined; SetJellyfinServer: undefined; } export default function Routes() { return ( ); } export type NavigationProp = CompositeNavigationProp< StackNavigationProp, BottomTabNavigationProp >;