RN: Fix TouchableHighlight w/o onLongPress

Summary:
When `TouchableHighlight` was migrated to use `Pressability`, a bug was introduced due to `onLongPress` being unconditionally supplied as a callback. This bug leads to `onPress` not firing if the element is pressed for longer than 500ms, even when `onLongPress` is not supplied.

Closes #29040.

Changelog:
[General][Fixed] - TouchableHighlight fires `onPress` when pressed for >500ms, when `onLongPress` is not supplied.

Reviewed By: TheSavior

Differential Revision: D23664365

fbshipit-source-id: 3a0e92e276871eedd303888346a13433be15ac47
This commit is contained in:
Tim Yung authored and Facebook GitHub Bot committed 2020-09-11 19:05:54 -07:00
1 parent 8e9d3ceddf
commit bdf3c79110
2 files changed
+2 -10

No files matched your search

@@ -72,11 +72,7 @@ class TouchableBounce extends React.Component<Props, State> {
this.props.onFocus(event);
}
},
onLongPress: event => {
if (this.props.onLongPress != null) {
this.props.onLongPress(event);
}
},
onLongPress: this.props.onLongPress,
onPress: event => {
const {onPressAnimationComplete, onPressWithCompletion} = this.props;
const releaseBounciness = this.props.releaseBounciness ?? 10;
@@ -193,11 +193,7 @@ class TouchableHighlight extends React.Component<Props, State> {
this.props.onFocus(event);
}
},
onLongPress: event => {
if (this.props.onLongPress != null) {
this.props.onLongPress(event);
}
},
onLongPress: this.props.onLongPress,
onPress: event => {
if (this._hideTimeout != null) {
clearTimeout(this._hideTimeout);