[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.
- [taler-taler-android] branch master updated (4c70379 -> 64ab391),
gnunet <=
- [taler-taler-android] 04/06: [wallet] Delete now unused AlreadyPaidFragment, gnunet, 2024/02/02
- [taler-taler-android] 01/06: [wallet] Replace deprecated `reset' request with new `clearDb', gnunet, 2024/02/02
- [taler-taler-android] 02/06: [wallet] Bump qtart to v0.9.4-dev.9, gnunet, 2024/02/02
- [taler-taler-android] 03/06: [wallet] Redirect to details view after payment, deprecate proposalId, and remove pending op actions, gnunet, 2024/02/02
- [taler-taler-android] 05/06: [wallet] Load wallet-core version from wallet-core itself, gnunet, 2024/02/02
- [taler-taler-android] 06/06: [wallet] Fix empty error hints, gnunet, 2024/02/02