diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt | 64 |
1 files changed, 44 insertions, 20 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt b/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt index aa75c56..817dfac 100644 --- a/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt +++ b/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt @@ -21,9 +21,9 @@ 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.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -32,16 +32,31 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import net.taler.common.Amount +import net.taler.common.CurrencySpecification import net.taler.common.Timestamp import net.taler.common.toAbsoluteTime import net.taler.wallet.R +import net.taler.wallet.backend.TalerErrorCode.EXCHANGE_GENERIC_KYC_REQUIRED +import net.taler.wallet.backend.TalerErrorInfo import net.taler.wallet.transactions.AmountType -import net.taler.wallet.transactions.DeleteTransactionComposable +import net.taler.wallet.transactions.ErrorTransactionButton +import net.taler.wallet.transactions.TransactionAction +import net.taler.wallet.transactions.TransactionAction.Abort +import net.taler.wallet.transactions.TransactionAction.Retry +import net.taler.wallet.transactions.TransactionAction.Suspend import net.taler.wallet.transactions.TransactionAmountComposable import net.taler.wallet.transactions.TransactionDeposit +import net.taler.wallet.transactions.TransactionMajorState.Pending +import net.taler.wallet.transactions.TransactionState +import net.taler.wallet.transactions.TransitionsComposable @Composable -fun TransactionDepositComposable(t: TransactionDeposit, onDelete: () -> Unit) { +fun TransactionDepositComposable( + t: TransactionDeposit, + devMode: Boolean, + spec: CurrencySpecification?, + onTransition: (t: TransactionAction) -> Unit, +) { val scrollState = rememberScrollState() Column( modifier = Modifier @@ -53,27 +68,34 @@ fun TransactionDepositComposable(t: TransactionDeposit, onDelete: () -> Unit) { Text( modifier = Modifier.padding(16.dp), text = t.timestamp.ms.toAbsoluteTime(context).toString(), - style = MaterialTheme.typography.body1, - ) - TransactionAmountComposable( - label = stringResource(id = R.string.transaction_paid), - amount = t.amountEffective, - amountType = AmountType.Negative, + style = MaterialTheme.typography.bodyLarge, ) + TransactionAmountComposable( - label = stringResource(id = R.string.transaction_order_total), - amount = t.amountRaw, + label = stringResource(id = R.string.amount_chosen), + amount = t.amountRaw.withSpec(spec), amountType = AmountType.Neutral, ) + val fee = t.amountEffective - t.amountRaw if (!fee.isZero()) { TransactionAmountComposable( label = stringResource(id = R.string.withdraw_fees), - amount = fee, + amount = fee.withSpec(spec), amountType = AmountType.Negative, ) } - DeleteTransactionComposable(onDelete) + + TransactionAmountComposable( + label = stringResource(id = R.string.amount_sent), + amount = t.amountEffective.withSpec(spec), + amountType = AmountType.Negative, + ) + + TransitionsComposable(t, devMode, onTransition) + if (devMode && t.error != null) { + ErrorTransactionButton(error = t.error) + } } } @@ -82,14 +104,16 @@ fun TransactionDepositComposable(t: TransactionDeposit, onDelete: () -> Unit) { fun TransactionDepositComposablePreview() { val t = TransactionDeposit( transactionId = "transactionId", - timestamp = Timestamp(System.currentTimeMillis() - 360 * 60 * 1000), - pending = true, + timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60 * 1000), + txState = TransactionState(Pending), + txActions = listOf(Retry, Suspend, Abort), depositGroupId = "fooBar", - amountRaw = Amount.fromDouble("TESTKUDOS", 42.1337), - amountEffective = Amount.fromDouble("TESTKUDOS", 42.23), + amountRaw = Amount.fromString("TESTKUDOS", "42.1337"), + amountEffective = Amount.fromString("TESTKUDOS", "42.23"), targetPaytoUri = "https://exchange.example.org/peer/pull/credit", + error = TalerErrorInfo(code = EXCHANGE_GENERIC_KYC_REQUIRED), ) Surface { - TransactionDepositComposable(t) {} + TransactionDepositComposable(t, true, null) {} } } |