Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'[skip ci] [RN][JS] UIManagerJSInterface: Fix getConstantsForViewManager types #42442

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 24 additions & 60 deletions packages/react-native/Libraries/ReactNative/BridgelessUIManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand All @@ -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 All @@ -157,7 +157,7 @@ const UIManagerJSUnusedAPIs = {

const UIManagerJSPlatformAPIs = Platform.select({
android: {
getConstantsForViewManager: (viewManagerName: string): Object => {
getConstantsForViewManager: (viewManagerName: string): ?Object => {
if (getConstantsForViewManager) {
return getConstantsForViewManager(viewManagerName);
}
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 @@ -245,18 +236,16 @@ const UIManagerJSPlatformAPIs = Platform.select({
},
},
ios: {
/**
* TODO(T174674274): Implement lazy loading of legacy view managers in the new architecture.
*
* Leave this unimplemented until we implement lazy loading of legacy modules and view managers in the new architecture.
*/
lazilyLoadView: (name: string): Object => {
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 @@ -266,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 @@ -321,7 +303,7 @@ const UIManagerJS: UIManagerJSInterface & {[string]: any} = {
}
},
findSubviewIn: (
reactTag: ?number,
reactTag: number,
point: Array<number>,
callback: (
nativeViewTag: number,
Expand All @@ -334,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 @@ -356,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
28 changes: 14 additions & 14 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 @@ -97,12 +97,12 @@ export interface Spec extends TurboModule {
) => void;

// Android only
+getConstantsForViewManager?: (viewManagerName: string) => Object;
+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,36 +7841,36 @@ 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>,
addAtIndices: Array<number>,
removeAtIndices: Array<number>
) => void;
+getConstantsForViewManager?: (viewManagerName: string) => Object;
+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 @@ -130,6 +130,7 @@ + (BOOL)isSupported:(NSString *)componentName
}

// Step 3: check if the module has been registered
// TODO(T174674274): Implement lazy loading of legacy view managers in the new architecture.
NSArray<Class> *registeredModules = RCTGetModuleClasses();
NSMutableDictionary<NSString *, Class> *supportedLegacyViewComponents =
[RCTLegacyViewManagerInteropComponentView _supportedLegacyViewComponents];
Expand Down
Loading