102 lines
2.7 KiB
JavaScript
102 lines
2.7 KiB
JavaScript
|
import React from 'react';
|
||
|
import { createStackNavigator } from '@react-navigation/stack';
|
||
|
import { connect } from 'react-redux';
|
||
|
import PropTypes from 'prop-types';
|
||
|
|
||
|
import { ThemeContext } from '../theme';
|
||
|
import {
|
||
|
defaultHeader, themedHeader, StackAnimation, ModalAnimation
|
||
|
} from '../utils/navigation';
|
||
|
|
||
|
// Outside Stack
|
||
|
import OnboardingView from '../views/OnboardingView';
|
||
|
import NewServerView from '../views/NewServerView';
|
||
|
import WorkspaceView from '../views/WorkspaceView';
|
||
|
import LoginView from '../views/LoginView';
|
||
|
import ForgotPasswordView from '../views/ForgotPasswordView';
|
||
|
import RegisterView from '../views/RegisterView';
|
||
|
import LegalView from '../views/LegalView';
|
||
|
import AuthenticationWebView from '../views/AuthenticationWebView';
|
||
|
import { ROOT_OUTSIDE } from '../actions/app';
|
||
|
|
||
|
// Outside
|
||
|
const Outside = createStackNavigator();
|
||
|
const _OutsideStack = ({ root }) => {
|
||
|
const { theme } = React.useContext(ThemeContext);
|
||
|
|
||
|
return (
|
||
|
<Outside.Navigator screenOptions={{ ...defaultHeader, ...themedHeader(theme), ...StackAnimation }}>
|
||
|
{root === ROOT_OUTSIDE ? (
|
||
|
<Outside.Screen
|
||
|
name='OnboardingView'
|
||
|
component={OnboardingView}
|
||
|
options={OnboardingView.navigationOptions}
|
||
|
/>
|
||
|
) : null}
|
||
|
<Outside.Screen
|
||
|
name='NewServerView'
|
||
|
component={NewServerView}
|
||
|
options={NewServerView.navigationOptions}
|
||
|
/>
|
||
|
<Outside.Screen
|
||
|
name='WorkspaceView'
|
||
|
component={WorkspaceView}
|
||
|
options={WorkspaceView.navigationOptions}
|
||
|
/>
|
||
|
<Outside.Screen
|
||
|
name='LoginView'
|
||
|
component={LoginView}
|
||
|
options={LoginView.navigationOptions}
|
||
|
/>
|
||
|
<Outside.Screen
|
||
|
name='ForgotPasswordView'
|
||
|
component={ForgotPasswordView}
|
||
|
options={ForgotPasswordView.navigationOptions}
|
||
|
/>
|
||
|
<Outside.Screen
|
||
|
name='RegisterView'
|
||
|
component={RegisterView}
|
||
|
options={RegisterView.navigationOptions}
|
||
|
/>
|
||
|
<Outside.Screen
|
||
|
name='LegalView'
|
||
|
component={LegalView}
|
||
|
options={LegalView.navigationOptions}
|
||
|
/>
|
||
|
</Outside.Navigator>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
const mapStateToProps = state => ({
|
||
|
root: state.app.root
|
||
|
});
|
||
|
|
||
|
_OutsideStack.propTypes = {
|
||
|
root: PropTypes.string
|
||
|
};
|
||
|
|
||
|
const OutsideStack = connect(mapStateToProps)(_OutsideStack);
|
||
|
|
||
|
// OutsideStackModal
|
||
|
const OutsideModal = createStackNavigator();
|
||
|
const OutsideStackModal = () => {
|
||
|
const { theme } = React.useContext(ThemeContext);
|
||
|
|
||
|
return (
|
||
|
<OutsideModal.Navigator mode='modal' screenOptions={{ ...defaultHeader, ...themedHeader(theme), ...ModalAnimation }}>
|
||
|
<OutsideModal.Screen
|
||
|
name='OutsideStack'
|
||
|
component={OutsideStack}
|
||
|
options={{ headerShown: false }}
|
||
|
/>
|
||
|
<OutsideModal.Screen
|
||
|
name='AuthenticationWebView'
|
||
|
component={AuthenticationWebView}
|
||
|
options={AuthenticationWebView.navigationOptions}
|
||
|
/>
|
||
|
</OutsideModal.Navigator>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
export default OutsideStackModal;
|