From 4128e248d342ed8edcabb18806a0aa20bc3a290f Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Wed, 26 Sep 2018 16:50:21 -0700 Subject: [PATCH] Support multiple actions in one tick and fire them in the order that they arrive --- packages/drawer/src/views/DrawerView.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/drawer/src/views/DrawerView.js b/packages/drawer/src/views/DrawerView.js index dc97456a..6c592f80 100644 --- a/packages/drawer/src/views/DrawerView.js +++ b/packages/drawer/src/views/DrawerView.js @@ -33,17 +33,24 @@ export default class DrawerView extends React.PureComponent { toggleId: prevToggleId, } = prevProps.navigation.state; - if (openId !== prevOpenId) { - this._drawer.openDrawer(); - } else if (closeId !== prevCloseId) { - this._drawer.closeDrawer(); - } else if (toggleId !== prevToggleId) { - if (isDrawerOpen) { - this._drawer.closeDrawer(); - } else { + let prevIds = [prevOpenId, prevCloseId, prevToggleId]; + let changedIds = [openId, closeId, toggleId] + .filter(id => !prevIds.includes(id)) + .sort((a, b) => a > b); + + changedIds.forEach(id => { + if (id === openId) { this._drawer.openDrawer(); + } else if (id === closeId) { + this._drawer.closeDrawer(); + } else if (id === toggleId) { + if (isDrawerOpen) { + this._drawer.closeDrawer(); + } else { + this._drawer.openDrawer(); + } } - } + }); } componentWillUnmount() {