diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.java deleted file mode 100644 index 88bce013690344..00000000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.animated; - -import com.facebook.react.bridge.JavaOnlyMap; -import com.facebook.react.bridge.ReadableMap; - -/* package */ class TrackingAnimatedNode extends AnimatedNode { - - private final NativeAnimatedNodesManager mNativeAnimatedNodesManager; - private final int mAnimationId; - private final int mToValueNode; - private final int mValueNode; - private final JavaOnlyMap mAnimationConfig; - - TrackingAnimatedNode(ReadableMap config, NativeAnimatedNodesManager nativeAnimatedNodesManager) { - mNativeAnimatedNodesManager = nativeAnimatedNodesManager; - mAnimationId = config.getInt("animationId"); - mToValueNode = config.getInt("toValue"); - mValueNode = config.getInt("value"); - mAnimationConfig = JavaOnlyMap.deepClone(config.getMap("animationConfig")); - } - - @Override - public void update() { - AnimatedNode toValue = mNativeAnimatedNodesManager.getNodeById(mToValueNode); - mAnimationConfig.putDouble("toValue", ((ValueAnimatedNode) toValue).getValue()); - mNativeAnimatedNodesManager.startAnimatingNode( - mAnimationId, mValueNode, mAnimationConfig, null); - } - - @Override - public String prettyPrint() { - return "TrackingAnimatedNode[" - + mTag - + "]: animationID: " - + mAnimationId - + " toValueNode: " - + mToValueNode - + " valueNode: " - + mValueNode - + " animationConfig: " - + mAnimationConfig; - } -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.kt new file mode 100644 index 00000000000000..b852e068cc1b83 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/TrackingAnimatedNode.kt @@ -0,0 +1,48 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.react.animated + +import com.facebook.react.bridge.JSApplicationCausedNativeException +import com.facebook.react.bridge.JavaOnlyMap +import com.facebook.react.bridge.ReadableMap + +internal open class TrackingAnimatedNode : AnimatedNode { + + private val mNativeAnimatedNodesManager: NativeAnimatedNodesManager + private val mAnimationId: Int + private val mToValueNode: Int + private val mValueNode: Int + private val mAnimationConfig: JavaOnlyMap + + public constructor( + config: ReadableMap, + nativeAnimatedNodesManager: NativeAnimatedNodesManager + ) : super() { + mNativeAnimatedNodesManager = nativeAnimatedNodesManager + mAnimationId = config.getInt("animationId") + mToValueNode = config.getInt("toValue") + mValueNode = config.getInt("value") + mAnimationConfig = JavaOnlyMap.deepClone(config.getMap("animationConfig")) + } + + override public fun update(): Unit { + val toValue = mNativeAnimatedNodesManager.getNodeById(mToValueNode) + if (toValue is ValueAnimatedNode) { + mAnimationConfig.putDouble("toValue", toValue.mValue) + mNativeAnimatedNodesManager.startAnimatingNode( + mAnimationId, mValueNode, mAnimationConfig, null) + } else { + throw JSApplicationCausedNativeException( + "Illegal node ID set as an input for TrackingAnimated node") + } + } + + override public fun prettyPrint(): String { + return "TrackingAnimatedNode[$mTag]: animationID: $mAnimationId toValueNode: $mToValueNode valueNode: $mValueNode animationConfig: $mAnimationConfig" + } +}