enhancement: navigate to contact details from successful send
This commit is contained in:
@@ -382,6 +382,11 @@ fun WalletScreen(
|
||||
launchSingleTop = true
|
||||
}
|
||||
},
|
||||
onViewContact = { contactId ->
|
||||
navController.navigate("contacts/$contactId") {
|
||||
launchSingleTop = true
|
||||
}
|
||||
},
|
||||
sendStrings
|
||||
)
|
||||
}
|
||||
|
||||
+19
-21
@@ -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()
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user