From d11dca7ba3dcf84fbe018023ac0c46ee50bc49f3 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Thu, 25 Jan 2024 16:56:49 -0800 Subject: [PATCH] UIManagerJSInterface: Fix getConstantsForViewManager types Summary: If Flow can be trusted, getConstantsForViewManager always gets called with a non-null string: 1. The only call-site to getConstantsForViewManager is getViewManagerConfig: [PaperUIManager.js](https://github.com/facebook/react-native/blob/822bf52c29729d25b2bfb31655cf773609a9283d/packages/react-native/Libraries/ReactNative/PaperUIManager.js#L36-L80) 2. And getViewManagerConfig always passes in a non-null string. So, let's just make the native argument type a non-nullable string. Thoughts? Changelog: [Internal] Reviewed By: sammy-SC Differential Revision: D52628937 fbshipit-source-id: 0ca68b38253cf134af29974af9e36380d66895a1 --- .../Libraries/ReactNative/BridgelessUIManager.js | 4 ++-- .../java/com/facebook/react/uimanager/UIManagerModule.java | 5 ++--- .../src/private/specs/modules/NativeUIManager.js | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/react-native/Libraries/ReactNative/BridgelessUIManager.js b/packages/react-native/Libraries/ReactNative/BridgelessUIManager.js index 61414d6c26cc4e..832ff1caf39394 100644 --- a/packages/react-native/Libraries/ReactNative/BridgelessUIManager.js +++ b/packages/react-native/Libraries/ReactNative/BridgelessUIManager.js @@ -41,7 +41,7 @@ const getUIManagerConstantsCached = (function () { }; })(); -const getConstantsForViewManager: ?(viewManagerName: string) => Object = +const getConstantsForViewManager: ?(viewManagerName: string) => ?Object = global.RN$LegacyInterop_UIManager_getConstantsForViewManager; const getDefaultEventTypes: ?() => Object = @@ -157,7 +157,7 @@ const UIManagerJSUnusedAPIs = { const UIManagerJSPlatformAPIs = Platform.select({ android: { - getConstantsForViewManager: (viewManagerName: string): Object => { + getConstantsForViewManager: (viewManagerName: string): ?Object => { if (getConstantsForViewManager) { return getConstantsForViewManager(viewManagerName); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index 717e5184a1263f..793e1121f5b2d0 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -247,9 +247,8 @@ public static Map createConstants( } @ReactMethod(isBlockingSynchronousMethod = true) - public @Nullable WritableMap getConstantsForViewManager(@Nullable String viewManagerName) { - ViewManager targetView = - viewManagerName != null ? mUIImplementation.resolveViewManager(viewManagerName) : null; + public @Nullable WritableMap getConstantsForViewManager(String viewManagerName) { + ViewManager targetView = mUIImplementation.resolveViewManager(viewManagerName); if (targetView == null) { return null; } diff --git a/packages/react-native/src/private/specs/modules/NativeUIManager.js b/packages/react-native/src/private/specs/modules/NativeUIManager.js index f0f5a7cf5fce14..1555b1dcab1634 100644 --- a/packages/react-native/src/private/specs/modules/NativeUIManager.js +++ b/packages/react-native/src/private/specs/modules/NativeUIManager.js @@ -97,7 +97,7 @@ export interface Spec extends TurboModule { ) => void; // Android only - +getConstantsForViewManager?: (viewManagerName: string) => Object; + +getConstantsForViewManager?: (viewManagerName: string) => ?Object; +getDefaultEventTypes?: () => Array; +setLayoutAnimationEnabledExperimental?: (enabled: boolean) => void; +sendAccessibilityEvent?: (reactTag: ?number, eventType: number) => void;