gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] 06/08: [wallet] rename peer ops after core 0.9.2 u


From: gnunet
Subject: [taler-taler-android] 06/08: [wallet] rename peer ops after core 0.9.2 update
Date: Wed, 22 Feb 2023 12:33:58 +0100

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 045dafa221abcf54328ca4764eac847195fff0d7
Author: Torsten Grote <t@grobox.de>
AuthorDate: Tue Feb 21 11:09:28 2023 -0300

    [wallet] rename peer ops after core 0.9.2 update
    
    and show fees for incoming peer payments
---
 .../src/main/java/net/taler/wallet/MainActivity.kt |  4 +--
 .../net/taler/wallet/peer/IncomingComposable.kt    | 39 ++++++++++++--------
 .../wallet/peer/IncomingPullPaymentFragment.kt     |  2 +-
 .../wallet/peer/IncomingPushPaymentFragment.kt     |  2 +-
 .../java/net/taler/wallet/peer/IncomingState.kt    | 15 ++++----
 .../net/taler/wallet/peer/OutgoingPullFragment.kt  |  2 +-
 .../net/taler/wallet/peer/OutgoingPushFragment.kt  |  2 +-
 .../java/net/taler/wallet/peer/OutgoingState.kt    |  2 +-
 .../main/java/net/taler/wallet/peer/PeerManager.kt | 42 +++++++++++-----------
 9 files changed, 63 insertions(+), 47 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt 
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index fcc9dee..7a40b4b 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -279,11 +279,11 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
                 }
                 action.startsWith("pay-pull/", ignoreCase = true) -> {
                     nav.navigate(R.id.action_global_prompt_pull_payment)
-                    model.peerManager.checkPeerPullPayment(u2)
+                    model.peerManager.preparePeerPullDebit(u2)
                 }
                 action.startsWith("pay-push/", ignoreCase = true) -> {
                     nav.navigate(R.id.action_global_prompt_push_payment)
-                    model.peerManager.checkPeerPushPayment(u2)
+                    model.peerManager.preparePeerPushCredit(u2)
                 }
                 else -> {
                     showError(R.string.error_unsupported_uri, "From: 
$from\nURI: $u2")
diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt 
b/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
index 98f1edd..11867f3 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
@@ -86,12 +86,12 @@ fun IncomingComposable(
         )
         when (val s = state.value) {
             IncomingChecking -> PeerPullCheckingComposable()
-            is IncomingTerms -> PeerPullTermsComposable(s, onAccept, data)
             is IncomingAccepting -> PeerPullTermsComposable(s, onAccept, data)
+            is IncomingTerms -> PeerPullTermsComposable(s, onAccept, data)
+            is IncomingError -> PeerPullErrorComposable(s)
             IncomingAccepted -> {
                 // we navigate away, don't show anything
             }
-            is IncomingError -> PeerPullErrorComposable(s)
         }
     }
 }
@@ -121,7 +121,9 @@ fun ColumnScope.PeerPullTermsComposable(
     Spacer(modifier = Modifier.weight(1f))
     Card(modifier = Modifier.fillMaxWidth()) {
         Column(
-            modifier = Modifier.padding(8.dp)
+            modifier = Modifier
+                .padding(8.dp)
+                .fillMaxWidth()
         ) {
             Row(
                 modifier = Modifier.align(End),
@@ -137,15 +139,18 @@ fun ColumnScope.PeerPullTermsComposable(
                     fontWeight = FontWeight.Bold,
                 )
             }
-            val fee =
-                Amount.zero(terms.amount.currency) // terms.amount - 
terms.contractTerms.amount
-            if (!fee.isZero()) {
-                Text(
-                    modifier = Modifier.align(End),
-                    text = stringResource(id = R.string.payment_fee, fee),
-                    style = MaterialTheme.typography.bodyLarge,
-                )
+            // this gets used for credit and debit, so fee calculation differs
+            val fee = if (terms.amountRaw > terms.amountEffective) {
+                terms.amountRaw - terms.amountEffective
+            } else {
+                terms.amountEffective - terms.amountRaw
             }
+            if (!fee.isZero()) Text(
+                modifier = Modifier.align(End),
+                text = stringResource(id = R.string.amount_negative, fee),
+                style = MaterialTheme.typography.bodyLarge,
+                color = MaterialTheme.colorScheme.error,
+            )
             if (terms is IncomingAccepting) {
                 CircularProgressIndicator(
                     modifier = Modifier
@@ -199,7 +204,8 @@ fun PeerPullCheckingPreview() {
 fun PeerPullTermsPreview() {
     Surface {
         val terms = IncomingTerms(
-            amount = Amount.fromDouble("TESTKUDOS", 42.23),
+            amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
+            amountEffective = Amount.fromDouble("TESTKUDOS", 42.423),
             contractTerms = PeerContractTerms(
                 summary = "This is a long test summary that can be more than 
one line long for sure",
                 amount = Amount.fromDouble("TESTKUDOS", 23.42),
@@ -218,7 +224,8 @@ fun PeerPullTermsPreview() {
 fun PeerPullAcceptingPreview() {
     Surface {
         val terms = IncomingTerms(
-            amount = Amount.fromDouble("TESTKUDOS", 42.23),
+            amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
+            amountEffective = Amount.fromDouble("TESTKUDOS", 42.123),
             contractTerms = PeerContractTerms(
                 summary = "This is a long test summary that can be more than 
one line long for sure",
                 amount = Amount.fromDouble("TESTKUDOS", 23.42),
@@ -237,7 +244,11 @@ fun PeerPullAcceptingPreview() {
 fun PeerPullPayErrorPreview() {
     Surface {
         @SuppressLint("UnrememberedMutableState")
-        val s = 
mutableStateOf(IncomingError(TalerErrorInfo(WALLET_WITHDRAWAL_KYC_REQUIRED, 
"hint", "msg")))
+        val s = mutableStateOf(
+            IncomingError(
+                info = TalerErrorInfo(WALLET_WITHDRAWAL_KYC_REQUIRED, "hint", 
"msg"),
+            )
+        )
         IncomingComposable(s, incomingPush) {}
     }
 }
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt 
b/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
index 6a74c30..3aa0963 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
@@ -51,7 +51,7 @@ class IncomingPullPaymentFragment : Fragment() {
                 TalerSurface {
                     val state = 
peerManager.incomingPullState.collectAsStateLifecycleAware()
                     IncomingComposable(state, incomingPull) { terms ->
-                        peerManager.acceptPeerPullPayment(terms)
+                        peerManager.confirmPeerPullDebit(terms)
                     }
                 }
             }
diff --git 
a/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt 
b/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
index 56734e3..736ccd5 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
@@ -51,7 +51,7 @@ class IncomingPushPaymentFragment : Fragment() {
                 TalerSurface {
                     val state = 
peerManager.incomingPushState.collectAsStateLifecycleAware()
                     IncomingComposable(state, incomingPush) { terms ->
-                        peerManager.acceptPeerPushPayment(terms)
+                        peerManager.confirmPeerPushCredit(terms)
                     }
                 }
             }
diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingState.kt 
b/wallet/src/main/java/net/taler/wallet/peer/IncomingState.kt
index 7ca38c4..c6c78f3 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingState.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingState.kt
@@ -23,13 +23,14 @@ import net.taler.wallet.backend.TalerErrorInfo
 sealed class IncomingState
 object IncomingChecking : IncomingState()
 open class IncomingTerms(
-    val amount: Amount,
+    val amountRaw: Amount,
+    val amountEffective: Amount,
     val contractTerms: PeerContractTerms,
     val id: String,
 ) : IncomingState()
 
 class IncomingAccepting(s: IncomingTerms) :
-    IncomingTerms(s.amount, s.contractTerms, s.id)
+    IncomingTerms(s.amountRaw, s.amountEffective, s.contractTerms, s.id)
 
 object IncomingAccepted : IncomingState()
 data class IncomingError(
@@ -43,15 +44,17 @@ data class PeerContractTerms(
 )
 
 @Serializable
-data class CheckPeerPullPaymentResponse(
-    val amount: Amount,
+data class PreparePeerPullDebitResponse(
     val contractTerms: PeerContractTerms,
+    val amountRaw: Amount,
+    val amountEffective: Amount,
     val peerPullPaymentIncomingId: String,
 )
 
 @Serializable
-data class CheckPeerPushPaymentResponse(
-    val amount: Amount,
+data class PreparePeerPushCreditResponse(
     val contractTerms: PeerContractTerms,
+    val amountRaw: Amount,
+    val amountEffective: Amount,
     val peerPushPaymentIncomingId: String,
 )
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt 
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
index b9634d5..9f579e2 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
@@ -78,6 +78,6 @@ class OutgoingPullFragment : Fragment() {
     }
 
     private fun onCreateInvoice(amount: Amount, summary: String, exchange: 
ExchangeItem) {
-        peerManager.initiatePullPayment(amount, summary, exchange)
+        peerManager.initiatePeerPullCredit(amount, summary, exchange)
     }
 }
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt 
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
index b110876..b7a510c 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
@@ -72,6 +72,6 @@ class OutgoingPushFragment : Fragment() {
     }
 
     private fun onSend(amount: Amount, summary: String) {
-        peerManager.initiatePeerPushPayment(amount, summary)
+        peerManager.initiatePeerPushDebit(amount, summary)
     }
 }
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingState.kt 
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingState.kt
index 0e01056..e40ddb8 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingState.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingState.kt
@@ -41,7 +41,7 @@ data class InitiatePeerPullPaymentResponse(
 )
 
 @Serializable
-data class InitiatePeerPushPaymentResponse(
+data class InitiatePeerPullCreditResponse(
     val exchangeBaseUrl: String,
     val talerUri: String,
 )
diff --git a/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt 
b/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt
index 270ca04..5b38e2f 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt
@@ -52,11 +52,11 @@ class PeerManager(
     private val _incomingPushState = 
MutableStateFlow<IncomingState>(IncomingChecking)
     val incomingPushState: StateFlow<IncomingState> = _incomingPushState
 
-    fun initiatePullPayment(amount: Amount, summary: String, exchange: 
ExchangeItem) {
+    fun initiatePeerPullCredit(amount: Amount, summary: String, exchange: 
ExchangeItem) {
         _outgoingPullState.value = OutgoingCreating
         scope.launch(Dispatchers.IO) {
             val expiry = Timestamp.fromMillis(System.currentTimeMillis() + 
DAYS.toMillis(3))
-            api.request("initiatePeerPullPayment", 
InitiatePeerPullPaymentResponse.serializer()) {
+            api.request("initiatePeerPullCredit", 
InitiatePeerPullPaymentResponse.serializer()) {
                 put("exchangeBaseUrl", exchange.exchangeBaseUrl)
                 put("partialContractTerms", JSONObject().apply {
                     put("amount", amount.toJSONString())
@@ -67,7 +67,7 @@ class PeerManager(
                 val qrCode = QrCodeManager.makeQrCode(it.talerUri)
                 _outgoingPullState.value = OutgoingResponse(it.talerUri, 
qrCode)
             }.onError { error ->
-                Log.e(TAG, "got initiatePeerPullPayment error result $error")
+                Log.e(TAG, "got initiatePeerPullCredit error result $error")
                 _outgoingPullState.value = OutgoingError(error)
             }
         }
@@ -77,11 +77,11 @@ class PeerManager(
         _outgoingPullState.value = OutgoingIntro
     }
 
-    fun initiatePeerPushPayment(amount: Amount, summary: String) {
+    fun initiatePeerPushDebit(amount: Amount, summary: String) {
         _outgoingPushState.value = OutgoingCreating
         scope.launch(Dispatchers.IO) {
             val expiry = Timestamp.fromMillis(System.currentTimeMillis() + 
DAYS.toMillis(3))
-            api.request("initiatePeerPushPayment", 
InitiatePeerPushPaymentResponse.serializer()) {
+            api.request("initiatePeerPushDebit", 
InitiatePeerPullCreditResponse.serializer()) {
                 put("amount", amount.toJSONString())
                 put("partialContractTerms", JSONObject().apply {
                     put("amount", amount.toJSONString())
@@ -92,7 +92,7 @@ class PeerManager(
                 val qrCode = QrCodeManager.makeQrCode(response.talerUri)
                 _outgoingPushState.value = OutgoingResponse(response.talerUri, 
qrCode)
             }.onError { error ->
-                Log.e(TAG, "got initiatePeerPushPayment error result $error")
+                Log.e(TAG, "got initiatePeerPushDebit error result $error")
                 _outgoingPushState.value = OutgoingError(error)
             }
         }
@@ -102,65 +102,67 @@ class PeerManager(
         _outgoingPushState.value = OutgoingIntro
     }
 
-    fun checkPeerPullPayment(talerUri: String) {
+    fun preparePeerPullDebit(talerUri: String) {
         _incomingPullState.value = IncomingChecking
         scope.launch(Dispatchers.IO) {
-            api.request("checkPeerPullPayment", 
CheckPeerPullPaymentResponse.serializer()) {
+            api.request("preparePeerPullDebit", 
PreparePeerPullDebitResponse.serializer()) {
                 put("talerUri", talerUri)
             }.onSuccess { response ->
                 _incomingPullState.value = IncomingTerms(
-                    amount = response.amount,
+                    amountRaw = response.amountRaw,
+                    amountEffective = response.amountEffective,
                     contractTerms = response.contractTerms,
                     id = response.peerPullPaymentIncomingId,
                 )
             }.onError { error ->
-                Log.e(TAG, "got checkPeerPushPayment error result $error")
+                Log.e(TAG, "got preparePeerPullDebit error result $error")
                 _incomingPullState.value = IncomingError(error)
             }
         }
     }
 
-    fun acceptPeerPullPayment(terms: IncomingTerms) {
+    fun confirmPeerPullDebit(terms: IncomingTerms) {
         _incomingPullState.value = IncomingAccepting(terms)
         scope.launch(Dispatchers.IO) {
-            api.request<Unit>("acceptPeerPullPayment") {
+            api.request<Unit>("confirmPeerPullDebit") {
                 put("peerPullPaymentIncomingId", terms.id)
             }.onSuccess {
                 _incomingPullState.value = IncomingAccepted
             }.onError { error ->
-                Log.e(TAG, "got checkPeerPushPayment error result $error")
+                Log.e(TAG, "got confirmPeerPullDebit error result $error")
                 _incomingPullState.value = IncomingError(error)
             }
         }
     }
 
-    fun checkPeerPushPayment(talerUri: String) {
+    fun preparePeerPushCredit(talerUri: String) {
         _incomingPushState.value = IncomingChecking
         scope.launch(Dispatchers.IO) {
-            api.request("checkPeerPushPayment", 
CheckPeerPushPaymentResponse.serializer()) {
+            api.request("preparePeerPushCredit", 
PreparePeerPushCreditResponse.serializer()) {
                 put("talerUri", talerUri)
             }.onSuccess { response ->
                 _incomingPushState.value = IncomingTerms(
-                    amount = response.amount,
+                    amountRaw = response.amountRaw,
+                    amountEffective = response.amountEffective,
                     contractTerms = response.contractTerms,
                     id = response.peerPushPaymentIncomingId,
                 )
             }.onError { error ->
-                Log.e(TAG, "got checkPeerPushPayment error result $error")
+                Log.e(TAG, "got preparePeerPushCredit error result $error")
                 _incomingPushState.value = IncomingError(error)
             }
         }
     }
 
-    fun acceptPeerPushPayment(terms: IncomingTerms) {
+    fun confirmPeerPushCredit(terms: IncomingTerms) {
         _incomingPushState.value = IncomingAccepting(terms)
         scope.launch(Dispatchers.IO) {
-            api.request<Unit>("acceptPeerPushPayment") {
+            api.request<Unit>("confirmPeerPushCredit") {
                 put("peerPushPaymentIncomingId", terms.id)
             }.onSuccess {
                 _incomingPushState.value = IncomingAccepted
             }.onError { error ->
-                Log.e(TAG, "got checkPeerPushPayment error result $error")
+                Log.e(TAG, "got confirmPeerPushCredit error result $error")
                 _incomingPushState.value = IncomingError(error)
             }
         }

-- 
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]