From d72e078df41f1ba2eb94e4eb4fb28b8d0232a8a1 Mon Sep 17 00:00:00 2001 From: Janic Duplessis Date: Thu, 23 Jan 2020 13:19:04 -0800 Subject: [PATCH] Add missing NativeEventListener methods to NativeDevSettings (#27838) Summary: Since migrating to Turbomodules (8fe04cf) the addMenuItem method crashes because the NativeEventListener methods are missing from the codegen flow type. Added the same methods based on what we do in AppState which is another native module that extends NativeEventListener. ## Changelog [Internal] [Fixed] - Add missing NativeEventListener methods to NativeDevSettings Pull Request resolved: https://github.com/facebook/react-native/pull/27838 Test Plan: |Before|After| |{F226978596}|{F226978628} Differential Revision: D19518474 Pulled By: PeteTheHeat fbshipit-source-id: acddba9f18dd558df1d6df78b539689fdfd0062f --- .../FBReactNativeSpec-generated.mm | 14 ++++++++++++++ .../FBReactNativeSpec/FBReactNativeSpec.h | 2 ++ Libraries/NativeModules/specs/NativeDevSettings.js | 4 ++++ .../fbreact/specs/NativeDevSettingsSpec.java | 6 ++++++ .../react/modules/debug/DevSettingsModule.java | 10 ++++++++++ 5 files changed, 36 insertions(+) diff --git a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm index 2b57778f7e6..93cd6113a21 100644 --- a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +++ b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm @@ -931,6 +931,14 @@ namespace facebook { return static_cast(turboModule).invokeObjCMethod(rt, VoidKind, "addMenuItem", @selector(addMenuItem:), args, count); } + static facebook::jsi::Value __hostFunction_NativeDevSettingsSpecJSI_addListener(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { + return static_cast(turboModule).invokeObjCMethod(rt, VoidKind, "addListener", @selector(addListener:), args, count); + } + + static facebook::jsi::Value __hostFunction_NativeDevSettingsSpecJSI_removeListeners(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { + return static_cast(turboModule).invokeObjCMethod(rt, VoidKind, "removeListeners", @selector(removeListeners:), args, count); + } + static facebook::jsi::Value __hostFunction_NativeDevSettingsSpecJSI_setIsShakeToShowDevMenuEnabled(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) { return static_cast(turboModule).invokeObjCMethod(rt, VoidKind, "setIsShakeToShowDevMenuEnabled", @selector(setIsShakeToShowDevMenuEnabled:), args, count); } @@ -963,6 +971,12 @@ namespace facebook { methodMap_["addMenuItem"] = MethodMetadata {1, __hostFunction_NativeDevSettingsSpecJSI_addMenuItem}; + methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeDevSettingsSpecJSI_addListener}; + + + methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeDevSettingsSpecJSI_removeListeners}; + + methodMap_["setIsShakeToShowDevMenuEnabled"] = MethodMetadata {1, __hostFunction_NativeDevSettingsSpecJSI_setIsShakeToShowDevMenuEnabled}; diff --git a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h index 690ed8bf468..eb2b0c3416c 100644 --- a/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +++ b/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h @@ -898,6 +898,8 @@ namespace facebook { - (void)setProfilingEnabled:(BOOL)isProfilingEnabled; - (void)toggleElementInspector; - (void)addMenuItem:(NSString *)title; +- (void)addListener:(NSString *)eventName; +- (void)removeListeners:(double)count; - (void)setIsShakeToShowDevMenuEnabled:(BOOL)enabled; @end diff --git a/Libraries/NativeModules/specs/NativeDevSettings.js b/Libraries/NativeModules/specs/NativeDevSettings.js index a23a2521136..48c155886cf 100644 --- a/Libraries/NativeModules/specs/NativeDevSettings.js +++ b/Libraries/NativeModules/specs/NativeDevSettings.js @@ -23,6 +23,10 @@ export interface Spec extends TurboModule { +toggleElementInspector: () => void; +addMenuItem: (title: string) => void; + // Events + +addListener: (eventName: string) => void; + +removeListeners: (count: number) => void; + // iOS only. +setIsShakeToShowDevMenuEnabled: (enabled: boolean) => void; } diff --git a/ReactAndroid/src/main/java/com/facebook/fbreact/specs/NativeDevSettingsSpec.java b/ReactAndroid/src/main/java/com/facebook/fbreact/specs/NativeDevSettingsSpec.java index c1ff7bde0f8..77bd1cdf8de 100644 --- a/ReactAndroid/src/main/java/com/facebook/fbreact/specs/NativeDevSettingsSpec.java +++ b/ReactAndroid/src/main/java/com/facebook/fbreact/specs/NativeDevSettingsSpec.java @@ -30,6 +30,9 @@ public abstract class NativeDevSettingsSpec extends ReactContextBaseJavaModule i public void onFastRefresh() { } + @ReactMethod + public abstract void removeListeners(double count); + @ReactMethod public abstract void reload(); @@ -51,4 +54,7 @@ public abstract class NativeDevSettingsSpec extends ReactContextBaseJavaModule i @ReactMethod public abstract void setIsShakeToShowDevMenuEnabled(boolean enabled); + + @ReactMethod + public abstract void addListener(String eventName); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.java index 0a970ca3f7b..5edda1a1c21 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.java @@ -108,4 +108,14 @@ public class DevSettingsModule extends NativeDevSettingsSpec { public void setIsShakeToShowDevMenuEnabled(boolean enabled) { // iOS only } + + @Override + public void addListener(String eventName) { + // iOS only + } + + @Override + public void removeListeners(double count) { + // iOS only + } }