From 8ebddf371586e483143fd1ebf7dbed03cde05754 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Fri, 6 Sep 2024 04:30:17 -0700 Subject: [PATCH] listen to onUserDrivenAnimationEnded in passive effects versions of useAnimatedPropsLifecycle (#46361) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/46361 changelog: [internal] to support onScroll native animated event, subscribe to onUserDrivenAnimationEnded event in passive effects version of useAnimatedPropsLifecycle. Reviewed By: javache Differential Revision: D62236130 fbshipit-source-id: 850e6cb5544eb0377492fd030f735b159f24ab8d --- .../Libraries/Animated/useAnimatedProps.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/react-native/Libraries/Animated/useAnimatedProps.js b/packages/react-native/Libraries/Animated/useAnimatedProps.js index f105b666a9c..20f0baeeb69 100644 --- a/packages/react-native/Libraries/Animated/useAnimatedProps.js +++ b/packages/react-native/Libraries/Animated/useAnimatedProps.js @@ -330,6 +330,17 @@ function useAnimatedPropsLifecycle_passiveEffects(node: AnimatedProps): void { useEffectImpl(() => { node.__attach(); + let drivenAnimationEndedListener: ?EventSubscription = null; + + if (node.__isNative) { + drivenAnimationEndedListener = + NativeAnimatedHelper.nativeEventEmitter.addListener( + 'onUserDrivenAnimationEnded', + data => { + node.update(); + }, + ); + } if (prevNodeRef.current != null) { const prevNode = prevNodeRef.current; // TODO: Stop restoring default values (unless `reset` is called). @@ -344,6 +355,8 @@ function useAnimatedPropsLifecycle_passiveEffects(node: AnimatedProps): void { } else { prevNodeRef.current = node; } + + drivenAnimationEndedListener?.remove(); }; }, [node]); }