summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
diff options
context:
space:
mode:
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.kt73
1 files changed, 29 insertions, 44 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 749ec30..27809a7 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
@@ -21,33 +21,27 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Row
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.Button
-import androidx.compose.material.ButtonDefaults
-import androidx.compose.material.Icon
-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.Alignment.Companion.CenterVertically
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.colorResource
-import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.res.stringResource
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
@@ -61,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)
}
}
}
@@ -74,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
@@ -86,32 +85,18 @@ 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}")
}
- Button(
- modifier = Modifier.padding(16.dp),
- colors = ButtonDefaults.buttonColors(backgroundColor = colorResource(R.color.red)),
- onClick = onDelete,
- ) {
- Row(verticalAlignment = CenterVertically) {
- Icon(
- painter = painterResource(id = R.drawable.ic_delete),
- contentDescription = null,
- tint = Color.White,
- )
- Text(
- modifier = Modifier.padding(start = 8.dp),
- text = stringResource(R.string.transactions_delete),
- color = Color.White,
- )
- }
+ TransitionsComposable(t, devMode, onTransition)
+ if (devMode && t.error != null) {
+ ErrorTransactionButton(error = t.error!!)
}
}
}
@@ -121,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
},
)
@@ -140,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),