Skip to content

Commit 98c5ef4

Browse files
committed
fix(Reanimated): RCTModernEventEmmitter for older RN (#9181)
## Summary Turns out that React Native 0.85 doesn't require these methods implemented but React Native 0.84 and less does, we have to add them back for backwards compatibility. ## Test plan Android compilation now passes on RN 0.84
1 parent c868118 commit 98c5ef4

3 files changed

Lines changed: 74 additions & 2 deletions

File tree

packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/CopiedEvent.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import androidx.annotation.NonNull;
44
import androidx.annotation.Nullable;
5+
import com.facebook.react.bridge.WritableArray;
56
import com.facebook.react.bridge.WritableMap;
67
import com.facebook.react.uimanager.events.Event;
78
import com.facebook.react.uimanager.events.RCTModernEventEmitter;
@@ -16,9 +17,38 @@ public class CopiedEvent {
1617
private int category;
1718

1819
CopiedEvent(Event<?> event) {
19-
//noinspection Convert2Lambda
2020
event.dispatchModern(
2121
new RCTModernEventEmitter() {
22+
@Override
23+
public void receiveTouches(
24+
@NonNull String eventName,
25+
@NonNull WritableArray touches,
26+
@NonNull WritableArray changedIndices) {
27+
// noop
28+
}
29+
30+
@Override
31+
public void receiveEvent(
32+
int targetTag, @NonNull String eventName, @Nullable WritableMap params) {
33+
CopiedEvent.this.targetTag = targetTag;
34+
CopiedEvent.this.eventName = eventName;
35+
assert params != null;
36+
CopiedEvent.this.payload = params.copy();
37+
}
38+
39+
@Override
40+
public void receiveEvent(
41+
int surfaceId,
42+
int targetTag,
43+
@NonNull String eventName,
44+
@Nullable WritableMap params) {
45+
CopiedEvent.this.surfaceId = surfaceId;
46+
CopiedEvent.this.targetTag = targetTag;
47+
CopiedEvent.this.eventName = eventName;
48+
assert params != null;
49+
CopiedEvent.this.payload = params.copy();
50+
}
51+
2252
@Override
2353
public void receiveEvent(
2454
int surfaceId,

packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/nativeProxy/EventHandler.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import androidx.annotation.Nullable;
55
import com.facebook.jni.HybridData;
66
import com.facebook.proguard.annotations.DoNotStrip;
7+
import com.facebook.react.bridge.WritableArray;
78
import com.facebook.react.bridge.WritableMap;
89
import com.facebook.react.uimanager.UIManagerModule;
910
import com.facebook.react.uimanager.events.RCTModernEventEmitter;
@@ -35,6 +36,27 @@ public void receiveEvent(
3536
receiveEvent(resolvedEventName, targetTag, params);
3637
}
3738

39+
@Override
40+
public void receiveEvent(
41+
int surfaceId, int targetTag, @NonNull String eventName, @Nullable WritableMap params) {
42+
String resolvedEventName = mCustomEventNamesResolver.resolveCustomEventName(eventName);
43+
receiveEvent(resolvedEventName, targetTag, params);
44+
}
45+
46+
@Override
47+
public void receiveEvent(int targetTag, @NonNull String eventName, @Nullable WritableMap params) {
48+
String resolvedEventName = mCustomEventNamesResolver.resolveCustomEventName(eventName);
49+
receiveEvent(resolvedEventName, targetTag, params);
50+
}
51+
52+
@Override
53+
public void receiveTouches(
54+
@NonNull String eventName,
55+
@NonNull WritableArray touches,
56+
@NonNull WritableArray changedIndices) {
57+
// not interested in processing touch events this way, we process raw events only
58+
}
59+
3860
@SuppressWarnings("JavaJniMissingFunction")
3961
public native void receiveEvent(
4062
String eventName, int emitterReactTag, @Nullable WritableMap event);

packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/nativeProxy/NoopEventHandler.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import androidx.annotation.NonNull;
44
import androidx.annotation.Nullable;
5+
import com.facebook.react.bridge.WritableArray;
56
import com.facebook.react.bridge.WritableMap;
67
import com.facebook.react.uimanager.events.RCTModernEventEmitter;
78

@@ -15,6 +16,25 @@ public void receiveEvent(
1516
int customCoalesceKey,
1617
@Nullable WritableMap params,
1718
int category) {
18-
// NOOP
19+
// noop
20+
}
21+
22+
@Override
23+
public void receiveEvent(
24+
int surfaceId, int targetTag, @NonNull String eventName, @Nullable WritableMap params) {
25+
// noop
26+
}
27+
28+
@Override
29+
public void receiveEvent(int targetTag, @NonNull String eventName, @Nullable WritableMap params) {
30+
// noop
31+
}
32+
33+
@Override
34+
public void receiveTouches(
35+
@NonNull String eventName,
36+
@NonNull WritableArray touches,
37+
@NonNull WritableArray changedIndices) {
38+
// noop
1939
}
2040
}

0 commit comments

Comments
 (0)