From 8689aa48bb5fac6b96144c08d49b15359ef141a1 Mon Sep 17 00:00:00 2001 From: Blake Friedman Date: Mon, 5 Aug 2024 05:21:36 -0700 Subject: [PATCH] =?UTF-8?q?AdditionalAnimatedNode=20=E2=86=92=20Kotlin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: Changelog: [Android][Changed] AdditionalAnimatedNode.java → Kotlin Reviewed By: rshest Differential Revision: D60523059 fbshipit-source-id: de4e60854a03b5a6f061882c03cf191998888015 --- .../react/animated/AdditionAnimatedNode.java | 56 ------------------- .../react/animated/AdditionAnimatedNode.kt | 52 +++++++++++++++++ 2 files changed, 52 insertions(+), 56 deletions(-) delete mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java create mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.kt diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java deleted file mode 100644 index a0eba369227..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.java +++ /dev/null @@ -1,56 +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.JSApplicationCausedNativeException; -import com.facebook.react.bridge.ReadableArray; -import com.facebook.react.bridge.ReadableMap; - -/** - * Animated node that plays a role of value aggregator. It takes two or more value nodes as an input - * and outputs a sum of values outputted by those nodes. - */ -/*package*/ class AdditionAnimatedNode extends ValueAnimatedNode { - - private final NativeAnimatedNodesManager mNativeAnimatedNodesManager; - private final int[] mInputNodes; - - public AdditionAnimatedNode( - ReadableMap config, NativeAnimatedNodesManager nativeAnimatedNodesManager) { - mNativeAnimatedNodesManager = nativeAnimatedNodesManager; - ReadableArray inputNodes = config.getArray("input"); - mInputNodes = new int[inputNodes.size()]; - for (int i = 0; i < mInputNodes.length; i++) { - mInputNodes[i] = inputNodes.getInt(i); - } - } - - @Override - public void update() { - nodeValue = 0; - for (int i = 0; i < mInputNodes.length; i++) { - AnimatedNode animatedNode = mNativeAnimatedNodesManager.getNodeById(mInputNodes[i]); - if (animatedNode != null && animatedNode instanceof ValueAnimatedNode) { - nodeValue += ((ValueAnimatedNode) animatedNode).getValue(); - } else { - throw new JSApplicationCausedNativeException( - "Illegal node ID set as an input for Animated.Add node"); - } - } - } - - @Override - public String prettyPrint() { - return "AdditionAnimatedNode[" - + tag - + "]: input nodes: " - + (mInputNodes != null ? mInputNodes.toString() : "null") - + " - super: " - + super.prettyPrint(); - } -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.kt new file mode 100644 index 00000000000..fd93cee90ff --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/animated/AdditionAnimatedNode.kt @@ -0,0 +1,52 @@ +/* + * 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.ReadableMap + +/** + * Animated node that plays a role of value aggregator. It takes two or more value nodes as an input + * and outputs a sum of values outputted by those nodes. + */ +internal class AdditionAnimatedNode( + config: ReadableMap, + private val nativeAnimatedNodesManager: NativeAnimatedNodesManager +) : ValueAnimatedNode() { + + private val inputNodes: IntArray + + init { + val input = config.getArray("input") + inputNodes = + if (input == null) { + IntArray(0) + } else { + IntArray(input.size()) { i -> input.getInt(i) } + } + } + + override fun update() { + nodeValue = 0.0 + nodeValue += + inputNodes.fold( + 0.0, + { acc, id -> + val animatedNode = nativeAnimatedNodesManager.getNodeById(id) + if (animatedNode is ValueAnimatedNode) { + acc + animatedNode.getValue() + } else { + throw JSApplicationCausedNativeException( + "Illegal node ID set as an input for Animated.Add node") + } + }) + } + + override fun prettyPrint(): String = + "AdditionAnimatedNode[${tag}]: input nodes: ${inputNodes.joinToString()} - super: ${super.prettyPrint()}" +}