On calls screen there is no need to to select URI of the peer from contacts
This commit is contained in:
@@ -90,7 +90,7 @@ fun NavGraphBuilder.callsScreenRoute(navController: NavController, viewModel: Vi
|
|||||||
@Composable
|
@Composable
|
||||||
private fun CallsScreen(navController: NavController, viewModel: ViewModel, aor: String) {
|
private fun CallsScreen(navController: NavController, viewModel: ViewModel, aor: String) {
|
||||||
|
|
||||||
val account = Account.ofAor(aor)!!
|
val ua = UserAgent.ofAor(aor)!!
|
||||||
|
|
||||||
val callHistory: MutableState<List<CallRow>> = remember { mutableStateOf(emptyList()) }
|
val callHistory: MutableState<List<CallRow>> = remember { mutableStateOf(emptyList()) }
|
||||||
var isHistoryLoaded by remember { mutableStateOf(false) }
|
var isHistoryLoaded by remember { mutableStateOf(false) }
|
||||||
@@ -115,7 +115,7 @@ private fun CallsScreen(navController: NavController, viewModel: ViewModel, aor:
|
|||||||
}
|
}
|
||||||
|
|
||||||
BackHandler(enabled = true) {
|
BackHandler(enabled = true) {
|
||||||
account.missedCalls = false
|
ua.account.missedCalls = false
|
||||||
navController.navigateUp()
|
navController.navigateUp()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ private fun CallsScreen(navController: NavController, viewModel: ViewModel, aor:
|
|||||||
.background(MaterialTheme.colorScheme.background)
|
.background(MaterialTheme.colorScheme.background)
|
||||||
.padding(top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding())
|
.padding(top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding())
|
||||||
) {
|
) {
|
||||||
TopAppBar(navController, account, callHistory)
|
TopAppBar(navController, ua, callHistory)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
content = { contentPadding ->
|
content = { contentPadding ->
|
||||||
@@ -139,7 +139,7 @@ private fun CallsScreen(navController: NavController, viewModel: ViewModel, aor:
|
|||||||
navController,
|
navController,
|
||||||
viewModel,
|
viewModel,
|
||||||
contentPadding,
|
contentPadding,
|
||||||
account,
|
ua,
|
||||||
callHistory
|
callHistory
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
@@ -148,7 +148,7 @@ private fun CallsScreen(navController: NavController, viewModel: ViewModel, aor:
|
|||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
private fun TopAppBar(navController: NavController, account: Account, callHistory: MutableState<List<CallRow>>) {
|
private fun TopAppBar(navController: NavController, ua: UserAgent, callHistory: MutableState<List<CallRow>>) {
|
||||||
|
|
||||||
var expanded by remember { mutableStateOf(false) }
|
var expanded by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
@@ -160,6 +160,8 @@ private fun TopAppBar(navController: NavController, account: Account, callHistor
|
|||||||
val showDialog = remember { mutableStateOf(false) }
|
val showDialog = remember { mutableStateOf(false) }
|
||||||
val lastAction = remember { mutableStateOf({}) }
|
val lastAction = remember { mutableStateOf({}) }
|
||||||
|
|
||||||
|
val account = ua.account
|
||||||
|
|
||||||
AlertDialog(
|
AlertDialog(
|
||||||
showDialog = showDialog,
|
showDialog = showDialog,
|
||||||
title = stringResource(R.string.confirmation),
|
title = stringResource(R.string.confirmation),
|
||||||
@@ -240,7 +242,7 @@ private fun CallsContent(
|
|||||||
navController: NavController,
|
navController: NavController,
|
||||||
viewModel: ViewModel,
|
viewModel: ViewModel,
|
||||||
contentPadding: PaddingValues,
|
contentPadding: PaddingValues,
|
||||||
account: Account,
|
ua: UserAgent,
|
||||||
callHistory: MutableState<List<CallRow>>
|
callHistory: MutableState<List<CallRow>>
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
@@ -250,8 +252,8 @@ private fun CallsContent(
|
|||||||
.padding(bottom = 16.dp),
|
.padding(bottom = 16.dp),
|
||||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||||
) {
|
) {
|
||||||
Account(account)
|
Account(ua.account)
|
||||||
Calls(ctx, navController, viewModel, account, callHistory)
|
Calls(ctx, navController, viewModel, ua, callHistory)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,7 +274,7 @@ private fun Calls(
|
|||||||
ctx: Context,
|
ctx: Context,
|
||||||
navController: NavController,
|
navController: NavController,
|
||||||
viewModel: ViewModel,
|
viewModel: ViewModel,
|
||||||
account: Account,
|
ua: UserAgent,
|
||||||
callHistory: MutableState<List<CallRow>>
|
callHistory: MutableState<List<CallRow>>
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@@ -340,16 +342,10 @@ private fun Calls(
|
|||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
modifier = Modifier.combinedClickable(
|
modifier = Modifier.combinedClickable(
|
||||||
onClick = {
|
onClick = {
|
||||||
val aor = account.aor
|
|
||||||
val ua = UserAgent.ofAor(aor)
|
|
||||||
val intent = Intent(ctx, MainActivity::class.java)
|
val intent = Intent(ctx, MainActivity::class.java)
|
||||||
if (ua != null) {
|
|
||||||
intent.putExtra("uap", ua.uap)
|
intent.putExtra("uap", ua.uap)
|
||||||
intent.putExtra("peer", peerUri)
|
intent.putExtra("peer", peerUri)
|
||||||
}
|
val peerName = Utils.friendlyUri(ctx, peerUri, ua.account)
|
||||||
else
|
|
||||||
Log.w(TAG, "onClickListener did not find UA for $aor")
|
|
||||||
val peerName = Utils.friendlyUri(ctx, peerUri, account)
|
|
||||||
val contact = Contact.findContact(peerUri)
|
val contact = Contact.findContact(peerUri)
|
||||||
if (contact is Contact.BaresipContact && contact.email.isNotEmpty())
|
if (contact is Contact.BaresipContact && contact.email.isNotEmpty())
|
||||||
message.value = String.format(
|
message.value = String.format(
|
||||||
@@ -363,86 +359,28 @@ private fun Calls(
|
|||||||
)
|
)
|
||||||
secondButtonText.value = ctx.getString(R.string.call)
|
secondButtonText.value = ctx.getString(R.string.call)
|
||||||
secondAction.value = {
|
secondAction.value = {
|
||||||
if (ua != null) {
|
|
||||||
val uris = if (contact is Contact.BaresipContact) {
|
|
||||||
if (ua.account.isMobile)
|
|
||||||
contact.uris.filter { it.startsWith("tel:") }
|
|
||||||
else
|
|
||||||
contact.uris
|
|
||||||
} else {
|
|
||||||
listOf(peerUri)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uris.size > 1) {
|
|
||||||
CustomElements.selectItems.value = uris
|
|
||||||
CustomElements.selectItemAction.value = { index ->
|
|
||||||
intent.putExtra("peer", uris[index])
|
|
||||||
handleIntent(ctx, viewModel, intent, "call")
|
handleIntent(ctx, viewModel, intent, "call")
|
||||||
navController.navigate("main") {
|
navController.navigate("main") {
|
||||||
popUpTo("main")
|
popUpTo("main")
|
||||||
launchSingleTop = true
|
launchSingleTop = true
|
||||||
}
|
}
|
||||||
CustomElements.showSelectItemDialog.value = false
|
|
||||||
}
|
|
||||||
CustomElements.showSelectItemDialog.value = true
|
|
||||||
} else if (uris.size == 1) {
|
|
||||||
intent.putExtra("peer", uris[0])
|
|
||||||
handleIntent(ctx, viewModel, intent, "call")
|
|
||||||
navController.navigate("main") {
|
|
||||||
popUpTo("main")
|
|
||||||
launchSingleTop = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
thirdButtonText.value = ctx.getString(R.string.send_message)
|
thirdButtonText.value = ctx.getString(R.string.send_message)
|
||||||
thirdAction.value = {
|
thirdAction.value = {
|
||||||
if (ua != null) {
|
|
||||||
val uris = if (contact is Contact.BaresipContact) {
|
|
||||||
if (ua.account.isMobile)
|
|
||||||
contact.uris.filter { it.startsWith("tel:") }
|
|
||||||
else
|
|
||||||
contact.uris
|
|
||||||
} else {
|
|
||||||
listOf(peerUri)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uris.size > 1) {
|
|
||||||
CustomElements.selectItems.value = uris
|
|
||||||
CustomElements.selectItemAction.value = { index ->
|
|
||||||
intent.putExtra("peer", uris[index])
|
|
||||||
if (ua.account.isMobile) {
|
if (ua.account.isMobile) {
|
||||||
if (!Utils.isDefaultSmsApp(ctx)) {
|
if (!Utils.isDefaultSmsApp(ctx)) {
|
||||||
alertTitle.value = ctx.getString(R.string.notice)
|
alertTitle.value = ctx.getString(R.string.notice)
|
||||||
alertMessage.value = ctx.getString(R.string.enable_default_messaging)
|
alertMessage.value = ctx.getString(R.string.enable_default_messaging)
|
||||||
showAlert.value = true
|
showAlert.value = true
|
||||||
} else {
|
|
||||||
handleIntent(ctx, viewModel, intent, "message")
|
|
||||||
navController.navigateUp()
|
|
||||||
}
|
}
|
||||||
} else {
|
else {
|
||||||
handleIntent(ctx, viewModel, intent, "message")
|
|
||||||
navController.navigateUp()
|
|
||||||
}
|
|
||||||
CustomElements.showSelectItemDialog.value = false
|
|
||||||
}
|
|
||||||
CustomElements.showSelectItemDialog.value = true
|
|
||||||
} else if (uris.size == 1) {
|
|
||||||
intent.putExtra("peer", uris[0])
|
|
||||||
if (ua.account.isMobile) {
|
|
||||||
if (!Utils.isDefaultSmsApp(ctx)) {
|
|
||||||
alertTitle.value = ctx.getString(R.string.notice)
|
|
||||||
alertMessage.value = ctx.getString(R.string.enable_default_messaging)
|
|
||||||
showAlert.value = true
|
|
||||||
} else {
|
|
||||||
handleIntent(ctx, viewModel, intent, "message")
|
|
||||||
navController.navigateUp()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
handleIntent(ctx, viewModel, intent, "message")
|
handleIntent(ctx, viewModel, intent, "message")
|
||||||
navController.navigateUp()
|
navController.navigateUp()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
handleIntent(ctx, viewModel, intent, "message")
|
||||||
|
navController.navigateUp()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (contact is Contact.BaresipContact && contact.email.isNotEmpty()) {
|
if (contact is Contact.BaresipContact && contact.email.isNotEmpty()) {
|
||||||
@@ -457,13 +395,13 @@ private fun Calls(
|
|||||||
Log.e(TAG, "Failed to start email activity: ${e.message}")
|
Log.e(TAG, "Failed to start email activity: ${e.message}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
lastButtonText.value = ""
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
lastButtonText.value = ""
|
||||||
showDialog.value = true
|
showDialog.value = true
|
||||||
},
|
},
|
||||||
onLongClick = {
|
onLongClick = {
|
||||||
val peerName = Utils.friendlyUri(ctx, peerUri, account)
|
val peerName = Utils.friendlyUri(ctx, peerUri, ua.account)
|
||||||
val callText: String = if (callRow.details.size > 1)
|
val callText: String = if (callRow.details.size > 1)
|
||||||
ctx.getString(R.string.calls_calls)
|
ctx.getString(R.string.calls_calls)
|
||||||
else
|
else
|
||||||
@@ -550,7 +488,7 @@ private fun Calls(
|
|||||||
}
|
}
|
||||||
if (count > 3)
|
if (count > 3)
|
||||||
Text("...", color = MaterialTheme.colorScheme.onBackground)
|
Text("...", color = MaterialTheme.colorScheme.onBackground)
|
||||||
Text(text = Utils.friendlyUri(ctx, peerUri, account),
|
Text(text = Utils.friendlyUri(ctx, peerUri, ua.account),
|
||||||
modifier = Modifier.padding(start = 8.dp),
|
modifier = Modifier.padding(start = 8.dp),
|
||||||
fontSize = 18.sp,
|
fontSize = 18.sp,
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
|
|||||||
@@ -664,7 +664,6 @@ private fun ContactsContent(
|
|||||||
contact.uris.filter { it.startsWith("tel:") }
|
contact.uris.filter { it.startsWith("tel:") }
|
||||||
else
|
else
|
||||||
contact.uris
|
contact.uris
|
||||||
|
|
||||||
if (uris.size > 1) {
|
if (uris.size > 1) {
|
||||||
CustomElements.selectItems.value = uris
|
CustomElements.selectItems.value = uris
|
||||||
CustomElements.selectItemAction.value = { index: Int ->
|
CustomElements.selectItemAction.value = { index: Int ->
|
||||||
|
|||||||
Reference in New Issue
Block a user