import React from 'react' import {observer} from 'mobx-react-lite' import {StatusBar, StyleSheet, useWindowDimensions, View} from 'react-native' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {Drawer} from 'react-native-drawer-layout' import {useNavigationState} from '@react-navigation/native' import {useStores} from 'state/index' import {ModalsContainer} from 'view/com/modals/Modal' import {Lightbox} from 'view/com/lightbox/Lightbox' import {Text} from 'view/com/util/text/Text' import {ErrorBoundary} from 'view/com/util/ErrorBoundary' import {DrawerContent} from './Drawer' import {Composer} from './Composer' import {s} from 'lib/styles' import {useTheme} from 'lib/ThemeContext' import {usePalette} from 'lib/hooks/usePalette' import {RoutesContainer, TabsNavigator} from '../../Navigation' import {isStateAtTabRoot} from 'lib/routes/helpers' const ShellInner = observer(() => { const store = useStores() const winDim = useWindowDimensions() const safeAreaInsets = useSafeAreaInsets() const containerPadding = React.useMemo( () => ({height: '100%', paddingTop: safeAreaInsets.top}), [safeAreaInsets], ) const renderDrawerContent = React.useCallback(() => , []) const onOpenDrawer = React.useCallback( () => store.shell.openDrawer(), [store], ) const onCloseDrawer = React.useCallback( () => store.shell.closeDrawer(), [store], ) const canGoBack = useNavigationState(state => !isStateAtTabRoot(state)) return ( <> store.shell.closeComposer()} winHeight={winDim.height} replyTo={store.shell.composerOpts?.replyTo} onPost={store.shell.composerOpts?.onPost} quote={store.shell.composerOpts?.quote} /> ) }) export const Shell: React.FC = observer(() => { const theme = useTheme() const pal = usePalette('default') const store = useStores() if (store.hackUpgradeNeeded) { return ( Update required Please update your app to the latest version. If no update is available yet, please check the App Store in a day or so. What's happening? We're in the final stages of the AT Protocol's v1 development. To make sure everything works as well as possible, we're making final breaking changes to the APIs. If we didn't botch this process, a new version of the app should be available now. ) } return ( ) }) const styles = StyleSheet.create({ outerContainer: { height: '100%', }, })