import React, { useEffect } from 'react'; import PropTypes from 'prop-types'; import { useIsFocused } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; import { createDrawerNavigator } from '@react-navigation/drawer'; import { ThemeContext } from '../../theme'; import { defaultHeader, themedHeader, StackAnimation, FadeFromCenterModal } from '../../utils/navigation'; import { ModalContainer } from './ModalContainer'; // Chats Stack import RoomView from '../../views/RoomView'; import RoomsListView from '../../views/RoomsListView'; import RoomActionsView from '../../views/RoomActionsView'; import RoomInfoView from '../../views/RoomInfoView'; import RoomInfoEditView from '../../views/RoomInfoEditView'; import RoomMembersView from '../../views/RoomMembersView'; import SearchMessagesView from '../../views/SearchMessagesView'; import SelectedUsersView from '../../views/SelectedUsersView'; import InviteUsersView from '../../views/InviteUsersView'; import InviteUsersEditView from '../../views/InviteUsersEditView'; import MessagesView from '../../views/MessagesView'; import AutoTranslateView from '../../views/AutoTranslateView'; import DirectoryView from '../../views/DirectoryView'; import NotificationPrefView from '../../views/NotificationPreferencesView'; import VisitorNavigationView from '../../views/VisitorNavigationView'; import ForwardLivechatView from '../../views/ForwardLivechatView'; import LivechatEditView from '../../views/LivechatEditView'; import PickerView from '../../views/PickerView'; import ThreadMessagesView from '../../views/ThreadMessagesView'; import MarkdownTableView from '../../views/MarkdownTableView'; import ReadReceiptsView from '../../views/ReadReceiptView'; import ProfileView from '../../views/ProfileView'; import SettingsView from '../../views/SettingsView'; import LanguageView from '../../views/LanguageView'; import ThemeView from '../../views/ThemeView'; import DefaultBrowserView from '../../views/DefaultBrowserView'; import ScreenLockConfigView from '../../views/ScreenLockConfigView'; import AdminPanelView from '../../views/AdminPanelView'; import NewMessageView from '../../views/NewMessageView'; import CreateChannelView from '../../views/CreateChannelView'; // InsideStackNavigator import AttachmentView from '../../views/AttachmentView'; import ModalBlockView from '../../views/ModalBlockView'; import JitsiMeetView from '../../views/JitsiMeetView'; import StatusView from '../../views/StatusView'; import CreateDiscussionView from '../../views/CreateDiscussionView'; import { setKeyCommands, deleteKeyCommands } from '../../commands'; import ShareView from '../../views/ShareView'; // ChatsStackNavigator const ChatsStack = createStackNavigator(); const ChatsStackNavigator = React.memo(() => { const { theme } = React.useContext(ThemeContext); const isFocused = useIsFocused(); useEffect(() => { if (isFocused) { setKeyCommands(); } else { deleteKeyCommands(); } return () => { deleteKeyCommands(); }; }, [isFocused]); return ( ); }); // DrawerNavigator const Drawer = createDrawerNavigator(); const DrawerNavigator = React.memo(() => ( } drawerType='permanent' > )); const ModalStack = createStackNavigator(); const ModalStackNavigator = React.memo(({ navigation }) => { const { theme } = React.useContext(ThemeContext); return ( RoomActionsView.navigationOptions({ ...props, isMasterDetail: true })} /> DirectoryView.navigationOptions({ ...props, isMasterDetail: true })} /> ThreadMessagesView.navigationOptions({ ...props, isMasterDetail: true })} /> ReadReceiptsView.navigationOptions({ ...props, isMasterDetail: true })} /> SettingsView.navigationOptions({ ...props, isMasterDetail: true })} /> ProfileView.navigationOptions({ ...props, isMasterDetail: true })} /> AdminPanelView.navigationOptions({ ...props, isMasterDetail: true })} /> ); }); ModalStackNavigator.propTypes = { navigation: PropTypes.object }; // InsideStackNavigator const InsideStack = createStackNavigator(); const InsideStackNavigator = React.memo(() => { const { theme } = React.useContext(ThemeContext); return ( ); }); export default InsideStackNavigator;