From bdcc979bab2cb300e540c031a7c54e05b2328410 Mon Sep 17 00:00:00 2001 From: Arushi Kesarwani Date: Wed, 1 May 2024 21:27:58 -0700 Subject: [PATCH] Fix onKeyLongPress() in RELEASE Summary: In RELEASE mode, the `devSupportManager` received is ReleaseDevSupportManager for which `showDevOptionsDialog()` is a no-op https://github.com/facebook/react-native/blob/main/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.java#L66 Which is expected since this is a capability only in Dev mode(useDeveloperSupport = true). However, ATM `onKeyLongPresss()` returns true in RELEASE as well which is a bug. Since there is no need for `onKeyLongPress()` in RELEASE, changing it's logic to introduce that check and return false in case of RELEASE. Changelog: [Android][Fixed] onKeyLongPress() in RELEASE mode Reviewed By: christophpurrer, RSNara Differential Revision: D56850466 fbshipit-source-id: 92d2c8572b32d065f5f9d54e22588bb085b9dcc9 --- .../main/java/com/facebook/react/ReactDelegate.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java index 4007b823ff9..919ca202cb3 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java @@ -221,11 +221,13 @@ public class ReactDelegate { public boolean onKeyLongPress(int keyCode) { if (keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD) { - if (ReactFeatureFlags.enableBridgelessArchitecture - && mReactHost != null - && mReactHost.getDevSupportManager() != null) { - mReactHost.getDevSupportManager().showDevOptionsDialog(); - return true; + if (ReactFeatureFlags.enableBridgelessArchitecture && mReactHost != null) { + DevSupportManager devSupportManager = mReactHost.getDevSupportManager(); + // onKeyLongPress is a Dev API and not supported in RELEASE mode. + if (devSupportManager != null && !(devSupportManager instanceof ReleaseDevSupportManager)) { + devSupportManager.showDevOptionsDialog(); + return true; + } } else { if (getReactNativeHost().hasInstance() && getReactNativeHost().getUseDeveloperSupport()) { getReactNativeHost().getReactInstanceManager().showDevOptionsDialog();