|
|
@@ -2,8 +2,8 @@
|
|
|
|
|
|
import android.content.Context
|
|
|
import android.content.Intent
|
|
|
-import androidx.activity.compose.LocalActivity
|
|
|
import androidx.activity.compose.BackHandler
|
|
|
+import androidx.activity.compose.LocalActivity
|
|
|
import androidx.compose.animation.AnimatedContentTransitionScope
|
|
|
import androidx.compose.animation.core.FastOutSlowInEasing
|
|
|
import androidx.compose.animation.core.LinearOutSlowInEasing
|
|
|
@@ -15,6 +15,8 @@ import androidx.compose.animation.togetherWith
|
|
|
import androidx.compose.runtime.Composable
|
|
|
import androidx.compose.runtime.LaunchedEffect
|
|
|
import androidx.compose.runtime.remember
|
|
|
+import androidx.compose.ui.platform.LocalFocusManager
|
|
|
+import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
|
|
import androidx.navigation3.runtime.NavKey
|
|
|
import androidx.navigation3.runtime.entryProvider
|
|
|
import androidx.navigation3.runtime.rememberNavBackStack
|
|
|
@@ -45,6 +47,13 @@ class ReplaceRuleActivity : BaseComposeActivity() {
|
|
|
override fun Content() {
|
|
|
val configuration = LocalAppUiConfiguration.current
|
|
|
val context = LocalActivity.current
|
|
|
+ val focusManager = LocalFocusManager.current
|
|
|
+ val keyboardController = LocalSoftwareKeyboardController.current
|
|
|
+ fun leaveScreen(action: () -> Unit) {
|
|
|
+ focusManager.clearFocus(force = true)
|
|
|
+ keyboardController?.hide()
|
|
|
+ action()
|
|
|
+ }
|
|
|
val startRouteJson = intent.getStringExtra(EXTRA_START_ROUTE)
|
|
|
val backStack = rememberNavBackStack(
|
|
|
remember(startRouteJson) {
|
|
|
@@ -129,16 +138,18 @@ class ReplaceRuleActivity : BaseComposeActivity() {
|
|
|
))
|
|
|
},
|
|
|
onBack = {
|
|
|
- if (backStack.size > 1) {
|
|
|
- backStack.removeLastOrNull()
|
|
|
- } else {
|
|
|
- finish()
|
|
|
+ leaveScreen {
|
|
|
+ if (backStack.size > 1) {
|
|
|
+ backStack.removeLastOrNull()
|
|
|
+ } else {
|
|
|
+ finish()
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
entryProvider = entryProvider {
|
|
|
entry<ReplaceRuleRoute> {
|
|
|
ReplaceRuleRouteScreen(
|
|
|
- onBackClick = { finish() },
|
|
|
+ onBackClick = { leaveScreen { finish() } },
|
|
|
onNavigateToEdit = { route -> backStack.add(route) }
|
|
|
)
|
|
|
}
|
|
|
@@ -151,17 +162,21 @@ class ReplaceRuleActivity : BaseComposeActivity() {
|
|
|
ReplaceEditRouteScreen(
|
|
|
viewModel = viewModel,
|
|
|
onBack = {
|
|
|
- if (backStack.size > 1) {
|
|
|
- backStack.removeLastOrNull()
|
|
|
- } else {
|
|
|
- finish()
|
|
|
+ leaveScreen {
|
|
|
+ if (backStack.size > 1) {
|
|
|
+ backStack.removeLastOrNull()
|
|
|
+ } else {
|
|
|
+ finish()
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
onSaveSuccess = {
|
|
|
- if (backStack.size > 1) {
|
|
|
- backStack.removeLastOrNull()
|
|
|
- } else {
|
|
|
- finish()
|
|
|
+ leaveScreen {
|
|
|
+ if (backStack.size > 1) {
|
|
|
+ backStack.removeLastOrNull()
|
|
|
+ } else {
|
|
|
+ finish()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
)
|
|
|
@@ -169,10 +184,12 @@ class ReplaceRuleActivity : BaseComposeActivity() {
|
|
|
}
|
|
|
)
|
|
|
BackHandler(enabled = !configuration.appShell.predictiveBackEnabled) {
|
|
|
- if (backStack.size > 1) {
|
|
|
- backStack.removeLastOrNull()
|
|
|
- } else {
|
|
|
- finish()
|
|
|
+ leaveScreen {
|
|
|
+ if (backStack.size > 1) {
|
|
|
+ backStack.removeLastOrNull()
|
|
|
+ } else {
|
|
|
+ finish()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|