From d1163e31e904ac59d0739169257a8e3fdc7986a7 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 17 Aug 2022 15:40:16 -0300 Subject: [wallet] Add ability to cancel/delete transactions --- .../transactions/TransactionWithdrawalFragment.kt | 66 +++++++++++++++------- 1 file changed, 45 insertions(+), 21 deletions(-) (limited to 'wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt') 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 } } -- cgit v1.2.3