commit 67c5f6813ae54148622f522202612557fa82b2f2
parent 4a202140b604b6a40574b009d15bc70bf19e2865
Author: Florian Dold <dold@taler.net>
Date: Mon, 10 Aug 2026 02:20:08 +0200
Add deposit payto URI copy menu
Diffstat:
1 file changed, 35 insertions(+), 0 deletions(-)
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailScreen.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailScreen.kt
@@ -31,8 +31,12 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ContentCopy
+import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.DropdownMenu
+import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
+import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
@@ -106,6 +110,13 @@ fun TransactionDetailScreen(
}
val t by transactionManager.selectedTransaction.collectAsStateLifecycleAware()
+ val targetPaytoUri = if (destination is WalletDestination.TransactionDeposit) {
+ (t as? TransactionDeposit)?.targetPaytoUri
+ } else {
+ null
+ }
+ var showMenu by remember(targetPaytoUri) { mutableStateOf(false) }
+ val copyPaytoUri = stringResource(R.string.copy_payto_uri)
GlobalScaffold(
model = model,
@@ -146,6 +157,30 @@ fun TransactionDetailScreen(
}
Text(title)
},
+ actions = {
+ if (targetPaytoUri != null) {
+ Box {
+ IconButton(onClick = { showMenu = true }) {
+ Icon(
+ Icons.Default.MoreVert,
+ contentDescription = stringResource(R.string.menu),
+ )
+ }
+ DropdownMenu(
+ expanded = showMenu,
+ onDismissRequest = { showMenu = false },
+ ) {
+ DropdownMenuItem(
+ text = { Text(copyPaytoUri) },
+ onClick = {
+ showMenu = false
+ copyToClipBoard(context, copyPaytoUri, targetPaytoUri)
+ },
+ )
+ }
+ }
+ }
+ },
onNavigateBack = onNavigateBack,
) { paddingValues ->
if (t == null) {