Skip to content

Commit f0b6713

Browse files
coadofacebook-github-bot
authored andcommitted
Android: Add new configuration for DevSupportManager (#53557)
Summary: Following the [RFC](react-native-community/discussions-and-proposals#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` 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> Differential Revision: D81684310 Pulled By: coado
1 parent 3766e58 commit f0b6713

File tree

9 files changed

+141
-10
lines changed

9 files changed

+141
-10
lines changed

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ public abstract interface class com/facebook/react/ReactHost {
244244
public abstract fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
245245
public abstract fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
246246
public abstract fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
247+
public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
247248
public abstract fun start ()Lcom/facebook/react/interfaces/TaskInterface;
248249
}
249250

@@ -1900,6 +1901,15 @@ public final class com/facebook/react/devsupport/DefaultDevLoadingViewImplementa
19001901
public final fun setDevLoadingEnabled (Z)V
19011902
}
19021903

1904+
public final class com/facebook/react/devsupport/DevMenuConfiguration {
1905+
public fun <init> ()V
1906+
public fun <init> (ZZZ)V
1907+
public synthetic fun <init> (ZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
1908+
public final fun getDevMenuEnabled ()Z
1909+
public final fun getKeyboardShortcutsEnabled ()Z
1910+
public final fun getShakeGestureEnabled ()Z
1911+
}
1912+
19031913
public class com/facebook/react/devsupport/DevServerHelper {
19041914
public fun <init> (Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;Landroid/content/Context;Lcom/facebook/react/packagerconnection/PackagerConnectionSettings;)V
19051915
public final fun closeInspectorConnection ()V
@@ -1941,17 +1951,20 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
19411951
public fun getCurrentActivity ()Landroid/app/Activity;
19421952
public final fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
19431953
public final fun getDevLoadingViewManager ()Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;
1954+
public fun getDevMenuEnabled ()Z
19441955
public final fun getDevServerHelper ()Lcom/facebook/react/devsupport/DevServerHelper;
19451956
public final fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
19461957
public final fun getDevSupportEnabled ()Z
19471958
public fun getDownloadedJSBundleFile ()Ljava/lang/String;
19481959
public final fun getJSAppBundleName ()Ljava/lang/String;
1960+
public fun getKeyboardShortcutsEnabled ()Z
19491961
public final fun getLastErrorCookie ()I
19501962
public final fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
19511963
public final fun getLastErrorTitle ()Ljava/lang/String;
19521964
public final fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
19531965
public final fun getReactInstanceDevHelper ()Lcom/facebook/react/devsupport/ReactInstanceDevHelper;
19541966
public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
1967+
public final fun getShakeGestureEnabled ()Z
19551968
public fun getSourceMapUrl ()Ljava/lang/String;
19561969
public fun getSourceUrl ()Ljava/lang/String;
19571970
protected abstract fun getUniqueTag ()Ljava/lang/String;
@@ -1970,14 +1983,17 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
19701983
public fun reloadSettings ()V
19711984
public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
19721985
public final fun setDevLoadingViewManager (Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;)V
1986+
public fun setDevMenuEnabled (Z)V
19731987
public final fun setDevSupportEnabled (Z)V
19741988
public fun setFpsDebugEnabled (Z)V
19751989
public fun setHotModuleReplacementEnabled (Z)V
1990+
public fun setKeyboardShortcutsEnabled (Z)V
19761991
public final fun setLastErrorCookie (I)V
19771992
public final fun setLastErrorStack ([Lcom/facebook/react/devsupport/interfaces/StackFrame;)V
19781993
public final fun setLastErrorTitle (Ljava/lang/String;)V
19791994
public final fun setLastErrorType (Lcom/facebook/react/devsupport/interfaces/ErrorType;)V
19801995
public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
1996+
public final fun setShakeGestureEnabled (Z)V
19811997
protected final fun showDevLoadingViewForRemoteJSEnabled ()V
19821998
public fun showDevOptionsDialog ()V
19831999
public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
@@ -2034,14 +2050,17 @@ public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebo
20342050
public fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
20352051
public fun getCurrentActivity ()Landroid/app/Activity;
20362052
public fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2053+
public fun getDevMenuEnabled ()Z
20372054
public fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
20382055
public fun getDevSupportEnabled ()Z
20392056
public fun getDownloadedJSBundleFile ()Ljava/lang/String;
2057+
public fun getKeyboardShortcutsEnabled ()Z
20402058
public fun getLastErrorCookie ()I
20412059
public fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
20422060
public fun getLastErrorTitle ()Ljava/lang/String;
20432061
public fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
20442062
public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
2063+
public fun getShakeGestureEnabled ()Z
20452064
public fun getSourceMapUrl ()Ljava/lang/String;
20462065
public fun getSourceUrl ()Ljava/lang/String;
20472066
public fun handleException (Ljava/lang/Exception;)V
@@ -2058,10 +2077,13 @@ public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebo
20582077
public fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
20592078
public fun reloadSettings ()V
20602079
public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2080+
public fun setDevMenuEnabled (Z)V
20612081
public fun setDevSupportEnabled (Z)V
20622082
public fun setFpsDebugEnabled (Z)V
20632083
public fun setHotModuleReplacementEnabled (Z)V
2084+
public fun setKeyboardShortcutsEnabled (Z)V
20642085
public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
2086+
public fun setShakeGestureEnabled (Z)V
20652087
public fun showDevOptionsDialog ()V
20662088
public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
20672089
public fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -2136,14 +2158,17 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
21362158
public abstract fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
21372159
public abstract fun getCurrentActivity ()Landroid/app/Activity;
21382160
public abstract fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2161+
public fun getDevMenuEnabled ()Z
21392162
public abstract fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
21402163
public abstract fun getDevSupportEnabled ()Z
21412164
public abstract fun getDownloadedJSBundleFile ()Ljava/lang/String;
2165+
public fun getKeyboardShortcutsEnabled ()Z
21422166
public abstract fun getLastErrorCookie ()I
21432167
public abstract fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
21442168
public abstract fun getLastErrorTitle ()Ljava/lang/String;
21452169
public abstract fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
21462170
public abstract fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
2171+
public fun getShakeGestureEnabled ()Z
21472172
public abstract fun getSourceMapUrl ()Ljava/lang/String;
21482173
public abstract fun getSourceUrl ()Ljava/lang/String;
21492174
public abstract fun handleReloadJS ()V
@@ -2160,10 +2185,13 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
21602185
public abstract fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
21612186
public abstract fun reloadSettings ()V
21622187
public abstract fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2188+
public fun setDevMenuEnabled (Z)V
21632189
public abstract fun setDevSupportEnabled (Z)V
21642190
public abstract fun setFpsDebugEnabled (Z)V
21652191
public abstract fun setHotModuleReplacementEnabled (Z)V
2192+
public fun setKeyboardShortcutsEnabled (Z)V
21662193
public abstract fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
2194+
public fun setShakeGestureEnabled (Z)V
21672195
public abstract fun showDevOptionsDialog ()V
21682196
public abstract fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
21692197
public abstract fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -3075,6 +3103,7 @@ public final class com/facebook/react/runtime/ReactHostImpl : com/facebook/react
30753103
public fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
30763104
public fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
30773105
public fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
3106+
public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
30783107
public fun start ()Lcom/facebook/react/interfaces/TaskInterface;
30793108
}
30803109

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,11 @@ public open class ReactDelegate {
393393
public fun shouldShowDevMenuOrReload(keyCode: Int, event: KeyEvent?): Boolean {
394394
val devSupportManager = devSupportManager
395395
// shouldShowDevMenuOrReload is a Dev API and not supported in RELEASE mode.
396-
if (devSupportManager == null || devSupportManager is ReleaseDevSupportManager) {
396+
if (
397+
devSupportManager == null ||
398+
!devSupportManager.keyboardShortcutsEnabled ||
399+
devSupportManager is ReleaseDevSupportManager
400+
) {
397401
return false
398402
}
399403

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactHost.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import android.os.Bundle
1414
import com.facebook.react.bridge.ReactContext
1515
import com.facebook.react.bridge.queue.ReactQueueConfiguration
1616
import com.facebook.react.common.LifecycleState
17+
import com.facebook.react.devsupport.DevMenuConfiguration
1718
import com.facebook.react.devsupport.interfaces.DevSupportManager
1819
import com.facebook.react.interfaces.TaskInterface
1920
import com.facebook.react.interfaces.fabric.ReactSurface
@@ -189,4 +190,7 @@ public interface ReactHost {
189190

190191
/** Remove a listener previously added with [addReactInstanceEventListener]. */
191192
public fun removeReactInstanceEventListener(listener: ReactInstanceEventListener)
193+
194+
/** Set the DevMenu configuration. */
195+
public fun setDevMenuConfiguration(config: DevMenuConfiguration): Unit = Unit
192196
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright (c) Meta Platforms, Inc. and affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*/
7+
8+
package com.facebook.react.devsupport
9+
10+
import com.facebook.react.BuildConfig
11+
12+
/** Configuration for enabling/disabling the dev menu. */
13+
public class DevMenuConfiguration(
14+
// whether the dev menu is enabled at all
15+
public val devMenuEnabled: Boolean = BuildConfig.DEBUG,
16+
// whether opening the dev menu with a shake gesture is enabled
17+
public val shakeGestureEnabled: Boolean = true,
18+
// whether opening the dev menu with a keyboard shortcut is enabled
19+
public val keyboardShortcutsEnabled: Boolean = true,
20+
)

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,22 @@ public abstract class DevSupportManagerBase(
129129
reloadSettings()
130130
}
131131

132+
final override var shakeGestureEnabled: Boolean
133+
get() = isShakeGestureEnabled
134+
set(value) {
135+
if (this.isShakeGestureEnabled == value) {
136+
return
137+
}
138+
139+
if (value) {
140+
startShakeDetector()
141+
} else {
142+
stopShakeDetector()
143+
}
144+
145+
this.isShakeGestureEnabled = value
146+
}
147+
132148
override val sourceMapUrl: String
133149
get() = jsAppBundleName?.let { devServerHelper.getSourceMapUrl(it) } ?: ""
134150

@@ -172,6 +188,7 @@ public abstract class DevSupportManagerBase(
172188
private var isReceiverRegistered = false
173189
private var isShakeDetectorStarted = false
174190
private var isDevSupportEnabled = false
191+
private var isShakeGestureEnabled = true
175192
private var isPackagerConnected = false
176193
private val errorCustomizers: MutableList<ErrorCustomizer> = mutableListOf()
177194
private var packagerLocationCustomizer: PackagerLocationCustomizer? = null
@@ -187,6 +204,9 @@ public abstract class DevSupportManagerBase(
187204
private var perfMonitorInitialized = false
188205
private var tracingStateProvider: TracingStateProvider? = null
189206

207+
public override var keyboardShortcutsEnabled: Boolean = true
208+
public override var devMenuEnabled: Boolean = true
209+
190210
init {
191211
// We store JS bundle loaded from dev server in a single destination in app's data dir.
192212
// In case when someone schedule 2 subsequent reloads it may happen that JS thread will
@@ -325,7 +345,12 @@ public abstract class DevSupportManagerBase(
325345
}
326346

327347
override fun showDevOptionsDialog() {
328-
if (devOptionsDialog != null || !isDevSupportEnabled || ActivityManager.isUserAMonkey()) {
348+
if (
349+
devOptionsDialog != null ||
350+
!isDevSupportEnabled ||
351+
!devMenuEnabled ||
352+
ActivityManager.isUserAMonkey()
353+
) {
329354
return
330355
}
331356
val options = LinkedHashMap<String, DevOptionHandler>()
@@ -861,6 +886,17 @@ public abstract class DevSupportManagerBase(
861886
}
862887
}
863888

889+
private fun startShakeDetector() {
890+
val sensorManager = applicationContext.getSystemService(Context.SENSOR_SERVICE) as SensorManager
891+
shakeDetector.start(sensorManager)
892+
isShakeDetectorStarted = true
893+
}
894+
895+
private fun stopShakeDetector() {
896+
shakeDetector.stop()
897+
isShakeDetectorStarted = false
898+
}
899+
864900
private fun reload() {
865901
UiThreadUtil.assertOnUiThread()
866902

@@ -870,11 +906,8 @@ public abstract class DevSupportManagerBase(
870906
debugOverlayController?.setFpsDebugViewVisible(devSettings.isFpsDebugEnabled)
871907

872908
// start shake gesture detector
873-
if (!isShakeDetectorStarted) {
874-
val sensorManager =
875-
applicationContext.getSystemService(Context.SENSOR_SERVICE) as SensorManager
876-
shakeDetector.start(sensorManager)
877-
isShakeDetectorStarted = true
909+
if (!isShakeDetectorStarted && isShakeGestureEnabled) {
910+
startShakeDetector()
878911
}
879912

880913
// register reload app broadcast receiver
@@ -926,8 +959,7 @@ public abstract class DevSupportManagerBase(
926959

927960
// stop shake gesture detector
928961
if (isShakeDetectorStarted) {
929-
shakeDetector.stop()
930-
isShakeDetectorStarted = false
962+
stopShakeDetector()
931963
}
932964

933965
// unregister app reload broadcast receiver

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,19 @@ public open class ReleaseDevSupportManager : DevSupportManager {
7070

7171
public override var devSupportEnabled: Boolean
7272
get() = false
73-
@Suppress("UNUSED_PARAMETER") set(isDevSupportEnabled: Boolean): Unit = Unit
73+
@Suppress("UNUSED_PARAMETER") set(value): Unit = Unit
74+
75+
public override var devMenuEnabled: Boolean
76+
get() = false
77+
@Suppress("UNUSED_PARAMETER") set(value): Unit = Unit
78+
79+
public override var shakeGestureEnabled: Boolean
80+
get() = false
81+
@Suppress("UNUSED_PARAMETER") set(value): Unit = Unit
82+
83+
public override var keyboardShortcutsEnabled: Boolean
84+
get() = false
85+
@Suppress("UNUSED_PARAMETER") set(value): Unit = Unit
7486

7587
public override val devSettings: DeveloperSettings?
7688
get() = null

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ public interface DevSupportManager : JSExceptionHandler {
3636
public val currentActivity: Activity?
3737
public val currentReactContext: ReactContext?
3838

39+
public var devMenuEnabled: Boolean
40+
get() = true
41+
set(_) = Unit
42+
43+
public var shakeGestureEnabled: Boolean
44+
get() = true
45+
set(_) = Unit
46+
47+
public var keyboardShortcutsEnabled: Boolean
48+
get() = true
49+
set(_) = Unit
50+
3951
public var devSupportEnabled: Boolean
4052

4153
public fun showNewJavaError(message: String?, e: Throwable)

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import com.facebook.react.common.annotations.FrameworkAPI
3939
import com.facebook.react.common.annotations.UnstableReactNativeAPI
4040
import com.facebook.react.common.build.ReactBuildConfig
4141
import com.facebook.react.devsupport.DefaultDevSupportManagerFactory
42+
import com.facebook.react.devsupport.DevMenuConfiguration
4243
import com.facebook.react.devsupport.DevSupportManagerBase
4344
import com.facebook.react.devsupport.DevSupportManagerFactory
4445
import com.facebook.react.devsupport.InspectorFlags
@@ -366,6 +367,12 @@ public class ReactHostImpl(
366367
reactInstanceEventListeners.remove(listener)
367368
}
368369

370+
override fun setDevMenuConfiguration(config: DevMenuConfiguration) {
371+
devSupportManager.devMenuEnabled = config.devMenuEnabled
372+
devSupportManager.shakeGestureEnabled = config.shakeGestureEnabled
373+
devSupportManager.keyboardShortcutsEnabled = config.keyboardShortcutsEnabled
374+
}
375+
369376
/**
370377
* Entrypoint to reload the ReactInstance. If the ReactInstance is destroying, will wait until
371378
* destroy is finished, before reloading.

packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterActivity.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.facebook.react.FBRNTesterEndToEndHelper
1919
import com.facebook.react.ReactActivity
2020
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
2121
import com.facebook.react.defaults.DefaultReactActivityDelegate
22+
import com.facebook.react.devsupport.DevMenuConfiguration
2223
import java.io.FileDescriptor
2324
import java.io.PrintWriter
2425

@@ -66,6 +67,16 @@ internal class RNTesterActivity : ReactActivity() {
6667
fullyDrawnReporter.addReporter()
6768
maybeUpdateBackgroundColor()
6869

70+
reactDelegate?.reactHost?.let { reactHost ->
71+
val devMenuConfiguration =
72+
DevMenuConfiguration(
73+
devMenuEnabled = true,
74+
shakeGestureEnabled = true,
75+
keyboardShortcutsEnabled = true,
76+
)
77+
reactHost.setDevMenuConfiguration(devMenuConfiguration)
78+
}
79+
6980
// register insets listener to update margins on the ReactRootView to avoid overlap w/ system
7081
// bars
7182
reactDelegate?.reactRootView?.let { rootView ->

0 commit comments

Comments
 (0)