taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit e9f56b1fa9605d457f2d210a336950c3e901db6d
parent 1bc091b55f331b32063079d2e6783759893f8602
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Sun, 25 Oct 2026 19:36:36 +0100

mailbox: update to minor API change

Diffstat:
Mwallet/src/main/java/net/taler/wallet/mailbox/MailboxManager.kt | 2+-
Mwallet/src/main/java/net/taler/wallet/mailbox/MailboxScreen.kt | 53++++++++++++++++++++++++++++++++++++++++++++++-------
Mwallet/src/main/res/values/strings.xml | 2++
3 files changed, 49 insertions(+), 8 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/mailbox/MailboxManager.kt b/wallet/src/main/java/net/taler/wallet/mailbox/MailboxManager.kt @@ -148,7 +148,7 @@ class MailboxManager( private fun getMessages(config: MailboxConfiguration) { scope.launch { - api.request("getMailboxMessage", MailboxMessagesResponse.serializer()) + api.request("getMailboxMessages", MailboxMessagesResponse.serializer()) .onSuccess { response -> _mailbox.value = MailboxResult.Success(config, response.messages) }.onError { diff --git a/wallet/src/main/java/net/taler/wallet/mailbox/MailboxScreen.kt b/wallet/src/main/java/net/taler/wallet/mailbox/MailboxScreen.kt @@ -25,6 +25,8 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.filled.ArrowDownward +import androidx.compose.material.icons.filled.ArrowUpward import androidx.compose.material.icons.filled.ContentCopy import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Info @@ -32,6 +34,7 @@ import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -57,6 +60,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource @@ -271,7 +275,10 @@ fun MessageItem( ) { val context = LocalContext.current val isPayPush = message.talerUri.startsWith("taler://pay-push") - val isPayPull = message.talerUri.startsWith("taler://pay-pull") + val isPayPull = message.talerUri.startsWith("taler://pay-pull") || + message.talerUri.startsWith("taler://pay/") || + message.talerUri.startsWith("taler://pay-template") + Row( modifier = Modifier .fillMaxWidth() @@ -279,22 +286,54 @@ fun MessageItem( verticalAlignment = Alignment.CenterVertically ) { Column(modifier = Modifier.weight(1f)) { - if (isPayPush || isPayPull) { + if (isPayPush) { Button( - onClick = { onNavigate(WalletDestination.HandleUri(message.talerUri), false) } + onClick = { onNavigate(WalletDestination.HandleUri(message.talerUri), false) }, + colors = ButtonDefaults.buttonColors( + containerColor = Color(0xFF2E7D32), + contentColor = Color.White, + ), + modifier = Modifier.padding(bottom = 6.dp) ) { - Text(if (isPayPush) "Accept payment" else "Pay invoice") + Icon( + imageVector = Icons.Default.ArrowDownward, + contentDescription = null, + modifier = Modifier.padding(end = 6.dp) + ) + Text(stringResource(R.string.mailbox_incoming_payment)) + } + } else if (isPayPull) { + Button( + onClick = { onNavigate(WalletDestination.HandleUri(message.talerUri), false) }, + colors = ButtonDefaults.buttonColors( + containerColor = Color(0xFFE65100), + contentColor = Color.White, + ), + modifier = Modifier.padding(bottom = 6.dp) + ) { + Icon( + imageVector = Icons.Default.ArrowUpward, + contentDescription = null, + modifier = Modifier.padding(end = 6.dp) + ) + Text(stringResource(R.string.mailbox_payment_request)) } } else { - Text(message.talerUri, style = MaterialTheme.typography.bodyMedium) + Text( + text = message.talerUri, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(bottom = 6.dp) + ) } Text( "From: ${message.originMailboxBaseUrl}", - style = MaterialTheme.typography.bodySmall + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, ) Text( "Received: ${message.downloadedAt.ms.toAbsoluteTime(context)}", - style = MaterialTheme.typography.bodySmall + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, ) } IconButton(onClick = { onDelete(message) }) { diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml @@ -528,6 +528,8 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish <string name="contact_mailbox_base_uri">Mailbox Base URI</string> <string name="contact_petname">Nickname</string> <string name="contacts_title">Contacts</string> + <string name="mailbox_incoming_payment">Incoming payment</string> + <string name="mailbox_payment_request">Payment request</string> <!-- Settings -->