gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] branch master updated (4c70379 -> 64ab391)


From: gnunet
Subject: [taler-taler-android] branch master updated (4c70379 -> 64ab391)
Date: Fri, 02 Feb 2024 20:23:39 +0100

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

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

    from 4c70379  [wallet] use expected DB file extension
     new ae3071d  [wallet] Replace deprecated `reset' request with new `clearDb'
     new 636b11b  [wallet] Bump qtart to v0.9.4-dev.9
     new f004af7  [wallet] Redirect to details view after payment, deprecate 
proposalId, and remove pending op actions
     new 535d9dc  [wallet] Delete now unused AlreadyPaidFragment
     new 4390cf0  [wallet] Load wallet-core version from wallet-core itself
     new 64ab391  [wallet] Fix empty error hints

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 wallet/build.gradle                                |  2 +-
 .../main/java/net/taler/wallet/MainViewModel.kt    |  8 ++-
 .../java/net/taler/wallet/backend/InitResponse.kt  |  7 ++-
 .../net/taler/wallet/backend/WalletResponse.kt     | 15 ++---
 .../taler/wallet/payment/AlreadyPaidFragment.kt    | 49 ---------------
 .../taler/wallet/payment/PayTemplateComposable.kt  |  2 +-
 .../net/taler/wallet/payment/PaymentManager.kt     | 71 +++++++++++-----------
 .../net/taler/wallet/payment/PaymentResponses.kt   | 19 +++---
 .../taler/wallet/payment/PromptPaymentFragment.kt  | 35 +++++++++--
 .../wallet/pending/PendingOperationsFragment.kt    | 35 -----------
 .../net/taler/wallet/settings/SettingsFragment.kt  |  3 +-
 .../src/main/res/layout/fragment_already_paid.xml  | 52 ----------------
 .../res/layout/list_item_pending_operation.xml     |  6 --
 wallet/src/main/res/navigation/nav_graph.xml       | 10 +--
 14 files changed, 101 insertions(+), 213 deletions(-)
 delete mode 100644 
wallet/src/main/java/net/taler/wallet/payment/AlreadyPaidFragment.kt
 delete mode 100644 wallet/src/main/res/layout/fragment_already_paid.xml

diff --git a/wallet/build.gradle b/wallet/build.gradle
index 0af7256..c297e40 100644
--- a/wallet/build.gradle
+++ b/wallet/build.gradle
@@ -19,7 +19,7 @@ plugins {
     id "kotlinx-serialization"
 }
 
-def qtart_version = "0.9.4-dev.3"
+def qtart_version = "0.9.4-dev.9"
 
 static def versionCodeEpoch() {
     return (new Date().getTime() / 1000).toInteger()
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt 
b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index 4614474..263df49 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -66,6 +66,10 @@ class MainViewModel(
 
     val devMode = MutableLiveData(BuildConfig.DEBUG)
     val showProgressBar = MutableLiveData<Boolean>()
+    var walletVersion: String? = null
+        private set
+    var walletVersionHash: String? = null
+        private set
     var exchangeVersion: String? = null
         private set
     var merchantVersion: String? = null
@@ -94,6 +98,8 @@ class MainViewModel(
     val scanCodeEvent: LiveData<Event<Boolean>> = mScanCodeEvent
 
     override fun onVersionReceived(versionInfo: WalletCoreVersion) {
+        walletVersion = versionInfo.implementationSemver
+        walletVersionHash = versionInfo.implementationGitHash
         exchangeVersion = versionInfo.exchange
         merchantVersion = versionInfo.merchant
     }
@@ -170,7 +176,7 @@ class MainViewModel(
     @UiThread
     fun dangerouslyReset() {
         viewModelScope.launch {
-            api.sendRequest("reset")
+            api.sendRequest("clearDb")
         }
         withdrawManager.testWithdrawalStatus.value = null
         mBalances.value = emptyList()
diff --git a/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt 
b/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt
index 076af87..e9f7fcd 100644
--- a/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt
+++ b/wallet/src/main/java/net/taler/wallet/backend/InitResponse.kt
@@ -29,10 +29,13 @@ fun interface VersionReceiver {
 
 @Serializable
 data class WalletCoreVersion(
-    val hash: String? = null,
+    val implementationSemver: String,
+    val implementationGitHash: String,
     val version: String,
     val exchange: String,
     val merchant: String,
-    val bank: String,
+    val bankIntegrationApiRange: String,
+    val bankConversionApiRange: String,
+    val corebankApiRange: String,
     val devMode: Boolean,
 )
diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt 
b/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
index 8ef135f..3946457 100644
--- a/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
+++ b/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
@@ -77,13 +77,14 @@ data class TalerErrorInfo(
         get() {
             return StringBuilder().apply {
                 // If there's a hint in errorResponse, use it.
-                extra["errorResponse"]
-                    ?.jsonObject
-                    ?.get("hint")
-                    ?.let {
-                        append(it.jsonPrimitive.content)
-                    } ?: {
-                    // Otherwise, use the standard ones.
+                if (extra.containsKey("errorResponse")) {
+                    val errorResponse = extra["errorResponse"]!!.jsonObject
+                    if (errorResponse.containsKey("hint")) {
+                        val hint = 
errorResponse["hint"]!!.jsonPrimitive.content
+                        append(hint)
+                    }
+                } else {
+                    // Otherwise, use the standard ones
                     hint?.let { append(it) }
                     message?.let { append(" ").append(it) }
                 }
diff --git 
a/wallet/src/main/java/net/taler/wallet/payment/AlreadyPaidFragment.kt 
b/wallet/src/main/java/net/taler/wallet/payment/AlreadyPaidFragment.kt
deleted file mode 100644
index df2b2b8..0000000
--- a/wallet/src/main/java/net/taler/wallet/payment/AlreadyPaidFragment.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * This file is part of GNU Taler
- * (C) 2020 Taler Systems S.A.
- *
- * GNU Taler is free software; you can redistribute it and/or modify it under 
the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 3, or (at your option) any later version.
- *
- * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
- * A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
- */
-
-package net.taler.wallet.payment
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-import androidx.navigation.fragment.findNavController
-import net.taler.wallet.databinding.FragmentAlreadyPaidBinding
-
-/**
- * Display the message that the user already paid for the order
- * that the merchant is proposing.
- */
-class AlreadyPaidFragment : Fragment() {
-
-    private lateinit var ui: FragmentAlreadyPaidBinding
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        ui = FragmentAlreadyPaidBinding.inflate(inflater, container, false)
-        return ui.root
-    }
-
-    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
-        ui.backButton.setOnClickListener {
-            findNavController().navigateUp()
-        }
-    }
-
-}
diff --git 
a/wallet/src/main/java/net/taler/wallet/payment/PayTemplateComposable.kt 
b/wallet/src/main/java/net/taler/wallet/payment/PayTemplateComposable.kt
index 815f463..e2a8a64 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PayTemplateComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PayTemplateComposable.kt
@@ -149,7 +149,7 @@ fun PayTemplateAlreadyPaidPreview() {
         PayTemplateComposable(
             defaultSummary = "Donation",
             amountStatus = AmountFieldStatus.Default("20", "ARS"),
-            payStatus = PayStatus.AlreadyPaid,
+            payStatus = PayStatus.AlreadyPaid(transactionId = "transactionId"),
             currencies = listOf("KUDOS", "ARS"),
             onCreateAmount = { text, currency ->
                 AmountResult.Success(amount = Amount.fromString(currency, 
text))
diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt 
b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
index 3a3069c..19be280 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
@@ -41,7 +41,7 @@ sealed class PayStatus {
     object Loading : PayStatus()
     data class Prepared(
         val contractTerms: ContractTerms,
-        val proposalId: String,
+        val transactionId: String,
         val amountRaw: Amount,
         val amountEffective: Amount,
     ) : PayStatus()
@@ -51,10 +51,18 @@ sealed class PayStatus {
         val amountRaw: Amount,
     ) : PayStatus()
 
-    // TODO bring user to fulfilment URI
-    object AlreadyPaid : PayStatus()
-    data class Error(val error: TalerErrorInfo) : PayStatus()
-    data class Success(val currency: String) : PayStatus()
+    data class AlreadyPaid(
+        val transactionId: String,
+    ) : PayStatus()
+
+    data class Error(
+        val transactionId: String? = null,
+        val error: TalerErrorInfo,
+    ) : PayStatus()
+    data class Success(
+        val transactionId: String,
+        val currency: String,
+    ) : PayStatus()
 }
 
 class PaymentManager(
@@ -76,32 +84,33 @@ class PaymentManager(
             mPayStatus.value = when (response) {
                 is PaymentPossibleResponse -> response.toPayStatusPrepared()
                 is InsufficientBalanceResponse -> InsufficientBalance(
-                    response.contractTerms,
-                    response.amountRaw
+                    contractTerms = response.contractTerms,
+                    amountRaw = response.amountRaw
+                )
+                is AlreadyConfirmedResponse -> AlreadyPaid(
+                    transactionId = response.transactionId,
                 )
-
-                is AlreadyConfirmedResponse -> AlreadyPaid
             }
         }
     }
 
-    fun confirmPay(proposalId: String, currency: String) = scope.launch {
+    fun confirmPay(transactionId: String, currency: String) = scope.launch {
         api.request("confirmPay", ConfirmPayResult.serializer()) {
-            put("proposalId", proposalId)
+            put("transactionId", transactionId)
         }.onError {
             handleError("confirmPay", it)
-        }.onSuccess {
-            mPayStatus.postValue(PayStatus.Success(currency))
-        }
-    }
-
-    @UiThread
-    fun abortPay() {
-        val ps = payStatus.value
-        if (ps is PayStatus.Prepared) {
-            abortProposal(ps.proposalId)
+        }.onSuccess { response ->
+            mPayStatus.postValue(when (response) {
+                is ConfirmPayResult.Done -> PayStatus.Success(
+                    transactionId = response.transactionId,
+                    currency = currency,
+                )
+                is ConfirmPayResult.Pending -> PayStatus.Error(
+                    transactionId = response.transactionId,
+                    error = response.lastError,
+                )
+            })
         }
-        resetPayStatus()
     }
 
     fun preparePayForTemplate(url: String, summary: String?, amount: Amount?) 
= scope.launch {
@@ -122,23 +131,13 @@ class PaymentManager(
                     amountRaw = response.amountRaw,
                 )
 
-                is AlreadyConfirmedResponse -> AlreadyPaid
+                is AlreadyConfirmedResponse -> AlreadyPaid(
+                    transactionId = response.transactionId,
+                )
             }
         }
     }
 
-    internal fun abortProposal(proposalId: String) = scope.launch {
-        Log.i(TAG, "aborting proposal")
-        api.request<Unit>("abortProposal") {
-            put("proposalId", proposalId)
-        }.onError {
-            Log.e(TAG, "received error response to abortProposal")
-            handleError("abortProposal", it)
-        }.onSuccess {
-            mPayStatus.postValue(PayStatus.None)
-        }
-    }
-
     @UiThread
     fun resetPayStatus() {
         mPayStatus.value = PayStatus.None
@@ -146,7 +145,7 @@ class PaymentManager(
 
     private fun handleError(operation: String, error: TalerErrorInfo) {
         Log.e(TAG, "got $operation error result $error")
-        mPayStatus.value = PayStatus.Error(error)
+        mPayStatus.value = PayStatus.Error(error = error)
     }
 
 }
diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt 
b/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt
index 7e03472..5e97f58 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt
@@ -32,14 +32,14 @@ sealed class PreparePayResponse {
     @Serializable
     @SerialName("payment-possible")
     data class PaymentPossibleResponse(
-        val proposalId: String,
+        val transactionId: String,
         val amountRaw: Amount,
         val amountEffective: Amount,
         val contractTerms: ContractTerms,
     ) : PreparePayResponse() {
         fun toPayStatusPrepared() = PayStatus.Prepared(
             contractTerms = contractTerms,
-            proposalId = proposalId,
+            transactionId = transactionId,
             amountRaw = amountRaw,
             amountEffective = amountEffective,
         )
@@ -48,7 +48,6 @@ sealed class PreparePayResponse {
     @Serializable
     @SerialName("insufficient-balance")
     data class InsufficientBalanceResponse(
-        val proposalId: String,
         val amountRaw: Amount,
         val contractTerms: ContractTerms,
     ) : PreparePayResponse()
@@ -56,13 +55,13 @@ sealed class PreparePayResponse {
     @Serializable
     @SerialName("already-confirmed")
     data class AlreadyConfirmedResponse(
-        val proposalId: String,
+        val transactionId: String,
         /**
          * Did the payment succeed?
          */
         val paid: Boolean,
         val amountRaw: Amount,
-        val amountEffective: Amount,
+        val amountEffective: Amount? = null,
         val contractTerms: ContractTerms,
     ) : PreparePayResponse()
 }
@@ -71,9 +70,15 @@ sealed class PreparePayResponse {
 sealed class ConfirmPayResult {
     @Serializable
     @SerialName("done")
-    data class Done(val contractTerms: ContractTerms) : ConfirmPayResult()
+    data class Done(
+        val transactionId: String,
+        val contractTerms: ContractTerms,
+    ) : ConfirmPayResult()
 
     @Serializable
     @SerialName("pending")
-    data class Pending(val lastError: TalerErrorInfo) : ConfirmPayResult()
+    data class Pending(
+        val transactionId: String,
+        val lastError: TalerErrorInfo,
+    ) : ConfirmPayResult()
 }
diff --git 
a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt 
b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
index 609adb4..73da394 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
@@ -18,22 +18,27 @@ package net.taler.wallet.payment
 
 import android.graphics.Bitmap
 import android.os.Bundle
+import android.util.Log
 import android.view.LayoutInflater
 import android.view.View
 import android.view.View.GONE
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
+import androidx.lifecycle.lifecycleScope
 import androidx.navigation.fragment.findNavController
 import androidx.recyclerview.widget.LinearLayoutManager
 import com.google.android.material.snackbar.Snackbar
 import com.google.android.material.snackbar.Snackbar.LENGTH_LONG
+import kotlinx.coroutines.launch
 import net.taler.common.Amount
 import net.taler.common.ContractTerms
 import net.taler.common.fadeIn
 import net.taler.common.fadeOut
+import net.taler.common.showError
 import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
+import net.taler.wallet.TAG
 import net.taler.wallet.databinding.FragmentPromptPaymentBinding
 import net.taler.wallet.showError
 
@@ -44,6 +49,7 @@ class PromptPaymentFragment : Fragment(), 
ProductImageClickListener {
 
     private val model: MainViewModel by activityViewModels()
     private val paymentManager by lazy { model.paymentManager }
+    private val transactionManager by lazy { model.transactionManager }
 
     private lateinit var ui: FragmentPromptPaymentBinding
     private val adapter = ProductAdapter(this)
@@ -68,7 +74,15 @@ class PromptPaymentFragment : Fragment(), 
ProductImageClickListener {
     override fun onDestroy() {
         super.onDestroy()
         if (!requireActivity().isChangingConfigurations) {
-            paymentManager.abortPay()
+            val payStatus = paymentManager.payStatus.value as? 
PayStatus.Prepared ?: return
+            transactionManager.abortTransaction(payStatus.transactionId) { 
error ->
+                Log.e(TAG, "Error abortTransaction $error")
+                if (model.devMode.value == false) {
+                    showError(error.userFacingMsg)
+                } else {
+                    showError(error)
+                }
+            }
         }
     }
 
@@ -92,8 +106,8 @@ class PromptPaymentFragment : Fragment(), 
ProductImageClickListener {
                 ui.bottom.confirmButton.setOnClickListener {
                     model.showProgressBar.value = true
                     paymentManager.confirmPay(
-                        payStatus.proposalId,
-                        payStatus.contractTerms.amount.currency
+                        transactionId = payStatus.transactionId,
+                        currency = payStatus.contractTerms.amount.currency,
                     )
                     ui.bottom.confirmButton.fadeOut()
                     ui.bottom.confirmProgressBar.fadeIn()
@@ -108,14 +122,14 @@ class PromptPaymentFragment : Fragment(), 
ProductImageClickListener {
             is PayStatus.Success -> {
                 showLoading(false)
                 paymentManager.resetPayStatus()
-                
findNavController().navigate(R.id.action_promptPayment_to_nav_main)
-                model.showTransactions(payStatus.currency)
+                navigateToTransaction(payStatus.transactionId)
                 Snackbar.make(requireView(), R.string.payment_initiated, 
LENGTH_LONG).show()
             }
             is PayStatus.AlreadyPaid -> {
                 showLoading(false)
                 paymentManager.resetPayStatus()
-                
findNavController().navigate(R.id.action_promptPayment_to_alreadyPaid)
+                navigateToTransaction(payStatus.transactionId)
+                Snackbar.make(requireView(), R.string.payment_already_paid, 
LENGTH_LONG).show()
             }
             is PayStatus.Error -> {
                 showLoading(false)
@@ -158,4 +172,13 @@ class PromptPaymentFragment : Fragment(), 
ProductImageClickListener {
         f.show(parentFragmentManager, "image")
     }
 
+    private fun navigateToTransaction(id: String) {
+        lifecycleScope.launch {
+            if (transactionManager.selectTransaction(id)) {
+                
findNavController().navigate(R.id.action_promptPayment_to_nav_transactions_detail_payment)
+            } else {
+                
findNavController().navigate(R.id.action_promptPayment_to_nav_main)
+            }
+        }
+    }
 }
diff --git 
a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
index 6bfcf90..a76a7d1 100644
--- a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
@@ -17,14 +17,11 @@
 package net.taler.wallet.pending
 
 import android.os.Bundle
-import android.util.Log
 import android.view.LayoutInflater
 import android.view.Menu
 import android.view.MenuInflater
 import android.view.MenuItem
 import android.view.View
-import android.view.View.GONE
-import android.view.View.VISIBLE
 import android.view.ViewGroup
 import android.widget.LinearLayout
 import android.widget.TextView
@@ -36,13 +33,11 @@ import androidx.recyclerview.widget.RecyclerView
 import net.taler.common.showError
 import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
-import net.taler.wallet.TAG
 import net.taler.wallet.databinding.FragmentPendingOperationsBinding
 import org.json.JSONObject
 
 interface PendingOperationClickListener {
     fun onPendingOperationClick(type: String, detail: JSONObject)
-    fun onPendingOperationActionClick(type: String, detail: JSONObject)
 }
 
 class PendingOperationsFragment : Fragment(), PendingOperationClickListener {
@@ -113,20 +108,6 @@ class PendingOperationsFragment : Fragment(), 
PendingOperationClickListener {
     override fun onPendingOperationClick(type: String, detail: JSONObject) {
         requireActivity().showError("No detail view for $type implemented 
yet.")
     }
-
-    override fun onPendingOperationActionClick(type: String, detail: 
JSONObject) {
-        when (type) {
-            "proposal-choice" -> {
-                Log.v(TAG, "got action click on proposal-choice")
-                val proposalId = detail.optString("proposalId", "")
-                if (proposalId == "") {
-                    return
-                }
-                model.paymentManager.abortProposal(proposalId)
-            }
-        }
-    }
-
 }
 
 class PendingOperationsAdapter(
@@ -155,22 +136,6 @@ class PendingOperationsAdapter(
         pendingContainer.setOnClickListener {
             listener.onPendingOperationClick(p.type, p.detail)
         }
-        when (p.type) {
-            "proposal-choice" -> {
-                val btn1 = 
holder.rowView.findViewById<TextView>(R.id.button_pending_action_1)
-                btn1.text = 
btn1.context.getString(R.string.pending_operations_refuse)
-                btn1.visibility = VISIBLE
-                btn1.setOnClickListener {
-                    listener.onPendingOperationActionClick(p.type, p.detail)
-                }
-            }
-            else -> {
-                val btn1 = 
holder.rowView.findViewById<TextView>(R.id.button_pending_action_1)
-                btn1.text = 
btn1.context.getString(R.string.pending_operations_no_action)
-                btn1.visibility = GONE
-                btn1.setOnClickListener {}
-            }
-        }
         val textView = holder.rowView.findViewById<TextView>(R.id.pending_text)
         val subTextView = 
holder.rowView.findViewById<TextView>(R.id.pending_subtext)
         subTextView.text = p.detail.toString(1)
diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt
index f21bd44..fcf34f5 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt
@@ -28,7 +28,6 @@ import 
com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_SHORT
 import com.google.android.material.snackbar.Snackbar
 import net.taler.common.showError
-import net.taler.qtart.BuildConfig.WALLET_CORE_VERSION
 import net.taler.wallet.BuildConfig.FLAVOR
 import net.taler.wallet.BuildConfig.VERSION_CODE
 import net.taler.wallet.BuildConfig.VERSION_NAME
@@ -104,7 +103,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
             prefDevMode.isChecked = enabled
             if (enabled) {
                 prefVersionApp.summary = "$VERSION_NAME ($FLAVOR 
$VERSION_CODE)"
-                prefVersionCore.summary = WALLET_CORE_VERSION
+                prefVersionCore.summary = "${model.walletVersion} 
(${model.walletVersionHash?.take(7)})"
                 model.exchangeVersion?.let { prefVersionExchange.summary = it }
                 model.merchantVersion?.let { prefVersionMerchant.summary = it }
             }
diff --git a/wallet/src/main/res/layout/fragment_already_paid.xml 
b/wallet/src/main/res/layout/fragment_already_paid.xml
deleted file mode 100644
index 18ce0b5..0000000
--- a/wallet/src/main/res/layout/fragment_already_paid.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ This file is part of GNU Taler
-  ~ (C) 2020 Taler Systems S.A.
-  ~
-  ~ GNU Taler is free software; you can redistribute it and/or modify it under 
the
-  ~ terms of the GNU General Public License as published by the Free Software
-  ~ Foundation; either version 3, or (at your option) any later version.
-  ~
-  ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT 
ANY
-  ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
-  ~ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU General Public License along 
with
-  ~ GNU Taler; see the file COPYING.  If not, see 
<http://www.gnu.org/licenses/>
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:app="http://schemas.android.com/apk/res-auto";
-    xmlns:tools="http://schemas.android.com/tools";
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_margin="15dp"
-    android:orientation="vertical"
-    tools:context=".payment.AlreadyPaidFragment">
-
-    <Space
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1" />
-
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="50dp"
-        android:layout_gravity="center"
-        android:text="@string/payment_already_paid"
-        android:textAlignment="center"
-        android:textColor="@android:color/holo_green_dark"
-        app:autoSizeTextType="uniform" />
-
-
-    <Space
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1" />
-
-    <Button
-        android:id="@+id/backButton"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:text="@string/button_back" />
-
-</LinearLayout>
diff --git a/wallet/src/main/res/layout/list_item_pending_operation.xml 
b/wallet/src/main/res/layout/list_item_pending_operation.xml
index bd606c3..210715c 100644
--- a/wallet/src/main/res/layout/list_item_pending_operation.xml
+++ b/wallet/src/main/res/layout/list_item_pending_operation.xml
@@ -31,12 +31,6 @@
         android:textSize="24sp"
         tools:text="My Pending Operation" />
 
-    <Button
-        android:id="@+id/button_pending_action_1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        tools:text="Cancel Operation" />
-
     <TextView
         android:id="@+id/pending_subtext"
         android:layout_width="wrap_content"
diff --git a/wallet/src/main/res/navigation/nav_graph.xml 
b/wallet/src/main/res/navigation/nav_graph.xml
index 672bb77..8c1010c 100644
--- a/wallet/src/main/res/navigation/nav_graph.xml
+++ b/wallet/src/main/res/navigation/nav_graph.xml
@@ -94,8 +94,8 @@
             app:destination="@id/nav_main"
             app:popUpTo="@id/nav_main" />
         <action
-            android:id="@+id/action_promptPayment_to_alreadyPaid"
-            app:destination="@id/alreadyPaid"
+            
android:id="@+id/action_promptPayment_to_nav_transactions_detail_payment"
+            app:destination="@id/nav_transactions_detail_payment"
             app:popUpTo="@id/nav_main" />
     </fragment>
 
@@ -295,12 +295,6 @@
         android:label="@string/tip_already_accepted"
         tools:layout="@layout/fragment_already_accepted" />
 
-    <fragment
-        android:id="@+id/alreadyPaid"
-        android:name="net.taler.wallet.payment.AlreadyPaidFragment"
-        android:label="@string/payment_already_paid_title"
-        tools:layout="@layout/fragment_already_paid" />
-
     <fragment
         android:id="@+id/promptWithdraw"
         android:name="net.taler.wallet.withdraw.PromptWithdrawFragment"

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