feat: add a getIsDrawerOpenFromState utility to drawer

This commit is contained in:
Satyajit Sahoo
2020-11-08 17:51:13 +01:00
parent 50a161dc3d
commit 5bd682f0bf
3 changed files with 19 additions and 1 deletions

View File

@@ -17,6 +17,7 @@ export { default as DrawerContentScrollView } from './views/DrawerContentScrollV
*/
export { default as DrawerGestureContext } from './utils/DrawerGestureContext';
export { default as getIsDrawerOpenFromState } from './utils/getIsDrawerOpenFromState';
export { default as useIsDrawerOpen } from './utils/useIsDrawerOpen';
/**

View File

@@ -0,0 +1,16 @@
import type {
DrawerNavigationState,
ParamListBase,
} from '@react-navigation/native';
export default function getIsDrawerOpenFromState(
state: DrawerNavigationState<ParamListBase>
): boolean {
if (state.history == null) {
throw new Error(
"Couldn't find the drawer status in the state object. Is it a valid state object of drawer navigator?"
);
}
return state.history.some((it) => it.type === 'drawer');
}

View File

@@ -24,6 +24,7 @@ import Drawer from './Drawer';
import DrawerOpenContext from '../utils/DrawerOpenContext';
import DrawerPositionContext from '../utils/DrawerPositionContext';
import useWindowDimensions from '../utils/useWindowDimensions';
import getIsDrawerOpenFromState from '../utils/getIsDrawerOpenFromState';
import type {
DrawerDescriptorMap,
DrawerNavigationConfig,
@@ -90,7 +91,7 @@ export default function DrawerView({
const { colors } = useTheme();
const isDrawerOpen = state.history.some((it) => it.type === 'drawer');
const isDrawerOpen = getIsDrawerOpenFromState(state);
const handleDrawerOpen = React.useCallback(() => {
navigation.dispatch({