From 026ac1d9ba23307721eaae812967aa65e673254a Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Mon, 29 Dec 2025 09:14:27 +0200 Subject: [PATCH] Use natigateup() instead of popBackStack() on contact screens --- .../tutpro/baresip/AndroidContactScreen.kt | 11 ++---- .../tutpro/baresip/BaresipContactScreen.kt | 34 +++++++------------ .../com/tutpro/baresip/ContactsScreen.kt | 12 ++----- 3 files changed, 17 insertions(+), 40 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/AndroidContactScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/AndroidContactScreen.kt index 1eb224de..7a91ffd5 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AndroidContactScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AndroidContactScreen.kt @@ -74,7 +74,7 @@ private fun ContactScreen(ctx: Context, viewModel: ViewModel, navController: Nav val contact = Contact.androidContact(name) if (contact == null) { Log.e(TAG, "No Android contact found with name $name") - navController.popBackStack() + navController.navigateUp() } Scaffold( modifier = Modifier.fillMaxSize().imePadding(), @@ -99,12 +99,7 @@ private fun ContactScreen(ctx: Context, viewModel: ViewModel, navController: Nav @Composable private fun TopAppBar(title: String, navController: NavController) { TopAppBar( - title = { - Text( - text = title, - fontWeight = FontWeight.Bold - ) - }, + title = { Text(text = title, fontWeight = FontWeight.Bold) }, colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.primary, navigationIconContentColor = MaterialTheme.colorScheme.onPrimary, @@ -112,7 +107,7 @@ private fun TopAppBar(title: String, navController: NavController) { ), windowInsets = WindowInsets(0, 0, 0, 0), navigationIcon = { - IconButton(onClick = { navController.popBackStack() }) { + IconButton(onClick = { navController.navigateUp() }) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back", diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipContactScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipContactScreen.kt index 8bc514b5..6c45f5e6 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipContactScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipContactScreen.kt @@ -52,7 +52,6 @@ import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -125,7 +124,6 @@ private fun ContactScreen( ) { val ctx = LocalContext.current - var clicks by remember { mutableIntStateOf(0) } var screenState by remember { mutableStateOf(ScreenState()) } val title = if (screenState.new) @@ -171,31 +169,23 @@ private fun ContactScreen( } val onBack: () -> Unit = { - clicks++ - if (clicks == 1) { - screenState.tmpAvatarFile?.let { tempFile -> - if (tempFile.exists()) { - Log.d(TAG, "Back pressed, deleting temp avatar: ${tempFile.name}") - Utils.deleteFile(tempFile) - } + screenState.tmpAvatarFile?.let { tempFile -> + if (tempFile.exists()) { + Log.d(TAG, "Back pressed, deleting temp avatar: ${tempFile.name}") + Utils.deleteFile(tempFile) } - navController.popBackStack() } + navController.navigateUp() } val onCheck: () -> Unit = { - clicks++ - if (clicks == 1) { - val result = checkOnClick( - ctx = ctx, - currentState = screenState, - uriOrNameArg = uriOrNameArg, - ) - if (result) - navController.popBackStack() - else - clicks = 0 - } + val result = checkOnClick( + ctx = ctx, + currentState = screenState, + uriOrNameArg = uriOrNameArg, + ) + if (result) + navController.navigateUp() } BackHandler(enabled = true) { diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactsScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactsScreen.kt index 971f78a9..997685ea 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactsScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactsScreen.kt @@ -9,7 +9,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.WindowInsets @@ -17,6 +16,7 @@ import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.imePadding +import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBars @@ -38,11 +38,8 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -80,7 +77,6 @@ fun NavGraphBuilder.contactsScreenRoute( private fun ContactsScreen(navController: NavController, viewModel: ViewModel) { val ctx = LocalContext.current - var navigationClicks by remember { mutableIntStateOf(0) } Scaffold( modifier = Modifier.fillMaxSize().imePadding(), @@ -108,11 +104,7 @@ private fun ContactsScreen(navController: NavController, viewModel: ViewModel) { ), navigationIcon = { IconButton( - onClick = { - navigationClicks++ - if (navigationClicks == 1) - navController.popBackStack() - } + onClick = { navController.navigateUp() } ) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack,