From c8d49948b1208217dd132907beabfc2bd97eaa09 Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Tue, 16 Oct 2018 15:10:18 -0700 Subject: [PATCH] Handle back button properly when the drawer is open --- packages/drawer/src/views/DrawerView.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/drawer/src/views/DrawerView.js b/packages/drawer/src/views/DrawerView.js index ea41dc15..1c22af7b 100644 --- a/packages/drawer/src/views/DrawerView.js +++ b/packages/drawer/src/views/DrawerView.js @@ -60,6 +60,24 @@ export default class DrawerView extends React.PureComponent { drawerGestureRef = React.createRef(); + _handleDrawerStateChange = newState => { + if (newState === 'Idle') { + if (!this.props.navigation.state.isDrawerIdle) { + this.props.navigation.dispatch({ + type: DrawerActions.MARK_DRAWER_IDLE, + key: this.props.navigation.state.key, + }); + } + } else { + if (this.props.navigation.state.isDrawerIdle) { + this.props.navigation.dispatch({ + type: DrawerActions.MARK_DRAWER_ACTIVE, + key: this.props.navigation.state.key, + }); + } + } + }; + _handleDrawerOpen = () => { this.props.navigation.dispatch({ type: DrawerActions.DRAWER_OPENED, @@ -126,6 +144,7 @@ export default class DrawerView extends React.PureComponent { drawerWidth={this.state.drawerWidth} onDrawerOpen={this._handleDrawerOpen} onDrawerClose={this._handleDrawerClose} + onDrawerStateChanged={this._handleDrawerStateChange} useNativeAnimations={this.props.navigationConfig.useNativeAnimations} renderNavigationView={this._renderNavigationView} drawerPosition={