diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt index 2252514..d55f620 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt @@ -382,6 +382,11 @@ fun WalletScreen( launchSingleTop = true } }, + onViewContact = { contactId -> + navController.navigate("contacts/$contactId") { + launchSingleTop = true + } + }, sendStrings ) } diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/common/PaymentSuccessContent.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/common/PaymentSuccessContent.kt index cb3e2d3..d5916a6 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/common/PaymentSuccessContent.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/common/PaymentSuccessContent.kt @@ -42,12 +42,16 @@ fun PaymentSuccessContent( onSecondary : () -> Unit, lnurl : String? = null, onSaveContact : ((name: String, addressType: PaymentAddressType?, address: String?) -> Unit)? = null, + onViewContact : ((contactId: String) -> Unit)? = null, + contactId : String? = null, contactName : String? = null ) { var showSaveSheet by remember { mutableStateOf(false) } Column( - modifier = Modifier.fillMaxSize().padding(24.dp), + modifier = Modifier + .fillMaxSize() + .padding(24.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { @@ -69,34 +73,28 @@ fun PaymentSuccessContent( color = MaterialTheme.colorScheme.onSurfaceVariant ) } - + Spacer(Modifier.height(32.dp)) // ── Save contact affordance (send-side only) ───────────────────────── when { contactName != null -> { // Contact already known — show their name - Spacer(Modifier.height(16.dp)) - Row( - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Center, - ) { - Icon( - imageVector = Icons.Filled.Person, - contentDescription = null, - tint = MaterialTheme.colorScheme.primary, - modifier = Modifier.size(18.dp) - ) - Spacer(Modifier.width(6.dp)) - Text( - text = contactName, - style = MaterialTheme.typography.titleMedium, - color = MaterialTheme.colorScheme.primary, - ) - } + val canNavigate = contactId != null && onViewContact != null + AssistChip( + onClick = { if (canNavigate) onViewContact!!(contactId!!) }, + label = { Text(contactName) }, + leadingIcon = { + Icon( + imageVector = Icons.Filled.Person, + contentDescription = null, + modifier = Modifier.size(AssistChipDefaults.IconSize) + ) + }, + enabled = canNavigate + ) } lnurl != null && onSaveContact != null -> { // Unknown sender — offer to save - Spacer(Modifier.height(16.dp)) OutlinedButton( onClick = { showSaveSheet = true }, modifier = Modifier.fillMaxWidth() diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/send/SendScreen.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/send/SendScreen.kt index 54c3dc7..4b67d96 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/send/SendScreen.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/send/SendScreen.kt @@ -45,6 +45,7 @@ fun SendScreen( vm : WalletViewModel, nfcVm : NfcViewModel, onViewDetails: (paymentHash: String, record: PaymentRecord) -> Unit = { _, _ -> }, + onViewContact: ((contactId: String) -> Unit)? = null, sendStrings: SendStrings ) { val strings = LocalAppStrings.current @@ -308,7 +309,9 @@ fun SendScreen( onSecondary = { vm.resetSendState(); input = "" }, lnurl = state.lnurl, // null for plain Bolt11 onSaveContact = vm::saveContactFromSend, - contactName = state.contactName + contactName = state.contactName, + contactId = state.contactId, + onViewContact = onViewContact ) }