fix: rewrite tap callbacks to native calls

This commit is contained in:
osdnk
2019-05-13 19:06:41 +02:00
parent ad5366b107
commit 5c71dffc2c

View File

@@ -12,7 +12,6 @@ import {
PanGestureHandler,
TapGestureHandler,
State,
TapGestureHandlerStateChangeEvent,
} from 'react-native-gesture-handler';
import Animated from 'react-native-reanimated';
@@ -110,11 +109,16 @@ export default class DrawerView extends React.PureComponent<Props> {
open,
drawerPosition,
drawerType,
locked,
swipeDistanceThreshold,
swipeVelocityThreshold,
hideStatusBar,
} = this.props;
if (prevProps.locked !== locked) {
this.isLocked.setValue(locked ? TRUE : FALSE);
}
if (
// If we're not in the middle of a transition, sync the drawer's open state
typeof this.pendingOpenValue !== 'boolean' ||
@@ -161,6 +165,7 @@ export default class DrawerView extends React.PureComponent<Props> {
private isDrawerTypeFront = new Value<Binary>(
this.props.drawerType === 'front' ? TRUE : FALSE
);
private isLocked = new Value(this.props.locked ? TRUE : FALSE);
private isOpen = new Value<Binary>(this.props.open ? TRUE : FALSE);
private nextIsOpen = new Value<Binary | -1>(UNSET);
@@ -267,6 +272,7 @@ export default class DrawerView extends React.PureComponent<Props> {
set(state.velocity, this.velocityX),
set(this.isOpen, isOpen),
startClock(this.clock),
set(this.manuallyTriggerSpring, FALSE),
]),
spring(this.clock, state, { ...SPRING_CONFIG, toValue }),
cond(state.finished, [
@@ -349,7 +355,6 @@ export default class DrawerView extends React.PureComponent<Props> {
cond(
eq(this.gestureState, State.ACTIVE),
[
set(this.manuallyTriggerSpring, FALSE),
cond(this.isSwiping, NOOP, [
// We weren't dragging before, set it to true
set(this.isSwiping, TRUE),
@@ -425,13 +430,17 @@ export default class DrawerView extends React.PureComponent<Props> {
},
]);
private handleTapStateChange = ({
nativeEvent,
}: TapGestureHandlerStateChangeEvent) => {
if (nativeEvent.oldState === State.ACTIVE && !this.props.locked) {
this.manuallyTriggerSpring.setValue(TRUE);
}
};
private handleTapStateChange = event([
{
nativeEvent: {
oldState: (s: Animated.Value<number>) =>
cond(
and(eq(s, State.ACTIVE), eq(this.isLocked, FALSE)),
set(this.manuallyTriggerSpring, TRUE)
),
},
},
]);
private handleContainerLayout = (e: LayoutChangeEvent) =>
this.containerWidth.setValue(e.nativeEvent.layout.width);