Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix inactive handlers staying at finished state #2738

Merged
merged 2 commits into from
Feb 5, 2024

Conversation

m-bert
Copy link
Contributor

@m-bert m-bert commented Feb 1, 2024

Description

While investigating #2370 I've found out that if handler has enabled: false and moves to state END, it won't reach UNDETERMINED. This fact makes it useless because it is stuck at finished state. It happens because of this line. In order to fix that, I've decided to reset handler in case if it moves to END state while being inactive.

Fixes #2730

Test plan

Tested on the following code
import React, { useState } from 'react';
import {
  View,
  SafeAreaView,
  Text,
  TextInput,
  TouchableOpacity as RNTouchable,
} from 'react-native';
import { TouchableOpacity as GHTouchable } from 'react-native-gesture-handler';

const BrokenGestureHandlerTouchable = () => {
  const [disabled, setDisabled] = useState(true);
  const [didClick, setDidClick] = useState(false);
  return (
    <View>
      <Text>
        Breaks with react-native-gesture-handler's TouchableOpacity. Refresh the
        page, click the disabled button, edit the text, click the button that
        should be enabled again and the click isn't triggered (no opacity change
        and no function call). If you refresh the page, edit the text, then
        click the enabled button, it works as expected.
      </Text>
      <TextInput
        placeholder="Text Input"
        placeholderTextColor="#AAAAAA"
        onChangeText={(text) => {
          setDisabled(false);
        }}
      />
      <GHTouchable
        disabled={disabled}
        onPress={() => {
          setDidClick(true);
        }}
        style={{
          borderWidth: 1,
          borderColor: 'pink',
        }}>
        <Text>Click me! {`Disabled: ${disabled}. Clicked: ${didClick}`}</Text>
      </GHTouchable>
    </View>
  );
};

const WorkingReactNativeTouchable = () => {
  const [disabled, setDisabled] = useState(true);
  const [didClick, setDidClick] = useState(false);
  return (
    <View>
      <Text>
        Works with react-native's TouchableOpacity. Refresh the page, click the
        disabled button, edit the text, click the now-enabled button again and
        it works.
      </Text>
      <TextInput
        placeholder="Text Input"
        placeholderTextColor="#AAAAAA"
        onChangeText={(text) => {
          setDisabled(false);
        }}
      />
      <RNTouchable
        disabled={disabled}
        onPress={() => {
          setDidClick(true);
        }}
        style={{
          borderWidth: 1,
          borderColor: 'pink',
        }}>
        <Text>Click me! {`Disabled: ${disabled}. Clicked: ${didClick}`}</Text>
      </RNTouchable>
    </View>
  );
};

export default function App() {
  return (
    <SafeAreaView>
      <WorkingReactNativeTouchable />
      <View
        style={{
          height: 50,
        }}
      />
      <BrokenGestureHandlerTouchable />
    </SafeAreaView>
  );
}

@j-piasecki
Copy link
Member

If it's happening with END state, wouldn't it also happen with CANCELED and FAILED?

@m-bert
Copy link
Contributor Author

m-bert commented Feb 2, 2024

Good catch @j-piasecki! Now we call isFinished instead of checking whether handler is in END state. Let me know what you think!

@m-bert m-bert changed the title Fix inactive handlers staying at END Fix inactive handlers staying at finished state Feb 5, 2024
@m-bert m-bert merged commit 3a23bfa into main Feb 5, 2024
1 check passed
@m-bert m-bert deleted the @mbert/fix-inactive-handlers-stay-at-end branch February 5, 2024 09:03
renovate bot referenced this pull request in valora-inc/wallet Feb 17, 2024
…4933)

[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[react-native-gesture-handler](https://togithub.com/software-mansion/react-native-gesture-handler)
| [`^2.14.1` ->
`^2.15.0`](https://renovatebot.com/diffs/npm/react-native-gesture-handler/2.14.1/2.15.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/react-native-gesture-handler/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-native-gesture-handler/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-native-gesture-handler/2.14.1/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-native-gesture-handler/2.14.1/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>software-mansion/react-native-gesture-handler
(react-native-gesture-handler)</summary>

###
[`v2.15.0`](https://togithub.com/software-mansion/react-native-gesture-handler/releases/tag/2.15.0)

[Compare
Source](https://togithub.com/software-mansion/react-native-gesture-handler/compare/2.14.1...2.15.0)

#### ❗ Important changes

- macOS Support by [@&#8203;HeroBanana](https://togithub.com/HeroBanana)
and [@&#8203;jfedak](https://togithub.com/jfedak) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2588](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2588)
- feat: add visionOS support by
[@&#8203;tomekzaw](https://togithub.com/tomekzaw) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2743](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2743)
- Add `mouseButton` prop by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2676](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2676)
- Migrate Gesture Handler to TurboModule by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2354](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2354)

#### 🐛 Bug fixes

- Add checks for the same instance of handler usage across multiple
`GestureDetectors` by [@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2694](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2694)
- Remove `didMountComponentsWithRootTag` on the new arch by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2687](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2687)
- Fix double start when `activateAfterLongPress` is used by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2628](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2628)
- Reset relevant handler when recognizer gets reset. by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2705](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2705)
- Fix `inactive` handlers staying at finished state by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2738](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2738)
- Change functions in windows module file to no-ops. by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2741](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2741)
- Fix handlers coming back from being cancelled by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2704](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2704)
- fix: restore ReactMethod annotation by
[@&#8203;WoLewicki](https://togithub.com/WoLewicki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2722](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2722)

#### 🔢 Miscellaneous

- Bump react-devtools-core from 4.27.6 to 4.28.4 in /example by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2650](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2650)
- Add `workflow_dispatch` to workflows by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2295](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2295)
- Update supported versions in readme and in docs by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2684](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2684)
- Prevent GH actions trigger on forks, update template by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2696](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2696)
- Auto add `Platform: MacOS` label when `MacOS` is picked in the issue
by [@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2699](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2699)
- Change eslint `ban-types` to warning. by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2714](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2714)
- Fix macOS warning message by
[@&#8203;jfedak](https://togithub.com/jfedak) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2713](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2713)
- Bump dependencies to stable React Native 0.73.2 by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2698](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2698)
- Add macOS app icon by [@&#8203;jfedak](https://togithub.com/jfedak) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2723](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2723)
- Bump follow-redirects from 1.15.3 to 1.15.4 in /e2e/web-tests by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2719](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2719)

#### New Contributors

- [@&#8203;mrousavy](https://togithub.com/mrousavy) made their first
contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2690](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2690)
- [@&#8203;HeroBanana](https://togithub.com/HeroBanana) made their first
contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2588](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2588)
- [@&#8203;fxamauri](https://togithub.com/fxamauri) made their first
contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2712](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2712)
- [@&#8203;jfedak](https://togithub.com/jfedak) made their first
contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2713](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2713)
- [@&#8203;computerjazz](https://togithub.com/computerjazz) made their
first contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2715](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2715)

**Full Changelog**:
software-mansion/react-native-gesture-handler@2.14.0...2.15.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 5pm,every weekend" in timezone
America/Los_Angeles, Automerge - "after 5pm,every weekend" in timezone
America/Los_Angeles.

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/valora-inc/wallet).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE3My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: valora-bot <valorabot@valoraapp.com>
shottah referenced this pull request in zed-io/kolektivo May 15, 2024
…alora-inc#4933)

[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[react-native-gesture-handler](https://togithub.com/software-mansion/react-native-gesture-handler)
| [`^2.14.1` ->
`^2.15.0`](https://renovatebot.com/diffs/npm/react-native-gesture-handler/2.14.1/2.15.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/react-native-gesture-handler/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-native-gesture-handler/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-native-gesture-handler/2.14.1/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-native-gesture-handler/2.14.1/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>software-mansion/react-native-gesture-handler
(react-native-gesture-handler)</summary>

###
[`v2.15.0`](https://togithub.com/software-mansion/react-native-gesture-handler/releases/tag/2.15.0)

[Compare
Source](https://togithub.com/software-mansion/react-native-gesture-handler/compare/2.14.1...2.15.0)

#### ❗ Important changes

- macOS Support by [@&#8203;HeroBanana](https://togithub.com/HeroBanana)
and [@&#8203;jfedak](https://togithub.com/jfedak) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2588](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2588)
- feat: add visionOS support by
[@&#8203;tomekzaw](https://togithub.com/tomekzaw) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2743](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2743)
- Add `mouseButton` prop by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2676](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2676)
- Migrate Gesture Handler to TurboModule by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2354](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2354)

#### 🐛 Bug fixes

- Add checks for the same instance of handler usage across multiple
`GestureDetectors` by [@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2694](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2694)
- Remove `didMountComponentsWithRootTag` on the new arch by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2687](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2687)
- Fix double start when `activateAfterLongPress` is used by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2628](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2628)
- Reset relevant handler when recognizer gets reset. by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2705](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2705)
- Fix `inactive` handlers staying at finished state by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2738](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2738)
- Change functions in windows module file to no-ops. by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2741](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2741)
- Fix handlers coming back from being cancelled by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2704](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2704)
- fix: restore ReactMethod annotation by
[@&#8203;WoLewicki](https://togithub.com/WoLewicki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2722](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2722)

#### 🔢 Miscellaneous

- Bump react-devtools-core from 4.27.6 to 4.28.4 in /example by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2650](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2650)
- Add `workflow_dispatch` to workflows by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2295](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2295)
- Update supported versions in readme and in docs by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2684](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2684)
- Prevent GH actions trigger on forks, update template by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2696](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2696)
- Auto add `Platform: MacOS` label when `MacOS` is picked in the issue
by [@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2699](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2699)
- Change eslint `ban-types` to warning. by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2714](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2714)
- Fix macOS warning message by
[@&#8203;jfedak](https://togithub.com/jfedak) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2713](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2713)
- Bump dependencies to stable React Native 0.73.2 by
[@&#8203;j-piasecki](https://togithub.com/j-piasecki) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2698](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2698)
- Add macOS app icon by [@&#8203;jfedak](https://togithub.com/jfedak) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2723](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2723)
- Bump follow-redirects from 1.15.3 to 1.15.4 in /e2e/web-tests by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2719](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2719)

#### New Contributors

- [@&#8203;mrousavy](https://togithub.com/mrousavy) made their first
contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2690](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2690)
- [@&#8203;HeroBanana](https://togithub.com/HeroBanana) made their first
contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2588](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2588)
- [@&#8203;fxamauri](https://togithub.com/fxamauri) made their first
contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2712](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2712)
- [@&#8203;jfedak](https://togithub.com/jfedak) made their first
contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2713](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2713)
- [@&#8203;computerjazz](https://togithub.com/computerjazz) made their
first contribution in
[https://github.com/software-mansion/react-native-gesture-handler/pull/2715](https://togithub.com/software-mansion/react-native-gesture-handler/pull/2715)

**Full Changelog**:
software-mansion/react-native-gesture-handler@2.14.0...2.15.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 5pm,every weekend" in timezone
America/Los_Angeles, Automerge - "after 5pm,every weekend" in timezone
America/Los_Angeles.

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/valora-inc/wallet).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE3My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: valora-bot <valorabot@valoraapp.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

TouchableOpacity remains disabled after attempted click and state change from TextInput
2 participants