summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2022-08-17 15:40:16 -0300
committerTorsten Grote <t@grobox.de>2022-08-17 15:40:16 -0300
commitd1163e31e904ac59d0739169257a8e3fdc7986a7 (patch)
tree44dfc439444d0ed5e004147c79b3dcf6ff0b5efb /wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
parent326b1bdf62a687aa40d32994c14c792fcbf113fc (diff)
downloadtaler-android-d1163e31e904ac59d0739169257a8e3fdc7986a7.tar.gz
taler-android-d1163e31e904ac59d0739169257a8e3fdc7986a7.tar.bz2
taler-android-d1163e31e904ac59d0739169257a8e3fdc7986a7.zip
[wallet] Add ability to cancel/delete transactions
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt')
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt66
1 files changed, 45 insertions, 21 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
index a11f8ba..ff8d272 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
@@ -31,6 +31,8 @@ import net.taler.wallet.MainViewModel
import net.taler.wallet.R
import net.taler.wallet.cleanExchange
import net.taler.wallet.databinding.FragmentTransactionWithdrawalBinding
+import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer
+import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi
import net.taler.wallet.withdraw.createManualTransferRequired
class TransactionWithdrawalFragment : TransactionDetailFragment() {
@@ -54,33 +56,55 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() {
ui.effectiveAmountLabel.text = getString(R.string.withdraw_total)
ui.effectiveAmountView.text = t.amountEffective.toString()
- if (t.pending && t.withdrawalDetails is WithdrawalDetails.TalerBankIntegrationApi &&
- !t.confirmed && t.withdrawalDetails.bankConfirmationUrl != null
- ) {
- val i = Intent(ACTION_VIEW).apply {
- data = Uri.parse(t.withdrawalDetails.bankConfirmationUrl)
- }
- ui.confirmWithdrawalButton.setOnClickListener { startActivitySafe(i) }
- } else if (t.pending && !t.confirmed && t.withdrawalDetails is WithdrawalDetails.ManualTransfer) {
- ui.confirmWithdrawalButton.setText(R.string.withdraw_manual_ready_details_intro)
- ui.confirmWithdrawalButton.setOnClickListener {
- val status = createManualTransferRequired(
- amount = t.amountRaw,
- exchangeBaseUrl = t.exchangeBaseUrl,
- // TODO what if there's more than one or no URI?
- uriStr = t.withdrawalDetails.exchangePaytoUris[0],
- transactionId = t.transactionId,
- )
- withdrawManager.viewManualWithdrawal(status)
- findNavController().navigate(R.id.action_nav_transactions_detail_withdrawal_to_nav_exchange_manual_withdrawal_success)
- }
- } else ui.confirmWithdrawalButton.visibility = View.GONE
+ setupConfirmWithdrawalButton(t)
ui.chosenAmountLabel.text = getString(R.string.amount_chosen)
ui.chosenAmountView.text =
getString(R.string.amount_positive, t.amountRaw.toString())
val fee = t.amountRaw - t.amountEffective
ui.feeView.text = getString(R.string.amount_negative, fee.toString())
ui.exchangeView.text = cleanExchange(t.exchangeBaseUrl)
+ if (t.pending) {
+ ui.deleteButton.setIconResource(R.drawable.ic_cancel)
+ ui.deleteButton.setText(R.string.cancel)
+ }
+ ui.deleteButton.setOnClickListener {
+ onDeleteButtonClicked(t)
+ }
+ }
+
+ override val deleteDialogTitle: Int
+ get() = if (transaction?.pending == true) R.string.cancel else super.deleteDialogTitle
+ override val deleteDialogMessage: Int
+ get() = if (transaction?.pending == true) R.string.transactions_cancel_dialog_message
+ else super.deleteDialogMessage
+ override val deleteDialogButton: Int
+ get() = if (transaction?.pending == true) R.string.ok else super.deleteDialogButton
+
+ private fun setupConfirmWithdrawalButton(t: TransactionWithdrawal) {
+ if (t.pending && !t.confirmed) {
+ if (t.withdrawalDetails is TalerBankIntegrationApi &&
+ t.withdrawalDetails.bankConfirmationUrl != null
+ ) {
+ val i = Intent(ACTION_VIEW).apply {
+ data = Uri.parse(t.withdrawalDetails.bankConfirmationUrl)
+ }
+ ui.confirmWithdrawalButton.setOnClickListener { startActivitySafe(i) }
+ } else if (t.withdrawalDetails is ManualTransfer) {
+ ui.confirmWithdrawalButton.setText(R.string.withdraw_manual_ready_details_intro)
+ ui.confirmWithdrawalButton.setOnClickListener {
+ val status = createManualTransferRequired(
+ amount = t.amountRaw,
+ exchangeBaseUrl = t.exchangeBaseUrl,
+ // TODO what if there's more than one or no URI?
+ uriStr = t.withdrawalDetails.exchangePaytoUris[0],
+ transactionId = t.transactionId,
+ )
+ withdrawManager.viewManualWithdrawal(status)
+ findNavController().navigate(
+ R.id.action_nav_transactions_detail_withdrawal_to_nav_exchange_manual_withdrawal_success)
+ }
+ } else ui.confirmWithdrawalButton.visibility = View.GONE
+ } else ui.confirmWithdrawalButton.visibility = View.GONE
}
}