enhancement: navigate to contact details from successful send
This commit is contained in:
@@ -382,6 +382,11 @@ fun WalletScreen(
|
|||||||
launchSingleTop = true
|
launchSingleTop = true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
onViewContact = { contactId ->
|
||||||
|
navController.navigate("contacts/$contactId") {
|
||||||
|
launchSingleTop = true
|
||||||
|
}
|
||||||
|
},
|
||||||
sendStrings
|
sendStrings
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-16
@@ -42,12 +42,16 @@ fun PaymentSuccessContent(
|
|||||||
onSecondary : () -> Unit,
|
onSecondary : () -> Unit,
|
||||||
lnurl : String? = null,
|
lnurl : String? = null,
|
||||||
onSaveContact : ((name: String, addressType: PaymentAddressType?, address: String?) -> Unit)? = null,
|
onSaveContact : ((name: String, addressType: PaymentAddressType?, address: String?) -> Unit)? = null,
|
||||||
|
onViewContact : ((contactId: String) -> Unit)? = null,
|
||||||
|
contactId : String? = null,
|
||||||
contactName : String? = null
|
contactName : String? = null
|
||||||
) {
|
) {
|
||||||
var showSaveSheet by remember { mutableStateOf(false) }
|
var showSaveSheet by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier.fillMaxSize().padding(24.dp),
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(24.dp),
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
verticalArrangement = Arrangement.Center
|
verticalArrangement = Arrangement.Center
|
||||||
) {
|
) {
|
||||||
@@ -69,34 +73,28 @@ fun PaymentSuccessContent(
|
|||||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Spacer(Modifier.height(32.dp))
|
||||||
// ── Save contact affordance (send-side only) ─────────────────────────
|
// ── Save contact affordance (send-side only) ─────────────────────────
|
||||||
when {
|
when {
|
||||||
contactName != null -> {
|
contactName != null -> {
|
||||||
// Contact already known — show their name
|
// Contact already known — show their name
|
||||||
Spacer(Modifier.height(16.dp))
|
val canNavigate = contactId != null && onViewContact != null
|
||||||
Row(
|
AssistChip(
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
onClick = { if (canNavigate) onViewContact!!(contactId!!) },
|
||||||
horizontalArrangement = Arrangement.Center,
|
label = { Text(contactName) },
|
||||||
) {
|
leadingIcon = {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Filled.Person,
|
imageVector = Icons.Filled.Person,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
modifier = Modifier.size(AssistChipDefaults.IconSize)
|
||||||
modifier = Modifier.size(18.dp)
|
|
||||||
)
|
)
|
||||||
Spacer(Modifier.width(6.dp))
|
},
|
||||||
Text(
|
enabled = canNavigate
|
||||||
text = contactName,
|
|
||||||
style = MaterialTheme.typography.titleMedium,
|
|
||||||
color = MaterialTheme.colorScheme.primary,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
lnurl != null && onSaveContact != null -> {
|
lnurl != null && onSaveContact != null -> {
|
||||||
// Unknown sender — offer to save
|
// Unknown sender — offer to save
|
||||||
Spacer(Modifier.height(16.dp))
|
|
||||||
OutlinedButton(
|
OutlinedButton(
|
||||||
onClick = { showSaveSheet = true },
|
onClick = { showSaveSheet = true },
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ fun SendScreen(
|
|||||||
vm : WalletViewModel,
|
vm : WalletViewModel,
|
||||||
nfcVm : NfcViewModel,
|
nfcVm : NfcViewModel,
|
||||||
onViewDetails: (paymentHash: String, record: PaymentRecord) -> Unit = { _, _ -> },
|
onViewDetails: (paymentHash: String, record: PaymentRecord) -> Unit = { _, _ -> },
|
||||||
|
onViewContact: ((contactId: String) -> Unit)? = null,
|
||||||
sendStrings: SendStrings
|
sendStrings: SendStrings
|
||||||
) {
|
) {
|
||||||
val strings = LocalAppStrings.current
|
val strings = LocalAppStrings.current
|
||||||
@@ -308,7 +309,9 @@ fun SendScreen(
|
|||||||
onSecondary = { vm.resetSendState(); input = "" },
|
onSecondary = { vm.resetSendState(); input = "" },
|
||||||
lnurl = state.lnurl, // null for plain Bolt11
|
lnurl = state.lnurl, // null for plain Bolt11
|
||||||
onSaveContact = vm::saveContactFromSend,
|
onSaveContact = vm::saveContactFromSend,
|
||||||
contactName = state.contactName
|
contactName = state.contactName,
|
||||||
|
contactId = state.contactId,
|
||||||
|
onViewContact = onViewContact
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user