From 2cc759d300d89601979ee64e1ef98b0da14b6fa0 Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Wed, 6 Jun 2018 14:29:16 -0700 Subject: [PATCH] Merge pull request #1 from solomonhawk/sfh/fix-drawer-quick-navigate Fix a bug in DrawerView --- packages/drawer/src/views/DrawerView.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/drawer/src/views/DrawerView.js b/packages/drawer/src/views/DrawerView.js index 92dd6513..32ea1544 100644 --- a/packages/drawer/src/views/DrawerView.js +++ b/packages/drawer/src/views/DrawerView.js @@ -24,10 +24,10 @@ export default class DrawerView extends React.PureComponent { const { isDrawerOpen } = this.props.navigation.state; const wasDrawerOpen = prevProps.navigation.state.isDrawerOpen; - if (isDrawerOpen && !wasDrawerOpen && this._drawerState === 'closed') { + if (this._shouldOpen(isDrawerOpen, wasDrawerOpen)) { this._drawerState = 'opening'; this._drawer.openDrawer(); - } else if (wasDrawerOpen && !isDrawerOpen && this._drawerState === 'open') { + } else if (this._shouldClose(isDrawerOpen, wasDrawerOpen)) { this._drawerState = 'closing'; this._drawer.closeDrawer(); } @@ -39,6 +39,22 @@ export default class DrawerView extends React.PureComponent { _drawerState = 'closed'; + _shouldOpen = (isDrawerOpen, wasDrawerOpen) => { + return ( + isDrawerOpen && + !wasDrawerOpen && + (this._drawerState === 'closed' || this._drawerState === 'closing') + ); + }; + + _shouldClose = (isDrawerOpen, wasDrawerOpen) => { + return ( + wasDrawerOpen && + !isDrawerOpen && + (this._drawerState === 'open' || this._drawerState === 'opening') + ); + }; + _handleDrawerOpen = () => { const { navigation } = this.props; const { isDrawerOpen } = navigation.state;