Skip to content

Commit c25c1bd

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 b9baddf commit c25c1bd

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
@@ -239,6 +239,7 @@ public abstract interface class com/facebook/react/ReactHost {
239239
public abstract fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
240240
public abstract fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
241241
public abstract fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
242+
public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
242243
public abstract fun start ()Lcom/facebook/react/interfaces/TaskInterface;
243244
}
244245

@@ -1895,6 +1896,15 @@ public final class com/facebook/react/devsupport/DefaultDevLoadingViewImplementa
18951896
public final fun setDevLoadingEnabled (Z)V
18961897
}
18971898

1899+
public final class com/facebook/react/devsupport/DevMenuConfiguration {
1900+
public fun <init> ()V
1901+
public fun <init> (ZZZ)V
1902+
public synthetic fun <init> (ZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
1903+
public final fun getDevMenuEnabled ()Z
1904+
public final fun getKeyboardShortcutsEnabled ()Z
1905+
public final fun getShakeGestureEnabled ()Z
1906+
}
1907+
18981908
public class com/facebook/react/devsupport/DevServerHelper {
18991909
public fun <init> (Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;Landroid/content/Context;Lcom/facebook/react/packagerconnection/PackagerConnectionSettings;)V
19001910
public final fun closeInspectorConnection ()V
@@ -1936,17 +1946,20 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
19361946
public fun getCurrentActivity ()Landroid/app/Activity;
19371947
public final fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
19381948
public final fun getDevLoadingViewManager ()Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;
1949+
public fun getDevMenuEnabled ()Z
19391950
public final fun getDevServerHelper ()Lcom/facebook/react/devsupport/DevServerHelper;
19401951
public final fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
19411952
public final fun getDevSupportEnabled ()Z
19421953
public fun getDownloadedJSBundleFile ()Ljava/lang/String;
19431954
public final fun getJSAppBundleName ()Ljava/lang/String;
1955+
public fun getKeyboardShortcutsEnabled ()Z
19441956
public final fun getLastErrorCookie ()I
19451957
public final fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
19461958
public final fun getLastErrorTitle ()Ljava/lang/String;
19471959
public final fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
19481960
public final fun getReactInstanceDevHelper ()Lcom/facebook/react/devsupport/ReactInstanceDevHelper;
19491961
public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
1962+
public final fun getShakeGestureEnabled ()Z
19501963
public fun getSourceMapUrl ()Ljava/lang/String;
19511964
public fun getSourceUrl ()Ljava/lang/String;
19521965
protected abstract fun getUniqueTag ()Ljava/lang/String;
@@ -1965,14 +1978,17 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
19651978
public fun reloadSettings ()V
19661979
public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
19671980
public final fun setDevLoadingViewManager (Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;)V
1981+
public fun setDevMenuEnabled (Z)V
19681982
public final fun setDevSupportEnabled (Z)V
19691983
public fun setFpsDebugEnabled (Z)V
19701984
public fun setHotModuleReplacementEnabled (Z)V
1985+
public fun setKeyboardShortcutsEnabled (Z)V
19711986
public final fun setLastErrorCookie (I)V
19721987
public final fun setLastErrorStack ([Lcom/facebook/react/devsupport/interfaces/StackFrame;)V
19731988
public final fun setLastErrorTitle (Ljava/lang/String;)V
19741989
public final fun setLastErrorType (Lcom/facebook/react/devsupport/interfaces/ErrorType;)V
19751990
public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
1991+
public final fun setShakeGestureEnabled (Z)V
19761992
protected final fun showDevLoadingViewForRemoteJSEnabled ()V
19771993
public fun showDevOptionsDialog ()V
19781994
public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
@@ -2029,14 +2045,17 @@ public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebo
20292045
public fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
20302046
public fun getCurrentActivity ()Landroid/app/Activity;
20312047
public fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2048+
public fun getDevMenuEnabled ()Z
20322049
public fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
20332050
public fun getDevSupportEnabled ()Z
20342051
public fun getDownloadedJSBundleFile ()Ljava/lang/String;
2052+
public fun getKeyboardShortcutsEnabled ()Z
20352053
public fun getLastErrorCookie ()I
20362054
public fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
20372055
public fun getLastErrorTitle ()Ljava/lang/String;
20382056
public fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
20392057
public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
2058+
public fun getShakeGestureEnabled ()Z
20402059
public fun getSourceMapUrl ()Ljava/lang/String;
20412060
public fun getSourceUrl ()Ljava/lang/String;
20422061
public fun handleException (Ljava/lang/Exception;)V
@@ -2053,10 +2072,13 @@ public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebo
20532072
public fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
20542073
public fun reloadSettings ()V
20552074
public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2075+
public fun setDevMenuEnabled (Z)V
20562076
public fun setDevSupportEnabled (Z)V
20572077
public fun setFpsDebugEnabled (Z)V
20582078
public fun setHotModuleReplacementEnabled (Z)V
2079+
public fun setKeyboardShortcutsEnabled (Z)V
20592080
public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
2081+
public fun setShakeGestureEnabled (Z)V
20602082
public fun showDevOptionsDialog ()V
20612083
public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
20622084
public fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -2131,14 +2153,17 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
21312153
public abstract fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
21322154
public abstract fun getCurrentActivity ()Landroid/app/Activity;
21332155
public abstract fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2156+
public fun getDevMenuEnabled ()Z
21342157
public abstract fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
21352158
public abstract fun getDevSupportEnabled ()Z
21362159
public abstract fun getDownloadedJSBundleFile ()Ljava/lang/String;
2160+
public fun getKeyboardShortcutsEnabled ()Z
21372161
public abstract fun getLastErrorCookie ()I
21382162
public abstract fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
21392163
public abstract fun getLastErrorTitle ()Ljava/lang/String;
21402164
public abstract fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
21412165
public abstract fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
2166+
public fun getShakeGestureEnabled ()Z
21422167
public abstract fun getSourceMapUrl ()Ljava/lang/String;
21432168
public abstract fun getSourceUrl ()Ljava/lang/String;
21442169
public abstract fun handleReloadJS ()V
@@ -2155,10 +2180,13 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
21552180
public abstract fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
21562181
public abstract fun reloadSettings ()V
21572182
public abstract fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2183+
public fun setDevMenuEnabled (Z)V
21582184
public abstract fun setDevSupportEnabled (Z)V
21592185
public abstract fun setFpsDebugEnabled (Z)V
21602186
public abstract fun setHotModuleReplacementEnabled (Z)V
2187+
public fun setKeyboardShortcutsEnabled (Z)V
21612188
public abstract fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
2189+
public fun setShakeGestureEnabled (Z)V
21622190
public abstract fun showDevOptionsDialog ()V
21632191
public abstract fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
21642192
public abstract fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -3070,6 +3098,7 @@ public final class com/facebook/react/runtime/ReactHostImpl : com/facebook/react
30703098
public fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
30713099
public fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
30723100
public fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
3101+
public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
30733102
public fun start ()Lcom/facebook/react/interfaces/TaskInterface;
30743103
}
30753104

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>()
@@ -888,6 +913,17 @@ public abstract class DevSupportManagerBase(
888913
}
889914
}
890915

916+
private fun startShakeDetector() {
917+
val sensorManager = applicationContext.getSystemService(Context.SENSOR_SERVICE) as SensorManager
918+
shakeDetector.start(sensorManager)
919+
isShakeDetectorStarted = true
920+
}
921+
922+
private fun stopShakeDetector() {
923+
shakeDetector.stop()
924+
isShakeDetectorStarted = false
925+
}
926+
891927
private fun reload() {
892928
UiThreadUtil.assertOnUiThread()
893929

@@ -897,11 +933,8 @@ public abstract class DevSupportManagerBase(
897933
debugOverlayController?.setFpsDebugViewVisible(devSettings.isFpsDebugEnabled)
898934

899935
// start shake gesture detector
900-
if (!isShakeDetectorStarted) {
901-
val sensorManager =
902-
applicationContext.getSystemService(Context.SENSOR_SERVICE) as SensorManager
903-
shakeDetector.start(sensorManager)
904-
isShakeDetectorStarted = true
936+
if (!isShakeDetectorStarted && isShakeGestureEnabled) {
937+
startShakeDetector()
905938
}
906939

907940
// register reload app broadcast receiver
@@ -955,8 +988,7 @@ public abstract class DevSupportManagerBase(
955988

956989
// stop shake gesture detector
957990
if (isShakeDetectorStarted) {
958-
shakeDetector.stop()
959-
isShakeDetectorStarted = false
991+
stopShakeDetector()
960992
}
961993

962994
// 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)