From 69d43f800df219f866d78e76a77ddffaf8210c21 Mon Sep 17 00:00:00 2001 From: fabriziobertoglio1987 Date: Tue, 29 Nov 2022 16:53:21 +0100 Subject: [PATCH] fix onAccessibilityAction not work on Fabric MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ReactAccessibilityDelegate performAccessibilityAction dispatches the event topAccessibilityAction -- Understand why Fabric does not call registerEventEmitter before performAccessibilityAction for that reactTag/surfaceId Read StackTrace from error message (use printStacktrace) The method getUIManager retrieve the UIManager from the reactTag and does not check if is Fabric or Paper ReactAccessibilityDelegate [performAccessibilityAction](https://github.com/facebook/react-native/blob/bf37a34c38b39a14de8194520d07de0b9f8c0bf7/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java#L410-L415) dispatches the event topAccessibilityAction Understand why Fabric does not call [registerEventEmitter](https://github.com/fabriziobertoglio1987/react-native/blob/163171ccab6937785f4f3c85e011bd14540bebf5/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java#L426) before performAccessibilityAction for that reactTag/surfaceId Read StackTrace from [error message](https://github.com/facebook/react-native/issues/30841#issuecomment-1228128357) (use [printStacktrace](https://www.google.com/search?q=java+printStacktrace)) The method [getUIManager](https://github.com/fabriziobertoglio1987/react-native/blob/dc4c54ec1b7b7f7cd37c7402b1eac5292cb4996a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.java#L40-L48) retrieve the UIManager from the reactTag and does not check if is Fabric or Paper --- .../facebook/react/uimanager/ReactAccessibilityDelegate.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java index e6ef3c837975c9..84f82fcde7b8ad 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java @@ -41,6 +41,7 @@ import com.facebook.react.bridge.ReadableType; import com.facebook.react.bridge.UIManager; import com.facebook.react.bridge.WritableMap; +import com.facebook.react.uimanager.common.ViewUtil; import com.facebook.react.uimanager.events.Event; import com.facebook.react.uimanager.events.EventDispatcher; import com.facebook.react.uimanager.util.ReactFindViewUtil; @@ -403,7 +404,8 @@ public boolean performAccessibilityAction(View host, int action, Bundle args) { if (reactContext.hasActiveReactInstance()) { final int reactTag = host.getId(); final int surfaceId = UIManagerHelper.getSurfaceId(reactContext); - UIManager uiManager = UIManagerHelper.getUIManager(reactContext, reactTag); + UIManager uiManager = + UIManagerHelper.getUIManager(reactContext, ViewUtil.getUIManagerType(reactTag)); if (uiManager != null) { uiManager .getEventDispatcher()