Use natigateup() instead of popBackStack() on contact screens

This commit is contained in:
Juha Heinanen
2025-12-29 09:14:27 +02:00
parent 412a67a44f
commit 026ac1d9ba
3 changed files with 17 additions and 40 deletions

View File

@ -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",

View File

@ -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) {

View File

@ -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,