Use natigateup() instead of popBackStack() on contact screens
This commit is contained in:
@@ -74,7 +74,7 @@ private fun ContactScreen(ctx: Context, viewModel: ViewModel, navController: Nav
|
|||||||
val contact = Contact.androidContact(name)
|
val contact = Contact.androidContact(name)
|
||||||
if (contact == null) {
|
if (contact == null) {
|
||||||
Log.e(TAG, "No Android contact found with name $name")
|
Log.e(TAG, "No Android contact found with name $name")
|
||||||
navController.popBackStack()
|
navController.navigateUp()
|
||||||
}
|
}
|
||||||
Scaffold(
|
Scaffold(
|
||||||
modifier = Modifier.fillMaxSize().imePadding(),
|
modifier = Modifier.fillMaxSize().imePadding(),
|
||||||
@@ -99,12 +99,7 @@ private fun ContactScreen(ctx: Context, viewModel: ViewModel, navController: Nav
|
|||||||
@Composable
|
@Composable
|
||||||
private fun TopAppBar(title: String, navController: NavController) {
|
private fun TopAppBar(title: String, navController: NavController) {
|
||||||
TopAppBar(
|
TopAppBar(
|
||||||
title = {
|
title = { Text(text = title, fontWeight = FontWeight.Bold) },
|
||||||
Text(
|
|
||||||
text = title,
|
|
||||||
fontWeight = FontWeight.Bold
|
|
||||||
)
|
|
||||||
},
|
|
||||||
colors = TopAppBarDefaults.topAppBarColors(
|
colors = TopAppBarDefaults.topAppBarColors(
|
||||||
containerColor = MaterialTheme.colorScheme.primary,
|
containerColor = MaterialTheme.colorScheme.primary,
|
||||||
navigationIconContentColor = MaterialTheme.colorScheme.onPrimary,
|
navigationIconContentColor = MaterialTheme.colorScheme.onPrimary,
|
||||||
@@ -112,7 +107,7 @@ private fun TopAppBar(title: String, navController: NavController) {
|
|||||||
),
|
),
|
||||||
windowInsets = WindowInsets(0, 0, 0, 0),
|
windowInsets = WindowInsets(0, 0, 0, 0),
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = { navController.popBackStack() }) {
|
IconButton(onClick = { navController.navigateUp() }) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
||||||
contentDescription = "Back",
|
contentDescription = "Back",
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ import androidx.compose.material3.TopAppBarDefaults
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableIntStateOf
|
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
@@ -125,7 +124,6 @@ private fun ContactScreen(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
val ctx = LocalContext.current
|
val ctx = LocalContext.current
|
||||||
var clicks by remember { mutableIntStateOf(0) }
|
|
||||||
var screenState by remember { mutableStateOf(ScreenState()) }
|
var screenState by remember { mutableStateOf(ScreenState()) }
|
||||||
|
|
||||||
val title = if (screenState.new)
|
val title = if (screenState.new)
|
||||||
@@ -171,31 +169,23 @@ private fun ContactScreen(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val onBack: () -> Unit = {
|
val onBack: () -> Unit = {
|
||||||
clicks++
|
|
||||||
if (clicks == 1) {
|
|
||||||
screenState.tmpAvatarFile?.let { tempFile ->
|
screenState.tmpAvatarFile?.let { tempFile ->
|
||||||
if (tempFile.exists()) {
|
if (tempFile.exists()) {
|
||||||
Log.d(TAG, "Back pressed, deleting temp avatar: ${tempFile.name}")
|
Log.d(TAG, "Back pressed, deleting temp avatar: ${tempFile.name}")
|
||||||
Utils.deleteFile(tempFile)
|
Utils.deleteFile(tempFile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
navController.popBackStack()
|
navController.navigateUp()
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val onCheck: () -> Unit = {
|
val onCheck: () -> Unit = {
|
||||||
clicks++
|
|
||||||
if (clicks == 1) {
|
|
||||||
val result = checkOnClick(
|
val result = checkOnClick(
|
||||||
ctx = ctx,
|
ctx = ctx,
|
||||||
currentState = screenState,
|
currentState = screenState,
|
||||||
uriOrNameArg = uriOrNameArg,
|
uriOrNameArg = uriOrNameArg,
|
||||||
)
|
)
|
||||||
if (result)
|
if (result)
|
||||||
navController.popBackStack()
|
navController.navigateUp()
|
||||||
else
|
|
||||||
clicks = 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BackHandler(enabled = true) {
|
BackHandler(enabled = true) {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import androidx.compose.foundation.background
|
|||||||
import androidx.compose.foundation.combinedClickable
|
import androidx.compose.foundation.combinedClickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.offset
|
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
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.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.imePadding
|
import androidx.compose.foundation.layout.imePadding
|
||||||
|
import androidx.compose.foundation.layout.offset
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.statusBars
|
import androidx.compose.foundation.layout.statusBars
|
||||||
@@ -38,11 +38,8 @@ import androidx.compose.material3.Text
|
|||||||
import androidx.compose.material3.TopAppBar
|
import androidx.compose.material3.TopAppBar
|
||||||
import androidx.compose.material3.TopAppBarDefaults
|
import androidx.compose.material3.TopAppBarDefaults
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
|
||||||
import androidx.compose.runtime.mutableIntStateOf
|
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.setValue
|
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
@@ -80,7 +77,6 @@ fun NavGraphBuilder.contactsScreenRoute(
|
|||||||
private fun ContactsScreen(navController: NavController, viewModel: ViewModel) {
|
private fun ContactsScreen(navController: NavController, viewModel: ViewModel) {
|
||||||
|
|
||||||
val ctx = LocalContext.current
|
val ctx = LocalContext.current
|
||||||
var navigationClicks by remember { mutableIntStateOf(0) }
|
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
modifier = Modifier.fillMaxSize().imePadding(),
|
modifier = Modifier.fillMaxSize().imePadding(),
|
||||||
@@ -108,11 +104,7 @@ private fun ContactsScreen(navController: NavController, viewModel: ViewModel) {
|
|||||||
),
|
),
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(
|
IconButton(
|
||||||
onClick = {
|
onClick = { navController.navigateUp() }
|
||||||
navigationClicks++
|
|
||||||
if (navigationClicks == 1)
|
|
||||||
navController.popBackStack()
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
||||||
|
|||||||
Reference in New Issue
Block a user