From a620d7dc8514da0d0d4e2268c374321536820c04 Mon Sep 17 00:00:00 2001 From: Paige Sun Date: Mon, 10 Jan 2022 17:24:43 -0800 Subject: [PATCH] 4/5 Minor: Move unstable_hasComponent out of NativeComponentRegistry Summary: Without moving this, we would get this warning about a require cycle on the next diff, because DummyUIManager and LazyUIManager both need unstable_hasComponent. ``` (NOBRIDGE) WARN Require cycle: react-native-github/Libraries/NativeComponent/NativeComponentRegistry.js -> react-native-github/Libraries/ReactNative/UIManager.js -> react-native-github/Libraries/ReactNative/DummyUIManager.js -> react-native-github/Libraries/NativeComponent/NativeComponentRegistry.js Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle. ``` Changelog: [Internal] Reviewed By: philIip, RSNara Differential Revision: D33511566 fbshipit-source-id: fd8c9732408d08ab17335273f86168bf30747929 --- .../NativeComponentRegistry.js | 19 ------------- .../NativeComponentRegistryUnstable.js | 27 +++++++++++++++++++ 2 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 Libraries/NativeComponent/NativeComponentRegistryUnstable.js diff --git a/Libraries/NativeComponent/NativeComponentRegistry.js b/Libraries/NativeComponent/NativeComponentRegistry.js index 92db800de55..e56021877f0 100644 --- a/Libraries/NativeComponent/NativeComponentRegistry.js +++ b/Libraries/NativeComponent/NativeComponentRegistry.js @@ -152,22 +152,3 @@ export function unstable_hasStaticViewConfig(name: string): boolean { }; return !native; } - -/** - * Unstable API. Do not use! - * - * This method returns if the component with name received as a parameter - * is registed in the native platform. - */ -export function unstable_hasComponent(name: string): boolean { - let hasNativeComponent = componentNameToExists.get(name); - if (hasNativeComponent == null) { - if (global.__nativeComponentRegistry__hasComponent) { - hasNativeComponent = global.__nativeComponentRegistry__hasComponent(name); - componentNameToExists.set(name, hasNativeComponent); - } else { - throw `unstable_hasComponent('${name}'): Global function is not registered`; - } - } - return hasNativeComponent; -} diff --git a/Libraries/NativeComponent/NativeComponentRegistryUnstable.js b/Libraries/NativeComponent/NativeComponentRegistryUnstable.js new file mode 100644 index 00000000000..cebacfc033b --- /dev/null +++ b/Libraries/NativeComponent/NativeComponentRegistryUnstable.js @@ -0,0 +1,27 @@ +/** + * 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. + */ + +let componentNameToExists: Map = new Map(); + +/** + * Unstable API. Do not use! + * + * This method returns if the component with name received as a parameter + * is registed in the native platform. + */ +export function unstable_hasComponent(name: string): boolean { + let hasNativeComponent = componentNameToExists.get(name); + if (hasNativeComponent == null) { + if (global.__nativeComponentRegistry__hasComponent) { + hasNativeComponent = global.__nativeComponentRegistry__hasComponent(name); + componentNameToExists.set(name, hasNativeComponent); + } else { + throw `unstable_hasComponent('${name}'): Global function is not registered`; + } + } + return hasNativeComponent; +}