CrackMe.apk
Download file
package com.facebook.react.animated;
import com.facebook.react.bridge.JavaOnlyArray;
import com.facebook.react.bridge.JavaOnlyMap;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.uimanager.ViewProps;
import java.util.ArrayList;
import java.util.List;
class TransformAnimatedNode extends AnimatedNode {
private final NativeAnimatedNodesManager mNativeAnimatedNodesManager;
private final List<TransformConfig> mTransformConfigs;
private class TransformConfig {
public String mProperty;
private TransformConfig() {
}
}
private class AnimatedTransformConfig extends TransformConfig {
public int mNodeTag;
private AnimatedTransformConfig() {
super();
}
}
private class StaticTransformConfig extends TransformConfig {
public double mValue;
private StaticTransformConfig() {
super();
}
}
TransformAnimatedNode(ReadableMap readableMap, NativeAnimatedNodesManager nativeAnimatedNodesManager) {
ReadableArray array = readableMap.getArray("transforms");
this.mTransformConfigs = new ArrayList(array.size());
for (int i = 0; i < array.size(); i++) {
ReadableMap map = array.getMap(i);
String string = map.getString("property");
if (map.getString(SessionDescription.ATTR_TYPE).equals("animated")) {
AnimatedTransformConfig animatedTransformConfig = new AnimatedTransformConfig();
animatedTransformConfig.mProperty = string;
animatedTransformConfig.mNodeTag = map.getInt("nodeTag");
this.mTransformConfigs.add(animatedTransformConfig);
} else {
StaticTransformConfig staticTransformConfig = new StaticTransformConfig();
staticTransformConfig.mProperty = string;
staticTransformConfig.mValue = map.getDouble("value");
this.mTransformConfigs.add(staticTransformConfig);
}
}
this.mNativeAnimatedNodesManager = nativeAnimatedNodesManager;
}
public void collectViewUpdates(JavaOnlyMap javaOnlyMap) {
double d;
ArrayList arrayList = new ArrayList(this.mTransformConfigs.size());
for (TransformConfig next : this.mTransformConfigs) {
if (next instanceof AnimatedTransformConfig) {
AnimatedNode nodeById = this.mNativeAnimatedNodesManager.getNodeById(((AnimatedTransformConfig) next).mNodeTag);
if (nodeById == null) {
throw new IllegalArgumentException("Mapped style node does not exists");
} else if (nodeById instanceof ValueAnimatedNode) {
d = ((ValueAnimatedNode) nodeById).getValue();
} else {
throw new IllegalArgumentException("Unsupported type of node used as a transform child node " + nodeById.getClass());
}
} else {
d = ((StaticTransformConfig) next).mValue;
}
arrayList.add(JavaOnlyMap.of(next.mProperty, Double.valueOf(d)));
}
javaOnlyMap.putArray(ViewProps.TRANSFORM, JavaOnlyArray.from(arrayList));
}
public String prettyPrint() {
StringBuilder sb = new StringBuilder();
sb.append("TransformAnimatedNode[");
sb.append(this.mTag);
sb.append("]: mTransformConfigs: ");
List<TransformConfig> list = this.mTransformConfigs;
sb.append(list != null ? list.toString() : "null");
return sb.toString();
}
}
Download file