react-native-unistyles 2.5.2 → 2.5.4
Sign up to get free protection for your applications and to get access to all the features.
@@ -19,7 +19,7 @@ class UnistylesInsets(private val reactApplicationContext: ReactApplicationConte
|
|
19
19
|
|
20
20
|
private fun getCurrentInsets(): Insets {
|
21
21
|
val baseInsets = this.getBaseInsets()
|
22
|
-
val statusBarTranslucent = this.hasTranslucentStatusBar(
|
22
|
+
val statusBarTranslucent = this.hasTranslucentStatusBar() ?: return baseInsets
|
23
23
|
val window = reactApplicationContext.currentActivity?.window ?: return baseInsets
|
24
24
|
val shouldModifyLandscapeInsets = this.forceLandscapeInsets(baseInsets, window)
|
25
25
|
|
@@ -48,7 +48,7 @@ class UnistylesInsets(private val reactApplicationContext: ReactApplicationConte
|
|
48
48
|
|
49
49
|
// available from Android 6.0
|
50
50
|
val window = reactApplicationContext.currentActivity?.window ?: return Insets(0, 0, 0, 0)
|
51
|
-
val systemInsets = window.decorView.rootWindowInsets
|
51
|
+
val systemInsets = window.decorView.rootWindowInsets ?: return Insets(0, 0, 0, 0)
|
52
52
|
|
53
53
|
val top = (systemInsets.systemWindowInsetTop / density).roundToInt()
|
54
54
|
val bottom = (systemInsets.systemWindowInsetBottom / density).roundToInt()
|
@@ -59,7 +59,7 @@ class UnistylesInsets(private val reactApplicationContext: ReactApplicationConte
|
|
59
59
|
}
|
60
60
|
|
61
61
|
// this function helps to detect statusBar translucent, as React Native is using weird API instead of windows flags
|
62
|
-
private fun hasTranslucentStatusBar(
|
62
|
+
private fun hasTranslucentStatusBar(): Boolean? {
|
63
63
|
val window = reactApplicationContext.currentActivity?.window ?: return null
|
64
64
|
val contentView = window.decorView.findViewById<View>(android.R.id.content) ?: return null
|
65
65
|
val decorViewLocation = IntArray(2)
|
@@ -52,6 +52,7 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
|
|
52
52
|
//region Lifecycle
|
53
53
|
init {
|
54
54
|
reactApplicationContext.registerReceiver(configurationChangeReceiver, IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED))
|
55
|
+
reactApplicationContext.addLifecycleEventListener(this)
|
55
56
|
}
|
56
57
|
|
57
58
|
private fun setupLayoutListener() {
|
@@ -59,14 +60,21 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
|
|
59
60
|
activity.window.decorView.rootView.viewTreeObserver.addOnGlobalLayoutListener(layoutListener)
|
60
61
|
}
|
61
62
|
|
62
|
-
|
63
|
-
override fun onCatalystInstanceDestroy() {
|
63
|
+
private fun stopLayoutListener() {
|
64
64
|
val activity = currentActivity ?: return
|
65
|
-
|
66
65
|
activity.window.decorView.rootView.viewTreeObserver.removeOnGlobalLayoutListener(layoutListener)
|
66
|
+
}
|
67
|
+
|
68
|
+
@Deprecated("Deprecated in Java")
|
69
|
+
override fun onCatalystInstanceDestroy() {
|
70
|
+
this.stopLayoutListener()
|
67
71
|
reactApplicationContext.unregisterReceiver(configurationChangeReceiver)
|
68
72
|
runnable?.let { drawHandler.removeCallbacks(it) }
|
69
|
-
|
73
|
+
reactApplicationContext.removeLifecycleEventListener(this)
|
74
|
+
|
75
|
+
if (this.isCxxReady) {
|
76
|
+
this.nativeDestroy()
|
77
|
+
}
|
70
78
|
}
|
71
79
|
|
72
80
|
//endregion
|
@@ -118,7 +126,6 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
|
|
118
126
|
val config = platform.getConfig()
|
119
127
|
val layoutConfig = platform.getLayoutConfig()
|
120
128
|
|
121
|
-
this.setupLayoutListener()
|
122
129
|
this.reactApplicationContext.javaScriptContextHolder?.let {
|
123
130
|
this.nativeInstall(
|
124
131
|
it.get(),
|
@@ -138,7 +145,9 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
|
|
138
145
|
|
139
146
|
false
|
140
147
|
} catch (e: Exception) {
|
141
|
-
false
|
148
|
+
this.isCxxReady = false
|
149
|
+
|
150
|
+
return false
|
142
151
|
}
|
143
152
|
}
|
144
153
|
|
@@ -232,11 +241,16 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
|
|
232
241
|
@ReactMethod
|
233
242
|
fun removeListeners(count: Double) = Unit
|
234
243
|
override fun onHostResume() {
|
235
|
-
|
236
|
-
|
244
|
+
if (isCxxReady) {
|
245
|
+
this.onConfigChange()
|
246
|
+
}
|
247
|
+
|
248
|
+
this.setupLayoutListener()
|
237
249
|
}
|
238
250
|
|
239
|
-
override fun onHostPause() {
|
251
|
+
override fun onHostPause() {
|
252
|
+
this.stopLayoutListener()
|
253
|
+
}
|
240
254
|
|
241
255
|
override fun onHostDestroy() {}
|
242
256
|
//endregion
|