From bcf32125c9777e7998ac66f07c902a2c76ca023b Mon Sep 17 00:00:00 2001 From: Pedro Pablo Aste Kompen Date: Tue, 25 Jan 2022 14:40:39 -0300 Subject: [PATCH] Fix slider button rerendering (#3623) --- app/components/UI/SliderButton/index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/components/UI/SliderButton/index.js b/app/components/UI/SliderButton/index.js index 8f44ac2778c..e61f243f63e 100644 --- a/app/components/UI/SliderButton/index.js +++ b/app/components/UI/SliderButton/index.js @@ -93,6 +93,8 @@ function SliderButton({ incompleteText, completeText, onComplete, disabled, onSw const pan = useRef(new Animated.ValueXY(0, 0)).current; const completion = useRef(new Animated.Value(0)).current; + const onCompleteCallback = useRef(onComplete); + const handleIsPressed = useCallback( (isPressed) => { onSwipeChange?.(isPressed); @@ -128,6 +130,10 @@ function SliderButton({ incompleteText, completeText, onComplete, disabled, onSw outputRange: [colors.blue600, colors.success], }); + useEffect(() => { + onCompleteCallback.current = onComplete; + }, [onComplete, onCompleteCallback]); + const startCompleteAnimation = useCallback(() => { if (!hasStartedCompleteAnimation) { setHasStartedCompleteAnimation(true); @@ -139,13 +145,13 @@ function SliderButton({ incompleteText, completeText, onComplete, disabled, onSw isInteraction: false, }), ]).start(() => { - if (onComplete && !hasCompletedCalled) { + if (onCompleteCallback.current && !hasCompletedCalled) { setHasCompletedCalled(true); - onComplete(); + onCompleteCallback.current?.(); } }); } - }, [completion, componentWidth, hasCompletedCalled, hasStartedCompleteAnimation, onComplete, pan]); + }, [completion, componentWidth, hasCompletedCalled, hasStartedCompleteAnimation, onCompleteCallback, pan]); const panResponder = useMemo( () =>