mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-14 20:17:48 +00:00
* feat(prejoin) created native Prejoin screen * feat(prejoin) fixed useState callback and updates warnings * feat(prejoin) created styles file * feat(prejoin) moved nav from middleware to appNavigate, created native DeviceStatus * feat(prejoin) updated styles * feat(prejoin) review remarks pt. 1 * feat(prejoin) removed unused styles * feat(prejoin) review remarks pt. 2 * feat(prejoin) comment fix * feat(prejoin) added header title * feat(prejoin) review remarks * feat(lobby) updated styles * feat(prejoin) updated lobby screen header button functionality * feat(prejoin) review remarks pt 3 * feat(welcome) removed VideoSwitch component * feat(mobile/navigation) fixed linter * feat(welcome) moved isWelcomePageEnabled to functions.ts * feat(mobile/navigation) screen options and order updates * feat(app) review remark * feat(welcome) added translation for screen header title and fixed build * feat(mobile/navigation) added screen title translation and created screen option * feat(mobile/navigation) fixed screenOptions import * feat(mobile/navigation) added DialInSummary title translation, fixed animation and close button * feat(welcome) fixed build * feat(welcome) removed extra check * feat(prejoin) review remarks pt 4 * feat(prejoin) added Join in low bandwidth mode btn * feat(welcome) changed welcome screen header title * fixup lobby close
105 lines
3.5 KiB
JavaScript
105 lines
3.5 KiB
JavaScript
import { NavigationContainer } from '@react-navigation/native';
|
|
import { createNativeStackNavigator } from '@react-navigation/native-stack';
|
|
import React, { useCallback } from 'react';
|
|
|
|
import { connect } from '../../../base/redux';
|
|
import { DialInSummary } from '../../../invite';
|
|
import Prejoin from '../../../prejoin/components/Prejoin.native';
|
|
import { isWelcomePageEnabled } from '../../../welcome/functions';
|
|
import { _ROOT_NAVIGATION_READY } from '../actionTypes';
|
|
import { rootNavigationRef } from '../rootNavigationContainerRef';
|
|
import { screen } from '../routes';
|
|
import {
|
|
conferenceNavigationContainerScreenOptions,
|
|
connectingScreenOptions,
|
|
dialInSummaryScreenOptions,
|
|
drawerNavigatorScreenOptions,
|
|
navigationContainerTheme,
|
|
preJoinScreenOptions
|
|
} from '../screenOptions';
|
|
|
|
import ConnectingPage from './ConnectingPage';
|
|
import ConferenceNavigationContainer
|
|
from './conference/components/ConferenceNavigationContainer';
|
|
import WelcomePageNavigationContainer
|
|
from './welcome/components/WelcomePageNavigationContainer';
|
|
|
|
const RootStack = createNativeStackNavigator();
|
|
|
|
|
|
type Props = {
|
|
|
|
/**
|
|
* Redux dispatch function.
|
|
*/
|
|
dispatch: Function,
|
|
|
|
/**
|
|
* Is welcome page available?
|
|
*/
|
|
isWelcomePageAvailable: boolean
|
|
}
|
|
|
|
|
|
const RootNavigationContainer = ({ dispatch, isWelcomePageAvailable }: Props) => {
|
|
const initialRouteName = isWelcomePageAvailable
|
|
? screen.root : screen.connecting;
|
|
const onReady = useCallback(() => {
|
|
dispatch({
|
|
type: _ROOT_NAVIGATION_READY,
|
|
ready: true
|
|
});
|
|
}, [ dispatch ]);
|
|
|
|
return (
|
|
<NavigationContainer
|
|
independent = { true }
|
|
onReady = { onReady }
|
|
ref = { rootNavigationRef }
|
|
theme = { navigationContainerTheme }>
|
|
<RootStack.Navigator
|
|
initialRouteName = { initialRouteName }>
|
|
{
|
|
isWelcomePageAvailable
|
|
&& <>
|
|
<RootStack.Screen
|
|
component = { WelcomePageNavigationContainer }
|
|
name = { screen.root }
|
|
options = { drawerNavigatorScreenOptions } />
|
|
<RootStack.Screen
|
|
component = { DialInSummary }
|
|
name = { screen.dialInSummary }
|
|
options = { dialInSummaryScreenOptions } />
|
|
</>
|
|
}
|
|
<RootStack.Screen
|
|
component = { ConnectingPage }
|
|
name = { screen.connecting }
|
|
options = { connectingScreenOptions } />
|
|
<RootStack.Screen
|
|
component = { Prejoin }
|
|
name = { screen.preJoin }
|
|
options = { preJoinScreenOptions } />
|
|
<RootStack.Screen
|
|
component = { ConferenceNavigationContainer }
|
|
name = { screen.conference.root }
|
|
options = { conferenceNavigationContainerScreenOptions } />
|
|
</RootStack.Navigator>
|
|
</NavigationContainer>
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Maps part of the Redux store to the props of this component.
|
|
*
|
|
* @param {Object} state - The Redux state.
|
|
* @returns {Props}
|
|
*/
|
|
function mapStateToProps(state: Object) {
|
|
return {
|
|
isWelcomePageAvailable: isWelcomePageEnabled(state)
|
|
};
|
|
}
|
|
|
|
export default connect(mapStateToProps)(RootNavigationContainer);
|