gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-android] 04/04: [wallet] adapt code to new TransactionWithd


From: gnunet
Subject: [taler-taler-android] 04/04: [wallet] adapt code to new TransactionWithdrawal API
Date: Fri, 17 Jul 2020 21:55:41 +0200

This is an automated email from the git hooks/post-receive script.

torsten-grote pushed a commit to branch master
in repository taler-android.

commit 64cd56ee8e336f9cff294e350235dfac4a2deb68
Author: Torsten Grote <t@grobox.de>
AuthorDate: Fri Jul 17 16:52:40 2020 -0300

    [wallet] adapt code to new TransactionWithdrawal API
---
 .../src/main/java/net/taler/wallet/MainActivity.kt |  3 +-
 .../transactions/TransactionDetailFragment.kt      |  5 +--
 .../net/taler/wallet/transactions/Transactions.kt  | 40 ++++++++++++++++++++--
 wallet/src/main/res/navigation/nav_graph.xml       |  7 ++--
 4 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt 
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index a048446..fdb8cf8 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -158,7 +158,8 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
             }
             url.toLowerCase(ROOT).startsWith("taler://withdraw/") -> {
                 Log.v(TAG, "navigating!")
-                nav.navigate(R.id.action_nav_main_to_promptWithdraw)
+                // there's more than one entry point, so use global action
+                nav.navigate(R.id.action_global_promptWithdraw)
                 model.withdrawManager.getWithdrawalInfo(url)
             }
             url.toLowerCase(ROOT).startsWith("taler://refund/") -> {
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 f78d98f..0142978 100644
--- 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt
@@ -41,6 +41,7 @@ import net.taler.common.toAbsoluteTime
 import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
 import net.taler.wallet.cleanExchange
+import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi
 
 class TransactionDetailFragment : Fragment() {
 
@@ -95,9 +96,9 @@ class TransactionDetailFragment : Fragment() {
     private fun bind(t: TransactionWithdrawal) {
         effectiveAmountLabel.text = getString(R.string.withdraw_total)
         effectiveAmountView.text = t.amountEffective.toString()
-        if (t.pending && !t.confirmed && t.bankConfirmationUrl != null) {
+        if (t.pending && t.withdrawalDetails is TalerBankIntegrationApi && 
!t.confirmed && t.withdrawalDetails.bankConfirmationUrl != null) {
             val i = Intent().apply {
-                data = Uri.parse(t.bankConfirmationUrl)
+                data = Uri.parse(t.withdrawalDetails.bankConfirmationUrl)
             }
             if (i.isSafe(requireContext())) {
                 confirmWithdrawalButton.setOnClickListener { startActivity(i) }
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt 
b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
index 27384d8..ccc40eb 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
@@ -33,6 +33,8 @@ import net.taler.common.ContractProduct
 import net.taler.common.Timestamp
 import net.taler.wallet.R
 import net.taler.wallet.cleanExchange
+import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer
+import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi
 
 @JsonTypeInfo(use = NAME, include = PROPERTY, property = "type")
 @JsonSubTypes(
@@ -80,8 +82,7 @@ class TransactionWithdrawal(
     timestamp: Timestamp,
     pending: Boolean,
     val exchangeBaseUrl: String,
-    val confirmed: Boolean,
-    val bankConfirmationUrl: String?,
+    val withdrawalDetails: WithdrawalDetails,
     error: TransactionError? = null,
     amountRaw: Amount,
     amountEffective: Amount
@@ -91,6 +92,41 @@ class TransactionWithdrawal(
     override val amountType = AmountType.Positive
     override fun getTitle(context: Context) = cleanExchange(exchangeBaseUrl)
     override val generalTitleRes = R.string.withdraw_title
+    val confirmed: Boolean =
+        withdrawalDetails is TalerBankIntegrationApi && 
withdrawalDetails.confirmed
+}
+
+@JsonTypeInfo(use = NAME, include = PROPERTY, property = "type")
+@JsonSubTypes(
+    Type(value = TalerBankIntegrationApi::class, name = 
"taler-bank-integration-api"),
+    Type(value = ManualTransfer::class, name = "manual-transfer")
+)
+sealed class WithdrawalDetails {
+    @JsonTypeName("manual-transfer")
+    class ManualTransfer(
+        /**
+         * Payto URIs that the exchange supports.
+         *
+         * Already contains the amount and message.
+         */
+        val exchangePaytoUris: List<String>
+    ) : WithdrawalDetails()
+
+    @JsonTypeName("taler-bank-integration-api")
+    class TalerBankIntegrationApi(
+        /**
+         * Set to true if the bank has confirmed the withdrawal, false if not.
+         * An unconfirmed withdrawal usually requires user-input
+         * and should be highlighted in the UI.
+         * See also bankConfirmationUrl below.
+         */
+        val confirmed: Boolean,
+
+        /**
+         * If the withdrawal is unconfirmed, this can include a URL for 
user-initiated confirmation.
+         */
+        val bankConfirmationUrl: String?
+    ) : WithdrawalDetails()
 }
 
 @JsonTypeName("payment")
diff --git a/wallet/src/main/res/navigation/nav_graph.xml 
b/wallet/src/main/res/navigation/nav_graph.xml
index 1242857..c9a98f0 100644
--- a/wallet/src/main/res/navigation/nav_graph.xml
+++ b/wallet/src/main/res/navigation/nav_graph.xml
@@ -28,9 +28,6 @@
         <action
             android:id="@+id/action_nav_main_to_promptPayment"
             app:destination="@id/promptPayment" />
-        <action
-            android:id="@+id/action_nav_main_to_promptWithdraw"
-            app:destination="@id/promptWithdraw" />
         <action
             android:id="@+id/action_nav_main_to_nav_transactions"
             app:destination="@id/nav_transactions" />
@@ -164,6 +161,10 @@
         android:label="@string/nav_error"
         tools:layout="@layout/fragment_error" />
 
+    <action
+        android:id="@+id/action_global_promptWithdraw"
+        app:destination="@id/promptWithdraw" />
+
     <action
         android:id="@+id/action_global_promptPayment"
         app:destination="@id/promptPayment" />

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]