@@ -69,6 +69,18 @@ fun ConfigKeyMapScreen(
6969 val isKeyMapEnabled by viewModel.isEnabled.collectAsStateWithLifecycle()
7070 val snackbarHostState = remember { SnackbarHostState () }
7171
72+ var showBackDialog by rememberSaveable { mutableStateOf(false ) }
73+
74+ if (showBackDialog) {
75+ BackDialog (
76+ onDismiss = { showBackDialog = false },
77+ onDiscardClick = {
78+ showBackDialog = false
79+ navigateBack()
80+ },
81+ )
82+ }
83+
7284 ConfigKeyMapScreen (
7385 modifier = modifier,
7486 isKeyMapEnabled = isKeyMapEnabled,
@@ -92,7 +104,13 @@ fun ConfigKeyMapScreen(
92104 viewModel.configTriggerViewModel.optionsViewModel,
93105 )
94106 },
95- navigateBack = navigateBack,
107+ onBackClick = {
108+ if (viewModel.isKeyMapEdited) {
109+ showBackDialog = true
110+ } else {
111+ navigateBack()
112+ }
113+ },
96114 onDoneClick = {
97115 viewModel.save()
98116 navigateBack()
@@ -111,7 +129,7 @@ private fun ConfigKeyMapScreen(
111129 actionScreen : @Composable () -> Unit ,
112130 constraintsScreen : @Composable () -> Unit ,
113131 optionsScreen : @Composable () -> Unit ,
114- navigateBack : () -> Unit = {},
132+ onBackClick : () -> Unit = {},
115133 onDoneClick : () -> Unit = {},
116134 snackbarHostState : SnackbarHostState = SnackbarHostState (),
117135) {
@@ -124,21 +142,7 @@ private fun ConfigKeyMapScreen(
124142 var currentTab: ConfigKeyMapTab ? by remember { mutableStateOf(null ) }
125143 val uriHandler = LocalUriHandler .current
126144
127- var showBackDialog by rememberSaveable { mutableStateOf(false ) }
128-
129- if (showBackDialog) {
130- BackDialog (
131- onDismiss = { showBackDialog = false },
132- onDiscardClick = {
133- showBackDialog = false
134- navigateBack()
135- },
136- )
137- }
138-
139- BackHandler {
140- showBackDialog = true
141- }
145+ BackHandler (onBack = onBackClick)
142146
143147 Scaffold (
144148 modifier.displayCutoutPadding(),
@@ -147,9 +151,7 @@ private fun ConfigKeyMapScreen(
147151 KeyMapAppBar (
148152 isKeyMapEnabled = isKeyMapEnabled,
149153 onKeyMapEnabledChange = onKeyMapEnabledChange,
150- onBackClick = {
151- showBackDialog = true
152- },
154+ onBackClick = onBackClick,
153155 onDoneClick = onDoneClick,
154156 showHelpButton = currentTab == ConfigKeyMapTab .TRIGGER ||
155157 currentTab == ConfigKeyMapTab .ACTIONS ||
@@ -602,7 +604,6 @@ private fun SmallScreenPreview() {
602604 actionScreen = {},
603605 constraintsScreen = {},
604606 optionsScreen = {},
605- navigateBack = {},
606607 )
607608 }
608609}
@@ -618,7 +619,6 @@ private fun MediumScreenPreview() {
618619 actionScreen = {},
619620 constraintsScreen = {},
620621 optionsScreen = {},
621- navigateBack = {},
622622 )
623623 }
624624}
@@ -634,7 +634,6 @@ private fun MediumScreenLandscapePreview() {
634634 actionScreen = {},
635635 constraintsScreen = {},
636636 optionsScreen = {},
637- navigateBack = {},
638637 )
639638 }
640639}
@@ -650,7 +649,6 @@ private fun LargeScreenPreview() {
650649 actionScreen = {},
651650 constraintsScreen = {},
652651 optionsScreen = {},
653- navigateBack = {},
654652 )
655653 }
656654}
0 commit comments