import { NavigationContainer, Theme } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; import React, { useCallback } from 'react'; import { StatusBar } from 'react-native'; import { connect } from 'react-redux'; import { IReduxState, IStore } from '../../../app/types'; import DialInSummary from '../../../invite/components/dial-in-summary/native/DialInSummary'; import Prejoin from '../../../prejoin/components/native/Prejoin'; import UnsafeRoomWarning from '../../../prejoin/components/native/UnsafeRoomWarning'; import { isUnsafeRoomWarningEnabled } from '../../../prejoin/functions'; import VisitorsQueue from '../../../visitors/components/native/VisitorsQueue'; // eslint-disable-next-line // @ts-ignore import WelcomePage from '../../../welcome/components/WelcomePage'; import { isWelcomePageEnabled } from '../../../welcome/functions'; import { _ROOT_NAVIGATION_READY } from '../actionTypes'; import { rootNavigationRef } from '../rootNavigationContainerRef'; import { screen } from '../routes'; import { conferenceNavigationContainerScreenOptions, connectingScreenOptions, dialInSummaryScreenOptions, navigationContainerTheme, preJoinScreenOptions, unsafeMeetingScreenOptions, visitorsScreenOptions, welcomeScreenOptions } from '../screenOptions'; import ConnectingPage from './ConnectingPage'; import ConferenceNavigationContainer from './conference/components/ConferenceNavigationContainer'; const RootStack = createStackNavigator(); interface IProps { /** * Redux dispatch function. */ dispatch: IStore['dispatch']; /** * Is unsafe room warning available? */ isUnsafeRoomWarningAvailable: boolean; /** * Is welcome page available? */ isWelcomePageAvailable: boolean; } const RootNavigationContainer = ({ dispatch, isUnsafeRoomWarningAvailable, isWelcomePageAvailable }: IProps) => { const initialRouteName = isWelcomePageAvailable ? screen.welcome.main : screen.connecting; const onReady = useCallback(() => { dispatch({ type: _ROOT_NAVIGATION_READY, ready: true }); }, [ dispatch ]); return ( { isWelcomePageAvailable && <> } { isUnsafeRoomWarningAvailable && } ); }; /** * Maps part of the Redux store to the props of this component. * * @param {Object} state - The Redux state. * @returns {IProps} */ function mapStateToProps(state: IReduxState) { return { isUnsafeRoomWarningAvailable: isUnsafeRoomWarningEnabled(state), isWelcomePageAvailable: isWelcomePageEnabled(state) }; } export default connect(mapStateToProps)(RootNavigationContainer);