diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipContactScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipContactScreen.kt index 36986dd9..cd67c6e1 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipContactScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipContactScreen.kt @@ -11,6 +11,7 @@ import android.net.Uri import android.provider.ContactsContract import android.provider.ContactsContract.CommonDataKinds import android.provider.ContactsContract.Contacts.Data +import androidx.activity.compose.BackHandler import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.Canvas @@ -187,6 +188,10 @@ private fun ContactScreen( navController.popBackStack() } + BackHandler(enabled = true) { + onBack() + } + Scaffold( modifier = Modifier .fillMaxSize() diff --git a/app/src/main/kotlin/com/tutpro/baresip/CallsScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/CallsScreen.kt index 1cf33423..c32d73d3 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/CallsScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/CallsScreen.kt @@ -3,6 +3,7 @@ package com.tutpro.baresip import android.content.Context import android.content.Intent import android.graphics.BitmapFactory +import androidx.activity.compose.BackHandler import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -89,6 +90,11 @@ private fun CallsScreen(navController: NavController, viewModel: ViewModel, aor: isHistoryLoaded = true } + BackHandler(enabled = true) { + account.missedCalls = false + navController.popBackStack() + } + Scaffold( modifier = Modifier.fillMaxSize().imePadding(), containerColor = LocalCustomColors.current.background, @@ -153,8 +159,8 @@ private fun TopAppBar(navController: NavController, account: Account, callHistor navigationIcon = { IconButton( onClick = { - navController.popBackStack() account.missedCalls = false + navController.popBackStack() } ) { Icon( diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatScreen.kt index e0b365fd..50e1baf2 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatScreen.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import android.text.format.DateUtils.isToday import android.widget.Toast +import androidx.activity.compose.BackHandler import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -166,8 +167,14 @@ private fun ChatScreen( } } + BackHandler(enabled = true) { + backAction(navController, account, peerUri) + } + Scaffold( - modifier = Modifier.fillMaxSize().imePadding(), + modifier = Modifier + .fillMaxSize() + .imePadding(), containerColor = LocalCustomColors.current.background, topBar = { Column(modifier = Modifier @@ -210,11 +217,7 @@ private fun TopAppBar( containerColor = LocalCustomColors.current.primary ), navigationIcon = { - IconButton(onClick = { - Message.updateMessagesFromPearRead(aor, peerUri) - account.unreadMessages = Message.unreadMessages(aor) - navController.popBackStack() - }) { + IconButton(onClick = { backAction(navController, account, peerUri) }) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back", @@ -262,7 +265,9 @@ private fun ChatContent( onMessageDeleted: () -> Unit ) { Column( - modifier = Modifier.fillMaxWidth().padding(contentPadding), + modifier = Modifier + .fillMaxWidth() + .padding(contentPadding), verticalArrangement = Arrangement.Bottom ) { Account(ctx, account) @@ -331,7 +336,9 @@ private fun Messages( } LazyColumn( - modifier = Modifier.fillMaxWidth().padding(start = 16.dp, end = 2.dp) + modifier = Modifier + .fillMaxWidth() + .padding(start = 16.dp, end = 2.dp) .verticalScrollbar( state = lazyListState, width = 4.dp, @@ -572,6 +579,13 @@ private fun NewMessage( } } +private fun backAction(navController: NavController, account: Account, peerUri: String) { + val aor = account.aor + Message.updateMessagesFromPearRead(aor, peerUri) + account.unreadMessages = Message.unreadMessages(aor) + navController.popBackStack() +} + private fun loadPeerMessages(aor: String, peerUri: String): List { val res = mutableListOf() for (m in BaresipService.messages.reversed())