From de416e7d0640aaf883067f01d352f0bc9fe8beb2 Mon Sep 17 00:00:00 2001 From: Guilherme Varandas Date: Mon, 8 Oct 2018 10:19:59 -0700 Subject: [PATCH] Removing TimerMixin on SwipeableRow (#21499) Summary: Related to #21485. Removed TimerMixin from the SwipeableRow component since it is currently not used. Added a test case for `SwipeableRow` animation in the `SwipeableListViewSimpleExample`, by adding the `bounceFirstRowOnMount` prop, to check for any runtime issues with the setTimeout method. - [x] `npm run prettier` - [x] `npm run flow-check-ios` - [x] `npm run flow-check-android` - [x] runtime tests using `SwipeableFlatListExample` on Android and iOS - [x] runtime tests using `SwipeableListViewSimpleExample` on Android and iOS **RNTester steps** - [x] Run RNTester. - [x] Navigate to `SwipeableFlatListExample` and check if the `_animateBounceBack` animation executes when the `shouldBounceOnMount` props is passed. - [x] Swipe the row and check if the events ran correctly - [x] Navigate to `SwipeableListViewSimpleExample` and check if the `_animateBounceBack` animation executes when the `shouldBounceOnMount` props is passed. - [x] Swipe the row and check if the events ran correctly [GENERAL] [ENHANCEMENT] [Libraries/Experimental/SwipeableRow/SwipeableRow.js] - remove TimerMixin dependency [GENERAL] [ENHANCEMENT] [RNTester/js/SwipeableListViewSimpleExample.js] - Add bounceFirstRowOnMount to guarantee the SwipeableRow correct behavior. Pull Request resolved: https://github.com/facebook/react-native/pull/21499 Reviewed By: TheSavior Differential Revision: D10218361 Pulled By: RSNara fbshipit-source-id: c8e6d5ced4c1237e48bb4c43592016684b2c6360 --- .../Experimental/SwipeableRow/SwipeableRow.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Libraries/Experimental/SwipeableRow/SwipeableRow.js b/Libraries/Experimental/SwipeableRow/SwipeableRow.js index fb9cc1df4..5e9e796cd 100644 --- a/Libraries/Experimental/SwipeableRow/SwipeableRow.js +++ b/Libraries/Experimental/SwipeableRow/SwipeableRow.js @@ -16,10 +16,6 @@ const PanResponder = require('PanResponder'); const React = require('React'); const PropTypes = require('prop-types'); const StyleSheet = require('StyleSheet'); -/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error - * found when Flow v0.54 was deployed. To see the error delete this comment and - * run Flow. */ -const TimerMixin = require('react-timer-mixin'); const View = require('View'); const createReactClass = require('create-react-class'); @@ -85,8 +81,7 @@ const SwipeableRow = createReactClass({ displayName: 'SwipeableRow', _panResponder: {}, _previousLeft: CLOSED_LEFT_POSITION, - - mixins: [TimerMixin], + _timeoutID: (null: ?TimeoutID), propTypes: { children: PropTypes.any, @@ -157,7 +152,7 @@ const SwipeableRow = createReactClass({ * Do the on mount bounce after a delay because if we animate when other * components are loading, the animation will be laggy */ - this.setTimeout(() => { + this._timeoutID = setTimeout(() => { this._animateBounceBack(ON_MOUNT_BOUNCE_DURATION); }, ON_MOUNT_BOUNCE_DELAY); } @@ -173,6 +168,12 @@ const SwipeableRow = createReactClass({ } }, + componentWillUnmount() { + if (this._timeoutID != null) { + clearTimeout(this._timeoutID); + } + }, + render(): React.Element { // The view hidden behind the main view let slideOutView;