import React, {useEffect} from 'react' import {View, StyleSheet, TouchableOpacity} from 'react-native' import {ErrorBoundary} from '../com/util/ErrorBoundary' import {Lightbox} from '../com/lightbox/Lightbox' import {ModalsContainer} from '../com/modals/Modal' import {Composer} from './Composer.web' import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' import {s, colors} from 'lib/styles' import {RoutesContainer, FlatNavigator} from '../../Navigation' import {DrawerContent} from './Drawer' import {useWebMediaQueries} from '../../lib/hooks/useWebMediaQueries' import {useNavigation} from '@react-navigation/native' import {NavigationProp} from 'lib/routes/types' import {useAuxClick} from 'lib/hooks/useAuxClick' import {t} from '@lingui/macro' import {useIsDrawerOpen, useSetDrawerOpen} from '#/state/shell' import {useCloseAllActiveElements} from '#/state/util' function ShellInner() { const isDrawerOpen = useIsDrawerOpen() const setDrawerOpen = useSetDrawerOpen() const {isDesktop} = useWebMediaQueries() const navigator = useNavigation() const closeAllActiveElements = useCloseAllActiveElements() useAuxClick() useEffect(() => { const unsubscribe = navigator.addListener('state', () => { closeAllActiveElements() }) return unsubscribe }, [navigator, closeAllActiveElements]) return ( {!isDesktop && isDrawerOpen && ( setDrawerOpen(false)} style={styles.drawerMask} accessibilityLabel={t`Close navigation footer`} accessibilityHint={t`Closes bottom navigation bar`}> )} ) } export const Shell: React.FC = function ShellImpl() { const pageBg = useColorSchemeStyle(styles.bgLight, styles.bgDark) return ( ) } const styles = StyleSheet.create({ bgLight: { backgroundColor: colors.white, }, bgDark: { backgroundColor: colors.black, // TODO }, drawerMask: { position: 'absolute', width: '100%', height: '100%', top: 0, left: 0, backgroundColor: 'rgba(0,0,0,0.25)', }, drawerContainer: { display: 'flex', position: 'absolute', top: 0, left: 0, height: '100%', }, })