diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt index b03eb39..27809a7 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt @@ -25,10 +25,10 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -37,10 +37,11 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.colorResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.google.android.material.composethemeadapter.MdcTheme import net.taler.common.Amount +import net.taler.common.CurrencySpecification import net.taler.common.toAbsoluteTime import net.taler.wallet.R +import net.taler.wallet.compose.TalerSurface import net.taler.wallet.peer.TransactionPeerPullCreditComposable import net.taler.wallet.peer.TransactionPeerPullDebitComposable import net.taler.wallet.peer.TransactionPeerPushCreditComposable @@ -54,12 +55,12 @@ class TransactionPeerFragment : TransactionDetailFragment() { savedInstanceState: Bundle?, ): View = ComposeView(requireContext()).apply { setContent { - MdcTheme { - Surface { - val t = transaction ?: error("No transaction") - TransactionPeerComposable(t) { - onDeleteButtonClicked(t) - } + TalerSurface { + val t = transactionManager.selectedTransaction.observeAsState(null).value + if (t != null) TransactionPeerComposable(t, devMode, + balanceManager.getSpecForCurrency(t.amountRaw.currency), + ) { + onTransitionButtonClicked(t, it) } } } @@ -67,7 +68,12 @@ class TransactionPeerFragment : TransactionDetailFragment() { } @Composable -fun TransactionPeerComposable(t: Transaction, onDelete: () -> Unit) { +fun TransactionPeerComposable( + t: Transaction, + devMode: Boolean, + spec: CurrencySpecification?, + onTransition: (t: TransactionAction) -> Unit, +) { val scrollState = rememberScrollState() Column( modifier = Modifier @@ -79,16 +85,19 @@ fun TransactionPeerComposable(t: Transaction, onDelete: () -> Unit) { Text( modifier = Modifier.padding(16.dp), text = t.timestamp.ms.toAbsoluteTime(context).toString(), - style = MaterialTheme.typography.body1, + style = MaterialTheme.typography.bodyLarge, ) when (t) { - is TransactionPeerPullCredit -> TransactionPeerPullCreditComposable(t) - is TransactionPeerPushCredit -> TransactionPeerPushCreditComposable(t) - is TransactionPeerPullDebit -> TransactionPeerPullDebitComposable(t) - is TransactionPeerPushDebit -> TransactionPeerPushDebitComposable(t) + is TransactionPeerPullCredit -> TransactionPeerPullCreditComposable(t, spec) + is TransactionPeerPushCredit -> TransactionPeerPushCreditComposable(t, spec) + is TransactionPeerPullDebit -> TransactionPeerPullDebitComposable(t, spec) + is TransactionPeerPushDebit -> TransactionPeerPushDebitComposable(t, spec) else -> error("unexpected transaction: ${t::class.simpleName}") } - DeleteTransactionComposable(onDelete) + TransitionsComposable(t, devMode, onTransition) + if (devMode && t.error != null) { + ErrorTransactionButton(error = t.error!!) + } } } @@ -97,15 +106,15 @@ fun TransactionAmountComposable(label: String, amount: Amount, amountType: Amoun Text( modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp), text = label, - style = MaterialTheme.typography.body2, + style = MaterialTheme.typography.bodyMedium, ) Text( modifier = Modifier.padding(top = 8.dp, start = 16.dp, end = 16.dp, bottom = 16.dp), - text = if (amountType == AmountType.Negative) "-$amount" else amount.toString(), + text = amount.toString(negative = amountType == AmountType.Negative), fontSize = 24.sp, color = when (amountType) { AmountType.Positive -> colorResource(R.color.green) - AmountType.Negative -> colorResource(R.color.red) + AmountType.Negative -> MaterialTheme.colorScheme.error AmountType.Neutral -> Color.Unspecified }, ) @@ -116,7 +125,7 @@ fun TransactionInfoComposable(label: String, info: String) { Text( modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp), text = label, - style = MaterialTheme.typography.body2, + style = MaterialTheme.typography.bodyMedium, ) Text( modifier = Modifier.padding(top = 8.dp, start = 16.dp, end = 16.dp, bottom = 16.dp), |