Skip to content

Commit

Permalink
[skip ci] UIManagerJSInterface: Make reactTags non-nullable (facebook…
Browse files Browse the repository at this point in the history
…#42208)

Summary:

I went through the [android](https://github.com/facebook/react-native/blob/main/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java?fbclid=IwAR29Xk1KiGsxg7O2Fc7F2k4uKFmqqAbcMtsEEdaBalcGjJK7xuyYDo6X1Z8) and [ios](https://github.com/facebook/react-native/blob/main/packages/react-native/React/Modules/RCTUIManager.m?fbclid=IwAR2axOTNVuvGbnGw0_1wlnRhftx4W6K-ptTm_DtQ-eSOLFtnrYwzbjPyeYA) implementations of UIManagerModule. It turns out, the reactTag is always nonnull in all methods!

This diff updates UIManagerJSInterface accordingly.

Changelog: [General][Changed] - UIManagerModule: Make reactTags required

Reviewed By: sammy-SC

Differential Revision: D52627087
  • Loading branch information
RSNara authored and facebook-github-bot committed Jan 22, 2024
1 parent d8709c6 commit 9d0e147
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 87 deletions.
75 changes: 17 additions & 58 deletions packages/react-native/Libraries/ReactNative/BridgelessUIManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ const getDefaultEventTypesCached = (function () {
*/
const UIManagerJSOverridenAPIs = {
measure: (
reactTag: ?number,
reactTag: number,
callback: (
left: number,
top: number,
Expand All @@ -78,14 +78,14 @@ const UIManagerJSOverridenAPIs = {
raiseSoftError('measure');
},
measureInWindow: (
reactTag: ?number,
reactTag: number,
callback: (x: number, y: number, width: number, height: number) => void,
): void => {
raiseSoftError('measureInWindow');
},
measureLayout: (
reactTag: ?number,
ancestorReactTag: ?number,
reactTag: number,
ancestorReactTag: number,
errorCallback: (error: Object) => void,
callback: (
left: number,
Expand All @@ -97,7 +97,7 @@ const UIManagerJSOverridenAPIs = {
raiseSoftError('measureLayout');
},
measureLayoutRelativeToParent: (
reactTag: ?number,
reactTag: number,
errorCallback: (error: Object) => void,
callback: (
left: number,
Expand All @@ -109,7 +109,7 @@ const UIManagerJSOverridenAPIs = {
raiseSoftError('measureLayoutRelativeToParent');
},
dispatchViewManagerCommand: (
reactTag: ?number,
reactTag: number,
commandID: number,
commandArgs: ?Array<string | number | boolean>,
): void => {
Expand All @@ -124,7 +124,7 @@ const UIManagerJSOverridenAPIs = {
*/
const UIManagerJSUnusedAPIs = {
createView: (
reactTag: ?number,
reactTag: number,
viewName: string,
rootTag: RootTag,
props: Object,
Expand All @@ -134,11 +134,11 @@ const UIManagerJSUnusedAPIs = {
updateView: (reactTag: number, viewName: string, props: Object): void => {
raiseSoftError('updateView');
},
setChildren: (containerTag: ?number, reactTags: Array<number>): void => {
setChildren: (containerTag: number, reactTags: Array<number>): void => {
raiseSoftError('setChildren');
},
manageChildren: (
containerTag: ?number,
containerTag: number,
moveFromIndices: Array<number>,
moveToIndices: Array<number>,
addChildReactTags: Array<number>,
Expand All @@ -147,7 +147,7 @@ const UIManagerJSUnusedAPIs = {
): void => {
raiseSoftError('manageChildren');
},
setJSResponder: (reactTag: ?number, blockNativeResponder: boolean): void => {
setJSResponder: (reactTag: number, blockNativeResponder: boolean): void => {
raiseSoftError('setJSResponder');
},
clearJSResponder: (): void => {
Expand Down Expand Up @@ -185,16 +185,7 @@ const UIManagerJSPlatformAPIs = Platform.select({
);
}
},
sendAccessibilityEvent: (reactTag: ?number, eventType: number): void => {
if (reactTag == null) {
console.error(
`sendAccessibilityEvent() dropping event: Cannot be called with ${String(
reactTag,
)} reactTag`,
);
return;
}

sendAccessibilityEvent: (reactTag: number, eventType: number): void => {
// Keep this in sync with java:FabricUIManager.sendAccessibilityEventFromJS
// and legacySendAccessibilityEvent.android.js
const AccessibilityEvent = {
Expand Down Expand Up @@ -233,7 +224,7 @@ const UIManagerJSPlatformAPIs = Platform.select({
FabricUIManager.sendAccessibilityEvent(shadowNode, eventName);
},
showPopupMenu: (
reactTag: ?number,
reactTag: number,
items: Array<string>,
error: (error: Object) => void,
success: (event: string, selected?: number) => void,
Expand All @@ -254,14 +245,7 @@ const UIManagerJSPlatformAPIs = Platform.select({
raiseSoftError('lazilyLoadView');
return {};
},
focus: (reactTag: ?number): void => {
if (reactTag == null) {
console.error(
`focus() noop: Cannot be called with ${String(reactTag)} reactTag`,
);
return;
}

focus: (reactTag: number): void => {
const FabricUIManager = nullthrows(getFabricUIManager());
const shadowNode =
FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);
Expand All @@ -271,14 +255,7 @@ const UIManagerJSPlatformAPIs = Platform.select({
}
FabricUIManager.dispatchCommand(shadowNode, 'focus', []);
},
blur: (reactTag: ?number): void => {
if (reactTag == null) {
console.error(
`blur() noop: Cannot be called with ${String(reactTag)} reactTag`,
);
return;
}

blur: (reactTag: number): void => {
const FabricUIManager = nullthrows(getFabricUIManager());
const shadowNode =
FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);
Expand Down Expand Up @@ -326,7 +303,7 @@ const UIManagerJS: UIManagerJSInterface & {[string]: any} = {
}
},
findSubviewIn: (
reactTag: ?number,
reactTag: number,
point: Array<number>,
callback: (
nativeViewTag: number,
Expand All @@ -339,19 +316,10 @@ const UIManagerJS: UIManagerJSInterface & {[string]: any} = {
raiseSoftError('findSubviewIn');
},
viewIsDescendantOf: (
reactTag: ?number,
ancestorReactTag: ?number,
reactTag: number,
ancestorReactTag: number,
callback: (result: Array<boolean>) => void,
): void => {
if (reactTag == null) {
console.error(
`viewIsDescendantOf() noop: Cannot be called with ${String(
reactTag,
)} reactTag`,
);
return;
}

const FabricUIManager = nullthrows(getFabricUIManager());
const shadowNode = FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);
if (!shadowNode) {
Expand All @@ -361,15 +329,6 @@ const UIManagerJS: UIManagerJSInterface & {[string]: any} = {
return;
}

if (ancestorReactTag == null) {
console.error(
`viewIsDescendantOf() noop: Cannot be called with ${String(
ancestorReactTag,
)} ancestorReactTag`,
);
return;
}

const ancestorShadowNode =
FabricUIManager.findShadowNodeByTag_DEPRECATED(ancestorReactTag);
if (!ancestorShadowNode) {
Expand Down
26 changes: 13 additions & 13 deletions packages/react-native/Libraries/ReactNative/NativeUIManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ import * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';
export interface Spec extends TurboModule {
+getConstants: () => Object;
+createView: (
reactTag: ?number,
reactTag: number,
viewName: string,
rootTag: RootTag,
props: Object,
) => void;
+updateView: (reactTag: number, viewName: string, props: Object) => void;
+findSubviewIn: (
reactTag: ?number,
reactTag: number,
point: Array<number>,
callback: (
nativeViewTag: number,
Expand All @@ -34,8 +34,8 @@ export interface Spec extends TurboModule {
) => void,
) => void;
+dispatchViewManagerCommand: (
reactTag: ?number,
commandID: number,
reactTag: number,
commandID: number, // number || string
commandArgs: ?Array<any>,
) => void;
+measure: (
Expand All @@ -54,8 +54,8 @@ export interface Spec extends TurboModule {
callback: (x: number, y: number, width: number, height: number) => void,
) => void;
+viewIsDescendantOf: (
reactTag: ?number,
ancestorReactTag: ?number,
reactTag: number,
ancestorReactTag: number,
callback: (result: Array<boolean>) => void,
) => void;
+measureLayout: (
Expand All @@ -79,16 +79,16 @@ export interface Spec extends TurboModule {
height: number,
) => void,
) => void;
+setJSResponder: (reactTag: ?number, blockNativeResponder: boolean) => void;
+setJSResponder: (reactTag: number, blockNativeResponder: boolean) => void;
+clearJSResponder: () => void;
+configureNextLayoutAnimation: (
config: Object,
callback: () => void, // check what is returned here
errorCallback: (error: Object) => void,
) => void;
+setChildren: (containerTag: ?number, reactTags: Array<number>) => void;
+setChildren: (containerTag: number, reactTags: Array<number>) => void;
+manageChildren: (
containerTag: ?number,
containerTag: number,
moveFromIndices: Array<number>,
moveToIndices: Array<number>,
addChildReactTags: Array<number>,
Expand All @@ -100,9 +100,9 @@ export interface Spec extends TurboModule {
+getConstantsForViewManager?: (viewManagerName: string) => Object;
+getDefaultEventTypes?: () => Array<string>;
+setLayoutAnimationEnabledExperimental?: (enabled: boolean) => void;
+sendAccessibilityEvent?: (reactTag: ?number, eventType: number) => void;
+sendAccessibilityEvent?: (reactTag: number, eventType: number) => void;
+showPopupMenu?: (
reactTag: ?number,
reactTag: number,
items: Array<string>,
error: (error: Object) => void,
success: (event: string, selected?: number) => void,
Expand All @@ -111,8 +111,8 @@ export interface Spec extends TurboModule {

// ios only
+lazilyLoadView?: (name: string) => Object; // revisit return
+focus?: (reactTag: ?number) => void;
+blur?: (reactTag: ?number) => void;
+focus?: (reactTag: number) => void;
+blur?: (reactTag: number) => void;
}

export default (TurboModuleRegistry.getEnforcing<Spec>('UIManager'): Spec);
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ function getViewManagerConfig(viewManagerName: string): any {
const UIManagerJS: UIManagerJSInterface = {
...NativeUIManager,
createView(
reactTag: ?number,
reactTag: number,
viewName: string,
rootTag: RootTag,
props: Object,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7788,14 +7788,14 @@ exports[`public API should not change unintentionally Libraries/ReactNative/Nati
"export interface Spec extends TurboModule {
+getConstants: () => Object;
+createView: (
reactTag: ?number,
reactTag: number,
viewName: string,
rootTag: RootTag,
props: Object
) => void;
+updateView: (reactTag: number, viewName: string, props: Object) => void;
+findSubviewIn: (
reactTag: ?number,
reactTag: number,
point: Array<number>,
callback: (
nativeViewTag: number,
Expand All @@ -7806,7 +7806,7 @@ exports[`public API should not change unintentionally Libraries/ReactNative/Nati
) => void
) => void;
+dispatchViewManagerCommand: (
reactTag: ?number,
reactTag: number,
commandID: number,
commandArgs: ?Array<any>
) => void;
Expand All @@ -7826,8 +7826,8 @@ exports[`public API should not change unintentionally Libraries/ReactNative/Nati
callback: (x: number, y: number, width: number, height: number) => void
) => void;
+viewIsDescendantOf: (
reactTag: ?number,
ancestorReactTag: ?number,
reactTag: number,
ancestorReactTag: number,
callback: (result: Array<boolean>) => void
) => void;
+measureLayout: (
Expand All @@ -7841,16 +7841,16 @@ exports[`public API should not change unintentionally Libraries/ReactNative/Nati
errorCallback: (error: Object) => void,
callback: (left: number, top: number, width: number, height: number) => void
) => void;
+setJSResponder: (reactTag: ?number, blockNativeResponder: boolean) => void;
+setJSResponder: (reactTag: number, blockNativeResponder: boolean) => void;
+clearJSResponder: () => void;
+configureNextLayoutAnimation: (
config: Object,
callback: () => void,
errorCallback: (error: Object) => void
) => void;
+setChildren: (containerTag: ?number, reactTags: Array<number>) => void;
+setChildren: (containerTag: number, reactTags: Array<number>) => void;
+manageChildren: (
containerTag: ?number,
containerTag: number,
moveFromIndices: Array<number>,
moveToIndices: Array<number>,
addChildReactTags: Array<number>,
Expand All @@ -7860,17 +7860,17 @@ exports[`public API should not change unintentionally Libraries/ReactNative/Nati
+getConstantsForViewManager?: (viewManagerName: string) => Object;
+getDefaultEventTypes?: () => Array<string>;
+setLayoutAnimationEnabledExperimental?: (enabled: boolean) => void;
+sendAccessibilityEvent?: (reactTag: ?number, eventType: number) => void;
+sendAccessibilityEvent?: (reactTag: number, eventType: number) => void;
+showPopupMenu?: (
reactTag: ?number,
reactTag: number,
items: Array<string>,
error: (error: Object) => void,
success: (event: string, selected?: number) => void
) => void;
+dismissPopupMenu?: () => void;
+lazilyLoadView?: (name: string) => Object;
+focus?: (reactTag: ?number) => void;
+blur?: (reactTag: ?number) => void;
+focus?: (reactTag: number) => void;
+blur?: (reactTag: number) => void;
}
declare export default Spec;
"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import type {HostComponent} from 'react-native';
import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes';

import ReactNative from '../../../react-native/Libraries/Renderer/shims/ReactNative';
import nullthrows from 'nullthrows';
import * as React from 'react';
import {UIManager, requireNativeComponent} from 'react-native';

Expand Down Expand Up @@ -44,7 +45,7 @@ export function callNativeMethodToChangeBackgroundColor(
return;
}
UIManager.dispatchViewManagerCommand(
ReactNative.findNodeHandle(viewRef),
nullthrows(ReactNative.findNodeHandle(viewRef)),
UIManager.getViewManagerConfig(
'RNTMyLegacyNativeView',
).Commands.changeBackgroundColor.toString(),
Expand All @@ -61,7 +62,7 @@ export function callNativeMethodToAddOverlays(
return;
}
UIManager.dispatchViewManagerCommand(
ReactNative.findNodeHandle(viewRef),
nullthrows(ReactNative.findNodeHandle(viewRef)),
UIManager.getViewManagerConfig(
'RNTMyLegacyNativeView',
).Commands.addOverlays.toString(),
Expand All @@ -77,7 +78,7 @@ export function callNativeMethodToRemoveOverlays(
return;
}
UIManager.dispatchViewManagerCommand(
ReactNative.findNodeHandle(viewRef),
nullthrows(ReactNative.findNodeHandle(viewRef)),
UIManager.getViewManagerConfig(
'RNTMyLegacyNativeView',
).Commands.removeOverlays.toString(),
Expand Down

0 comments on commit 9d0e147

Please sign in to comment.