mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Following the [RFC](https://github.com/react-native-community/discussions-and-proposals/pull/925), this PR adds new `DevMenuConfiguration` object and extends `ReactHost` API for passing settings to the particular `DevSupportManager`. The `DevMenuConfiguration` includes: - isDevMenuEnabled, - isShakeGestureEnabled, - areKeyboardShortcutsEnabled, ## Changelog: [ANDROID][ADDED] - Add new configuration for `RCTDevMenu` Pull Request resolved: https://github.com/facebook/react-native/pull/53557 Test Plan: Tested with different configuration on `DevMenuConfiguration`: <details> <summary>Click to view code</summary> ```kt override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) fullyDrawnReporter.addReporter() maybeUpdateBackgroundColor() reactDelegate?.reactHost?.let { reactHost -> val devMenuConfiguration = DevMenuConfiguration( isDevMenuEnabled = true, isShakeGestureEnabled = false, areKeyboardShortcutsEnabled = false, ) reactHost.setDevMenuConfiguration(devMenuConfiguration) } // register insets listener to update margins on the ReactRootView to avoid overlap w/ system // bars reactDelegate?.reactRootView?.let { rootView -> val insetsType: Int = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout() val windowInsetsListener = { view: View, windowInsets: WindowInsetsCompat -> val insets = windowInsets.getInsets(insetsType) (view.layoutParams as FrameLayout.LayoutParams).apply { setMargins(insets.left, insets.top, insets.right, insets.bottom) } WindowInsetsCompat.CONSUMED } ViewCompat.setOnApplyWindowInsetsListener(rootView, windowInsetsListener) } } ``` </details> Reviewed By: vzaidman, cortinico Differential Revision: D81684310 Pulled By: coado fbshipit-source-id: 4e2c27ffc68037432587f4920b243f3dfdccb2fb