@momo-kits/native-kits 0.164.1-beta.13-debug → 0.164.1-beta.14-debug
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compose/build.gradle.kts +1 -1
- package/compose/compose.podspec +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +8 -22
- package/gradle.properties +1 -1
- package/ios/native-kits.podspec +1 -1
- package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
- package/package.json +1 -1
package/compose/build.gradle.kts
CHANGED
package/compose/compose.podspec
CHANGED
|
@@ -172,35 +172,21 @@ internal fun StackScreen(
|
|
|
172
172
|
// Port of RN's `hasCustomBackHandling`: this handler is registered inside the NavHost
|
|
173
173
|
// destination, so while it is enabled it beats NavHost's own predictive-back handler and
|
|
174
174
|
// swallows the swipe. Enable it only when a plain pop is the wrong answer.
|
|
175
|
+
val canPop = navigator.canPop()
|
|
176
|
+
|
|
177
|
+
// `isBottomTabChild` used to be a term here, which swallowed the swipe on every tab screen:
|
|
178
|
+
// this handler out-ranks NavHost's predictive-back one and BackEventHandler implements only
|
|
179
|
+
// onBackCompleted, so back still landed but nothing seeked. The root case it was guarding is
|
|
180
|
+
// already covered by `!canPop` below, and letting a tab screen through means the nested tab
|
|
181
|
+
// NavHost seeks its own transition back to the previous tab.
|
|
175
182
|
val hasCustomBackHandling = !SwipeBackConfig.enabled ||
|
|
176
|
-
isBottomTabChild ||
|
|
177
183
|
options.onBackHandler != null ||
|
|
178
184
|
options.headerBackProps.preventBack != null ||
|
|
179
185
|
OverplayComponentRegistry.isOverplayShowing() ||
|
|
180
|
-
!
|
|
186
|
+
!canPop
|
|
181
187
|
|
|
182
188
|
BackHandler(hasCustomBackHandling) { navigator.onBackSafe() }
|
|
183
189
|
|
|
184
|
-
// TEMPORARY DIAGNOSTIC (DS-760) — remove once the swallowing term is known.
|
|
185
|
-
// While this handler is enabled it out-ranks NavHost's predictive-back handler, so the back
|
|
186
|
-
// still lands on release but nothing seeks: the pop works and the transition is missing,
|
|
187
|
-
// which is exactly what is being reported. The test device has no Xcode, so the one channel
|
|
188
|
-
// known to reach it reports which of the six terms is true. Distinct styles, felt on entering
|
|
189
|
-
// the screen; "medium" means the whole predicate is false and the seek should be running.
|
|
190
|
-
LaunchedEffect(hasCustomBackHandling, options, isBottomTabChild) {
|
|
191
|
-
val api = maxApi ?: return@LaunchedEffect
|
|
192
|
-
val style = when {
|
|
193
|
-
!SwipeBackConfig.enabled -> "heavy"
|
|
194
|
-
isBottomTabChild -> "heavy"
|
|
195
|
-
options.onBackHandler != null -> "rigid"
|
|
196
|
-
options.headerBackProps.preventBack != null -> "soft"
|
|
197
|
-
OverplayComponentRegistry.isOverplayShowing() -> "soft"
|
|
198
|
-
!navigator.canPop() -> "heavy"
|
|
199
|
-
else -> "medium"
|
|
200
|
-
}
|
|
201
|
-
runCatching { api.triggerEventVibration(style, callback = null) }
|
|
202
|
-
}
|
|
203
|
-
|
|
204
190
|
CompositionLocalProvider(
|
|
205
191
|
StackScreenScrollableState provides options.scrollData.scrollState,
|
|
206
192
|
LocalNavigation provides navigation,
|
package/gradle.properties
CHANGED
package/ios/native-kits.podspec
CHANGED