summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt')
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt72
1 files changed, 55 insertions, 17 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
index 678bed2..1a709b0 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
@@ -20,13 +20,13 @@ import android.os.Bundle
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
-import androidx.annotation.StringRes
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
+import net.taler.wallet.transactions.TransactionAction.*
abstract class TransactionDetailFragment : Fragment() {
@@ -63,27 +63,50 @@ abstract class TransactionDetailFragment : Fragment() {
}
}
- @StringRes
- protected open val deleteDialogTitle = R.string.transactions_delete
+ private fun dialogTitle(t: TransactionAction): Int? = when (t) {
+ Delete -> R.string.transactions_delete_dialog_title
+ Abort -> R.string.transactions_abort_dialog_title
+ else -> null
+ }
- @StringRes
- protected open val deleteDialogMessage = R.string.transactions_delete_dialog_message
+ private fun dialogMessage(t: TransactionAction): Int? = when (t) {
+ Delete -> R.string.transactions_delete_dialog_message
+ Abort -> R.string.transactions_abort_dialog_message
+ else -> null
+ }
- @StringRes
- protected open val deleteDialogButton = R.string.transactions_delete
+ private fun dialogButton(t: TransactionAction): Int? = when (t) {
+ Delete -> R.string.transactions_delete
+ Abort -> R.string.transactions_abort
+ else -> null
+ }
- protected fun onDeleteButtonClicked(t: Transaction) {
- MaterialAlertDialogBuilder(requireContext(), R.style.MaterialAlertDialog_Material3)
- .setTitle(deleteDialogTitle)
- .setMessage(deleteDialogMessage)
- .setNeutralButton(R.string.cancel) { dialog, _ ->
- dialog.cancel()
+ protected fun onTransitionButton(t: Transaction, tt: TransactionAction) {
+ when (tt) {
+ Delete, Abort -> {
+ MaterialAlertDialogBuilder(requireContext(), R.style.MaterialAlertDialog_Material3)
+ .setTitle(dialogTitle(tt)!!)
+ .setMessage(dialogMessage(tt)!!)
+ .setNeutralButton(R.string.cancel) { dialog, _ ->
+ dialog.cancel()
+ }
+ .setNegativeButton(dialogButton(tt)!!) { dialog, _ ->
+ when (tt) {
+ Delete -> deleteTransaction(t)
+ Abort -> abortTransaction(t)
+ else -> {}
+ }
+ dialog.dismiss()
+ }
+ .show()
}
- .setNegativeButton(deleteDialogButton) { dialog, _ ->
- deleteTransaction(t)
- dialog.dismiss()
+ else -> when (tt) {
+ Retry -> retryTransaction(t)
+ Suspend -> suspendTransaction(t)
+ Resume -> resumeTransaction(t)
+ else -> {}
}
- .show()
+ }
}
private fun deleteTransaction(t: Transaction) {
@@ -91,4 +114,19 @@ abstract class TransactionDetailFragment : Fragment() {
findNavController().popBackStack()
}
+ private fun retryTransaction(t: Transaction) {
+ transactionManager.retryTransaction(t.transactionId)
+ }
+
+ private fun abortTransaction(t: Transaction) {
+ transactionManager.abortTransaction(t.transactionId)
+ }
+
+ private fun suspendTransaction(t: Transaction) {
+ transactionManager.suspendTransaction(t.transactionId)
+ }
+
+ private fun resumeTransaction(t: Transaction) {
+ transactionManager.resumeTransaction(t.transactionId)
+ }
}