[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] branch master updated (da098a6 -> b028df1)
From: |
gnunet |
Subject: |
[taler-taler-android] branch master updated (da098a6 -> b028df1) |
Date: |
Tue, 06 Feb 2024 19:01:41 +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 da098a6 [wallet] Replace exchange selection fragment with dialog
decoupled from withdrawals
new 20a83c6 [wallet] bye bye tips!
new b028df1 [wallet] add fdold exchange as global
The 2 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:
.../src/main/java/net/taler/wallet/MainActivity.kt | 5 -
.../main/java/net/taler/wallet/MainViewModel.kt | 2 -
.../net/taler/wallet/exchanges/ExchangeManager.kt | 16 ++
.../taler/wallet/tip/AlreadyAcceptedFragment.kt | 50 ----
.../java/net/taler/wallet/tip/PromptTipFragment.kt | 153 ------------
.../main/java/net/taler/wallet/tip/TipManager.kt | 100 --------
.../main/java/net/taler/wallet/tip/TipResponses.kt | 59 -----
.../wallet/transactions/TransactionTipFragment.kt | 135 -----------
.../net/taler/wallet/transactions/Transactions.kt | 26 +--
.../main/res/drawable/ic_baseline_account_tree.xml | 10 -
.../src/main/res/drawable/ic_baseline_backup.xml | 10 -
.../src/main/res/drawable/ic_baseline_vpn_key.xml | 10 -
.../main/res/layout/fragment_already_accepted.xml | 52 -----
wallet/src/main/res/layout/fragment_prompt_tip.xml | 257 ---------------------
wallet/src/main/res/navigation/nav_graph.xml | 25 --
wallet/src/main/res/values/defaults.xml | 2 -
wallet/src/main/res/values/strings.xml | 10 -
.../java/net/taler/wallet/tip/TipResponsesTest.kt | 83 -------
18 files changed, 17 insertions(+), 988 deletions(-)
delete mode 100644
wallet/src/main/java/net/taler/wallet/tip/AlreadyAcceptedFragment.kt
delete mode 100644
wallet/src/main/java/net/taler/wallet/tip/PromptTipFragment.kt
delete mode 100644 wallet/src/main/java/net/taler/wallet/tip/TipManager.kt
delete mode 100644 wallet/src/main/java/net/taler/wallet/tip/TipResponses.kt
delete mode 100644
wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
delete mode 100644 wallet/src/main/res/drawable/ic_baseline_account_tree.xml
delete mode 100644 wallet/src/main/res/drawable/ic_baseline_backup.xml
delete mode 100644 wallet/src/main/res/drawable/ic_baseline_vpn_key.xml
delete mode 100644 wallet/src/main/res/layout/fragment_already_accepted.xml
delete mode 100644 wallet/src/main/res/layout/fragment_prompt_tip.xml
delete mode 100644
wallet/src/test/java/net/taler/wallet/tip/TipResponsesTest.kt
diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index 868ebe3..631897a 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -273,11 +273,6 @@ class MainActivity : AppCompatActivity(),
OnNavigationItemSelectedListener,
nav.navigate(R.id.action_global_promptPayment)
model.paymentManager.preparePay(u2)
}
- action.startsWith("tip/", ignoreCase = true) -> {
- Log.v(TAG, "navigating!")
- nav.navigate(R.id.action_global_promptTip)
- model.tipManager.prepareTip(u2)
- }
action.startsWith("withdraw/", ignoreCase = true) -> {
Log.v(TAG, "navigating!")
// there's more than one entry point, so use global action
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index 263df49..3c2c4ae 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -46,7 +46,6 @@ import net.taler.wallet.peer.PeerManager
import net.taler.wallet.pending.PendingOperationsManager
import net.taler.wallet.refund.RefundManager
import net.taler.wallet.settings.SettingsManager
-import net.taler.wallet.tip.TipManager
import net.taler.wallet.transactions.TransactionManager
import net.taler.wallet.withdraw.WithdrawManager
import org.json.JSONObject
@@ -79,7 +78,6 @@ class MainViewModel(
val networkManager = NetworkManager(app.applicationContext)
val withdrawManager = WithdrawManager(api, viewModelScope)
- val tipManager = TipManager(api, viewModelScope)
val paymentManager = PaymentManager(api, viewModelScope)
val pendingOperationsManager: PendingOperationsManager =
PendingOperationsManager(api, viewModelScope)
diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt
b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt
index 0e16d7a..5d76885 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt
@@ -135,6 +135,22 @@ class ExchangeManager(
add(exchangeUrl)
delay(100)
}
+ exchanges.value?.let { exs ->
+ exs.find {
+
it.exchangeBaseUrl.startsWith("https://exchange.taler.fdold.eu";)
+ }?.let { fDoldExchange ->
+ api.request<Unit>("addGlobalCurrencyExchange") {
+ put("currency", fDoldExchange.currency)
+ put("exchangeBaseUrl", fDoldExchange.exchangeBaseUrl)
+ put("exchangeMasterPub",
+
"7ER30ZWJEXAG026H5KG9M19NGTFC2DKKFPV79GVXA6DK5DCNSWXG")
+ }.onError {
+ Log.e(TAG, "Error addGlobalCurrencyExchange: $it")
+ }.onSuccess {
+ Log.i(TAG, "fdold is global now!")
+ }
+ }
+ }
}
}
diff --git
a/wallet/src/main/java/net/taler/wallet/tip/AlreadyAcceptedFragment.kt
b/wallet/src/main/java/net/taler/wallet/tip/AlreadyAcceptedFragment.kt
deleted file mode 100644
index 637a2da..0000000
--- a/wallet/src/main/java/net/taler/wallet/tip/AlreadyAcceptedFragment.kt
+++ /dev/null
@@ -1,50 +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.tip
-
-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.FragmentAlreadyAcceptedBinding
-
-/**
- * Display the message that the user already paid for the order
- * that the merchant is proposing.
- */
-class AlreadyAcceptedFragment : Fragment() {
-
- private lateinit var ui: FragmentAlreadyAcceptedBinding
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?,
- ): View {
- ui = FragmentAlreadyAcceptedBinding.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/tip/PromptTipFragment.kt
b/wallet/src/main/java/net/taler/wallet/tip/PromptTipFragment.kt
deleted file mode 100644
index 78969d0..0000000
--- a/wallet/src/main/java/net/taler/wallet/tip/PromptTipFragment.kt
+++ /dev/null
@@ -1,153 +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.tip
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-import androidx.fragment.app.activityViewModels
-import androidx.navigation.fragment.findNavController
-import com.google.android.material.snackbar.Snackbar
-import com.google.android.material.snackbar.Snackbar.LENGTH_LONG
-import net.taler.common.Amount
-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.cleanExchange
-import net.taler.wallet.databinding.FragmentPromptTipBinding
-
-/**
- * Show a tip and ask the user to accept/decline.
- */
-class PromptTipFragment : Fragment() {
-
- private val model: MainViewModel by activityViewModels()
- private val tipManager by lazy { model.tipManager }
-
- private lateinit var ui: FragmentPromptTipBinding
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?,
- ): View {
- ui = FragmentPromptTipBinding.inflate(inflater, container, false)
- return ui.root
- }
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- tipManager.tipStatus.observe(viewLifecycleOwner,
::onPaymentStatusChanged)
- }
-
- private fun showLoading(show: Boolean) {
- model.showProgressBar.value = show
- if (show) {
- ui.progressBar.fadeIn()
- } else {
- ui.progressBar.fadeOut()
- }
- }
-
- private fun onPaymentStatusChanged(payStatus: TipStatus) = when
(payStatus) {
- is TipStatus.Prepared -> {
- showLoading(false)
- showContent(
- amountRaw = payStatus.tipAmountRaw,
- amountEffective = payStatus.tipAmountEffective,
- exchange = payStatus.exchangeBaseUrl,
- merchant = payStatus.merchantBaseUrl
- )
- ui.confirmWithdrawButton.isEnabled = true
- ui.confirmWithdrawButton.setOnClickListener {
- tipManager.acceptTip(
- payStatus.walletTipId,
- payStatus.tipAmountRaw.currency
- )
- }
- }
- is TipStatus.Accepting -> {
- model.showProgressBar.value = true
- ui.confirmProgressBar.fadeIn()
- ui.confirmWithdrawButton.fadeOut()
- }
- is TipStatus.AlreadyAccepted -> {
- showLoading(false)
- tipManager.resetTipStatus()
-
findNavController().navigate(R.id.action_promptTip_to_alreadyAccepted)
- }
- is TipStatus.Success -> {
- showLoading(false)
- tipManager.resetTipStatus()
- findNavController().navigate(R.id.action_promptTip_to_nav_main)
- model.showTransactions(payStatus.currency)
- Snackbar.make(requireView(), R.string.tip_received,
LENGTH_LONG).show()
- }
- is TipStatus.Error -> {
- showLoading(false)
- // TODO pass TalerErrorInfo for JSON rendering
- showError(getString(R.string.payment_error,
payStatus.error.userFacingMsg))
- ui.confirmProgressBar.fadeOut()
- ui.confirmWithdrawButton.fadeIn()
- }
- is TipStatus.None -> {
- // No tip active
- showLoading(false)
- }
- is TipStatus.Loading -> {
- // Wait until loaded ...
- showLoading(true)
- }
- }
-
- private fun showContent(
- amountRaw: Amount,
- amountEffective: Amount,
- exchange: String,
- merchant: String,
- ) {
- model.showProgressBar.value = false
- ui.progressBar.fadeOut()
-
- ui.introView.fadeIn()
- ui.effectiveAmountView.text = amountEffective.toString()
- ui.effectiveAmountView.fadeIn()
-
- ui.chosenAmountLabel.fadeIn()
- ui.chosenAmountView.text = amountRaw.toString()
- ui.chosenAmountView.fadeIn()
-
- ui.feeLabel.fadeIn()
- ui.feeView.text =
- getString(R.string.amount_negative, (amountRaw -
amountEffective).toString())
- ui.feeView.fadeIn()
-
- ui.exchangeIntroView.fadeIn()
- ui.withdrawExchangeUrl.text = cleanExchange(exchange)
- ui.withdrawExchangeUrl.fadeIn()
-
- ui.merchantIntroView.fadeIn()
- ui.withdrawMerchantUrl.text = cleanExchange(merchant)
- ui.withdrawMerchantUrl.fadeIn()
-
- ui.withdrawCard.fadeIn()
- }
-
-}
diff --git a/wallet/src/main/java/net/taler/wallet/tip/TipManager.kt
b/wallet/src/main/java/net/taler/wallet/tip/TipManager.kt
deleted file mode 100644
index 3c54d20..0000000
--- a/wallet/src/main/java/net/taler/wallet/tip/TipManager.kt
+++ /dev/null
@@ -1,100 +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.tip
-
-import android.util.Log
-import androidx.annotation.UiThread
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.launch
-import net.taler.common.Amount
-import net.taler.common.Timestamp
-import net.taler.wallet.TAG
-import net.taler.wallet.backend.TalerErrorInfo
-import net.taler.wallet.backend.WalletBackendApi
-import net.taler.wallet.tip.PrepareTipResponse.AlreadyAcceptedResponse
-import net.taler.wallet.tip.PrepareTipResponse.TipPossibleResponse
-
-sealed class TipStatus {
- object None : TipStatus()
- object Loading : TipStatus()
- data class Prepared(
- val walletTipId: String,
- val merchantBaseUrl: String,
- val exchangeBaseUrl: String,
- val expirationTimestamp: Timestamp,
- val tipAmountRaw: Amount,
- val tipAmountEffective: Amount,
- ) : TipStatus()
- object Accepting : TipStatus()
- data class AlreadyAccepted(
- val walletTipId: String,
- ) : TipStatus()
-
- // TODO bring user to fulfilment URI (not yet in wallet API)
- data class Error(val error: TalerErrorInfo) : TipStatus()
- data class Success(val currency: String) : TipStatus()
-}
-
-class TipManager(
- private val api: WalletBackendApi,
- private val scope: CoroutineScope,
-) {
-
- private val mTipStatus = MutableLiveData<TipStatus>(TipStatus.None)
- internal val tipStatus: LiveData<TipStatus> = mTipStatus
-
- @UiThread
- fun prepareTip(url: String) = scope.launch {
- mTipStatus.value = TipStatus.Loading
- api.request("prepareTip", PrepareTipResponse.serializer()) {
- put("talerTipUri", url)
- }.onError {
- handleError("prepareTip", it)
- }.onSuccess { response ->
- mTipStatus.value = when (response) {
- is TipPossibleResponse -> response.toTipStatusPrepared()
- is AlreadyAcceptedResponse -> TipStatus.AlreadyAccepted(
- response.walletTipId
- )
- }
- }
- }
-
- fun acceptTip(tipId: String, currency: String) = scope.launch {
- mTipStatus.value = TipStatus.Accepting
- api.request("acceptTip", ConfirmTipResult.serializer()) {
- put("walletTipId", tipId)
- }.onError {
- handleError("acceptTip", it)
- }.onSuccess {
- mTipStatus.postValue(TipStatus.Success(currency))
- }
- }
-
- @UiThread
- fun resetTipStatus() {
- mTipStatus.value = TipStatus.None
- }
-
- private fun handleError(operation: String, error: TalerErrorInfo) {
- Log.e(TAG, "got $operation error result $error")
- mTipStatus.value = TipStatus.Error(error)
- }
-
-}
diff --git a/wallet/src/main/java/net/taler/wallet/tip/TipResponses.kt
b/wallet/src/main/java/net/taler/wallet/tip/TipResponses.kt
deleted file mode 100644
index b0f6273..0000000
--- a/wallet/src/main/java/net/taler/wallet/tip/TipResponses.kt
+++ /dev/null
@@ -1,59 +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.tip
-
-import kotlinx.serialization.ExperimentalSerializationApi
-import kotlinx.serialization.SerialName
-import kotlinx.serialization.Serializable
-import kotlinx.serialization.json.JsonClassDiscriminator
-import net.taler.common.Amount
-import net.taler.common.Timestamp
-
-@OptIn(ExperimentalSerializationApi::class)
-@Serializable
-@JsonClassDiscriminator("accepted")
-sealed class PrepareTipResponse {
-
- @Serializable
- @SerialName("false")
- data class TipPossibleResponse(
- val walletTipId: String,
- val merchantBaseUrl: String,
- val exchangeBaseUrl: String,
- val expirationTimestamp: Timestamp,
- val tipAmountRaw: Amount,
- val tipAmountEffective: Amount,
- ) : PrepareTipResponse() {
- fun toTipStatusPrepared() = TipStatus.Prepared(
- walletTipId = walletTipId,
- merchantBaseUrl = merchantBaseUrl,
- exchangeBaseUrl = exchangeBaseUrl,
- expirationTimestamp = expirationTimestamp,
- tipAmountEffective = tipAmountEffective,
- tipAmountRaw = tipAmountRaw,
- )
- }
-
- @Serializable
- @SerialName("true")
- data class AlreadyAcceptedResponse(
- val walletTipId: String,
- ) : PrepareTipResponse()
-}
-
-@Serializable
-class ConfirmTipResult
diff --git
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
deleted file mode 100644
index c15f931..0000000
---
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * This file is part of GNU Taler
- * (C) 2022 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.transactions
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.rememberScrollState
-import androidx.compose.foundation.verticalScroll
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Surface
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.livedata.observeAsState
-import androidx.compose.ui.Alignment.Companion.CenterHorizontally
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.ComposeView
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.tooling.preview.Preview
-import androidx.compose.ui.unit.dp
-import net.taler.common.Amount
-import net.taler.common.Timestamp
-import net.taler.common.toAbsoluteTime
-import net.taler.wallet.R
-import net.taler.wallet.backend.TalerErrorCode.EXCHANGE_GENERIC_KYC_REQUIRED
-import net.taler.wallet.backend.TalerErrorInfo
-import net.taler.wallet.compose.TalerSurface
-import net.taler.wallet.transactions.TransactionAction.Abort
-import net.taler.wallet.transactions.TransactionAction.Retry
-import net.taler.wallet.transactions.TransactionAction.Suspend
-import net.taler.wallet.transactions.TransactionMajorState.Pending
-
-class TransactionTipFragment : TransactionDetailFragment() {
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?,
- ): View = ComposeView(requireContext()).apply {
- setContent {
- TalerSurface {
- val t =
transactionManager.selectedTransaction.observeAsState(null).value
- if (t is TransactionTip) TransactionTipComposable(t, devMode) {
- onTransitionButtonClicked(t, it)
- }
- }
- }
- }
-}
-
-@Composable
-fun TransactionTipComposable(
- t: TransactionTip,
- devMode: Boolean?,
- onTransition: (t: TransactionAction) -> Unit,
-) {
- val scrollState = rememberScrollState()
- Column(
- modifier = Modifier
- .fillMaxWidth()
- .verticalScroll(scrollState),
- horizontalAlignment = CenterHorizontally,
- ) {
- val context = LocalContext.current
- Text(
- modifier = Modifier.padding(16.dp),
- text = t.timestamp.ms.toAbsoluteTime(context).toString(),
- style = MaterialTheme.typography.bodyLarge,
- )
-
- TransactionAmountComposable(
- label = stringResource(id =
R.string.send_peer_payment_amount_received),
- amount = t.amountEffective,
- amountType = AmountType.Positive,
- )
- TransactionAmountComposable(
- label = stringResource(id =
R.string.send_peer_payment_amount_sent),
- amount = t.amountRaw,
- amountType = AmountType.Neutral,
- )
- val fee = t.amountRaw - t.amountEffective
- if (!fee.isZero()) {
- TransactionAmountComposable(
- label = stringResource(id = R.string.withdraw_fees),
- amount = fee,
- amountType = AmountType.Negative,
- )
- }
- TransactionInfoComposable(
- label = stringResource(id = R.string.tip_merchant_url),
- info = t.merchantBaseUrl,
- )
- TransitionsComposable(t, devMode == true, onTransition)
- if (devMode == true && t.error != null) {
- ErrorTransactionButton(error = t.error)
- }
- }
-}
-
-@Preview
-@Composable
-fun TransactionTipPreview() {
- val t = TransactionTip(
- transactionId = "transactionId",
- timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60
* 1000),
- txState = TransactionState(Pending),
- txActions = listOf(Retry, Suspend, Abort),
- merchantBaseUrl = "https://merchant.example.org/";,
- amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
- amountEffective = Amount.fromString("TESTKUDOS", "42.1337"),
- error = TalerErrorInfo(code = EXCHANGE_GENERIC_KYC_REQUIRED),
- )
- Surface {
- TransactionTipComposable(t, true) {}
- }
-}
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 de47f68..9017854 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
@@ -41,8 +41,8 @@ import net.taler.wallet.R
import net.taler.wallet.TAG
import net.taler.wallet.backend.TalerErrorCode
import net.taler.wallet.backend.TalerErrorInfo
-import net.taler.wallet.cleanExchange
import net.taler.wallet.balances.CurrencySpecification
+import net.taler.wallet.cleanExchange
import net.taler.wallet.refund.RefundPaymentInfo
import net.taler.wallet.transactions.TransactionMajorState.None
import net.taler.wallet.transactions.TransactionMajorState.Pending
@@ -336,30 +336,6 @@ class TransactionRefund(
override val generalTitleRes = R.string.refund_title
}
-@Serializable
-@SerialName("tip")
-class TransactionTip(
- override val transactionId: String,
- override val timestamp: Timestamp,
- override val txState: TransactionState,
- override val txActions: List<TransactionAction>,
- val merchantBaseUrl: String,
- override val error: TalerErrorInfo? = null,
- override val amountRaw: Amount,
- override val amountEffective: Amount,
-) : Transaction() {
- override val icon = R.drawable.transaction_tip_accepted
- override val detailPageNav = R.id.action_nav_transactions_detail_tip
-
- @Transient
- override val amountType = AmountType.Positive
- override fun getTitle(context: Context): String {
- return context.getString(R.string.transaction_tip_from,
merchantBaseUrl)
- }
-
- override val generalTitleRes = R.string.tip_title
-}
-
@Serializable
@SerialName("refresh")
class TransactionRefresh(
diff --git a/wallet/src/main/res/drawable/ic_baseline_account_tree.xml
b/wallet/src/main/res/drawable/ic_baseline_account_tree.xml
deleted file mode 100644
index 7067bd3..0000000
--- a/wallet/src/main/res/drawable/ic_baseline_account_tree.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android";
- android:width="24dp"
- android:height="24dp"
- android:tint="?attr/colorControlNormal"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:fillColor="@android:color/white"
-
android:pathData="M22,11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3z" />
-</vector>
diff --git a/wallet/src/main/res/drawable/ic_baseline_backup.xml
b/wallet/src/main/res/drawable/ic_baseline_backup.xml
deleted file mode 100644
index 006b014..0000000
--- a/wallet/src/main/res/drawable/ic_baseline_backup.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android";
- android:width="24dp"
- android:height="24dp"
- android:tint="?attr/colorControlNormal"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:fillColor="@android:color/white"
- android:pathData="M19.35,10.04C18.67,6.59 15.64,4 12,4 9.11,4 6.6,5.64
5.35,8.04 2.34,8.36 0,10.91 0,14c0,3.31 2.69,6 6,6h13c2.76,0 5,-2.24 5,-5
0,-2.64 -2.05,-4.78 -4.65,-4.96zM14,13v4h-4v-4H7l5,-5 5,5h-3z" />
-</vector>
diff --git a/wallet/src/main/res/drawable/ic_baseline_vpn_key.xml
b/wallet/src/main/res/drawable/ic_baseline_vpn_key.xml
deleted file mode 100644
index 7b554c9..0000000
--- a/wallet/src/main/res/drawable/ic_baseline_vpn_key.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android";
- android:width="24dp"
- android:height="24dp"
- android:tint="?attr/colorControlNormal"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:fillColor="@android:color/white"
- android:pathData="M12.65,10C11.83,7.67 9.61,6 7,6c-3.31,0 -6,2.69
-6,6s2.69,6 6,6c2.61,0 4.83,-1.67 5.65,-4H17v4h4v-4h2v-4H12.65zM7,14c-1.1,0
-2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z" />
-</vector>
diff --git a/wallet/src/main/res/layout/fragment_already_accepted.xml
b/wallet/src/main/res/layout/fragment_already_accepted.xml
deleted file mode 100644
index b1a7bb1..0000000
--- a/wallet/src/main/res/layout/fragment_already_accepted.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=".tip.AlreadyAcceptedFragment">
-
- <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/tip_already_accepted"
- 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/fragment_prompt_tip.xml
b/wallet/src/main/res/layout/fragment_prompt_tip.xml
deleted file mode 100644
index e3b32cd..0000000
--- a/wallet/src/main/res/layout/fragment_prompt_tip.xml
+++ /dev/null
@@ -1,257 +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/>
- -->
-
-<androidx.constraintlayout.widget.ConstraintLayout
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"
- tools:context=".tip.PromptTipFragment">
-
- <TextView
- android:id="@+id/introView"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginEnd="16dp"
- android:layout_marginBottom="8dp"
- android:gravity="center"
- android:text="@string/tip_total"
- android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/effectiveAmountView"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.5"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_chainStyle="packed"
- tools:visibility="visible" />
-
- <TextView
- android:id="@+id/effectiveAmountView"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginEnd="16dp"
- android:gravity="center"
- android:textColor="@color/green"
- android:textSize="24sp"
- android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/chosenAmountLabel"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/introView"
- tools:text="9.8 TESTKUDOS"
- tools:visibility="visible" />
-
- <TextView
- android:id="@+id/chosenAmountLabel"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="32dp"
- android:layout_marginEnd="16dp"
- android:gravity="center"
- android:text="@string/amount_chosen"
- android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/chosenAmountView"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/effectiveAmountView"
- tools:visibility="visible" />
-
- <TextView
- android:id="@+id/chosenAmountView"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="8dp"
- android:layout_marginEnd="16dp"
- android:gravity="center"
- android:textSize="20sp"
- android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/feeLabel"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/chosenAmountLabel"
- tools:text="10 TESTKUDOS"
- tools:visibility="visible" />
-
- <TextView
- android:id="@+id/feeLabel"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="32dp"
- android:layout_marginEnd="16dp"
- android:gravity="center"
- android:text="@string/tip_fees"
- android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/feeView"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.5"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/chosenAmountView"
- tools:visibility="visible" />
-
- <TextView
- android:id="@+id/feeView"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="8dp"
- android:layout_marginEnd="16dp"
- android:gravity="center"
- android:textColor="?colorError"
- android:textSize="20sp"
- android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/exchangeIntroView"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/feeLabel"
- tools:text="-0.2 TESTKUDOS"
- tools:visibility="visible" />
-
- <TextView
- android:id="@+id/exchangeIntroView"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="32dp"
- android:layout_marginEnd="16dp"
- android:layout_marginBottom="8dp"
- android:gravity="center"
- android:text="@string/tip_exchange"
- android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/withdrawExchangeUrl"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.5"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/feeView"
- tools:visibility="visible" />
-
- <TextView
- android:id="@+id/withdrawExchangeUrl"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginEnd="8dp"
- android:layout_marginBottom="8dp"
- android:gravity="center"
- android:textSize="24sp"
- android:visibility="invisible"
- app:layout_constrainedWidth="true"
- app:layout_constraintBottom_toTopOf="@+id/merchantIntroView"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_chainStyle="packed"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/exchangeIntroView"
- tools:text="demo.taler.net"
- tools:visibility="visible" />
-
- <TextView
- android:id="@+id/merchantIntroView"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginEnd="16dp"
- android:layout_marginBottom="8dp"
- android:gravity="center"
- android:text="@string/tip_merchant_url"
- android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/withdrawMerchantUrl"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.5"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/withdrawExchangeUrl"
- tools:visibility="visible" />
-
-
- <TextView
- android:id="@+id/withdrawMerchantUrl"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginEnd="8dp"
- android:gravity="center"
- android:textSize="24sp"
- android:visibility="invisible"
- app:layout_constrainedWidth="true"
- app:layout_constraintBottom_toTopOf="@+id/withdrawCard"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.502"
- app:layout_constraintHorizontal_chainStyle="packed"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/merchantIntroView"
- tools:text="merchant.demo.taler.net"
- tools:visibility="visible" />
-
- <ProgressBar
- android:id="@+id/progressBar"
- style="?android:attr/progressBarStyleLarge"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
-
- <com.google.android.material.card.MaterialCardView
- android:id="@+id/withdrawCard"
- style="@style/BottomCard"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:visibility="invisible"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- tools:visibility="visible">
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="8dp">
-
- <Button
- android:id="@+id/confirmWithdrawButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:backgroundTint="@color/green"
- android:enabled="false"
- android:text="@string/tip_button_confirm"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="1.0"
- app:layout_constraintStart_toStartOf="parent"
- tools:enabled="true"
- tools:text="@string/tip_button_confirm" />
-
- <ProgressBar
- android:id="@+id/confirmProgressBar"
- style="?android:attr/progressBarStyle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="invisible"
-
app:layout_constraintBottom_toBottomOf="@+id/confirmWithdrawButton"
- app:layout_constraintEnd_toEndOf="@+id/confirmWithdrawButton"
-
app:layout_constraintStart_toStartOf="@+id/confirmWithdrawButton"
- app:layout_constraintTop_toTopOf="@+id/confirmWithdrawButton"
- tools:visibility="visible" />
-
- </androidx.constraintlayout.widget.ConstraintLayout>
-
- </com.google.android.material.card.MaterialCardView>
-
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/wallet/src/main/res/navigation/nav_graph.xml
b/wallet/src/main/res/navigation/nav_graph.xml
index 24def7f..3ea02fc 100644
--- a/wallet/src/main/res/navigation/nav_graph.xml
+++ b/wallet/src/main/res/navigation/nav_graph.xml
@@ -69,21 +69,6 @@
app:destination="@id/nav_deposit" />
</fragment>
- <fragment
- android:id="@+id/promptTip"
- android:name="net.taler.wallet.tip.PromptTipFragment"
- android:label="Review Tip"
- tools:layout="@layout/fragment_prompt_tip">
- <action
- android:id="@+id/action_promptTip_to_nav_main"
- app:destination="@id/nav_main"
- app:popUpTo="@id/nav_main" />
- <action
- android:id="@+id/action_promptTip_to_alreadyAccepted"
- app:destination="@id/alreadyAccepted"
- app:popUpTo="@id/nav_main" />
- </fragment>
-
<fragment
android:id="@+id/promptPayment"
android:name="net.taler.wallet.payment.PromptPaymentFragment"
@@ -289,12 +274,6 @@
android:name="net.taler.wallet.transactions.TransactionDummyFragment"
android:label="@string/transactions_detail_title" />
- <fragment
- android:id="@+id/alreadyAccepted"
- android:name="net.taler.wallet.tip.AlreadyAcceptedFragment"
- android:label="@string/tip_already_accepted"
- tools:layout="@layout/fragment_already_accepted" />
-
<fragment
android:id="@+id/promptWithdraw"
android:name="net.taler.wallet.withdraw.PromptWithdrawFragment"
@@ -369,10 +348,6 @@
android:id="@+id/action_global_promptPayment"
app:destination="@id/promptPayment" />
- <action
- android:id="@+id/action_global_promptTip"
- app:destination="@id/promptTip" />
-
<action
android:id="@+id/action_global_prompt_pull_payment"
app:destination="@id/promptPullPayment" />
diff --git a/wallet/src/main/res/values/defaults.xml
b/wallet/src/main/res/values/defaults.xml
index 0e2a6a1..dffc14e 100644
--- a/wallet/src/main/res/values/defaults.xml
+++ b/wallet/src/main/res/values/defaults.xml
@@ -16,6 +16,4 @@
<resources>
- <bool name="settings_backup_default">true</bool>
-
</resources>
\ No newline at end of file
diff --git a/wallet/src/main/res/values/strings.xml
b/wallet/src/main/res/values/strings.xml
index 436116e..6dac8a8 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -109,7 +109,6 @@ GNU Taler is immune against many types of fraud, such as
phishing of credit card
<string name="transaction_order_total">Total</string>
<string name="transaction_order">Purchase</string>
<string name="transaction_order_id">Receipt #%1$s</string>
- <string name="transaction_tip_from">Reward from %s</string>
<string name="transaction_refund">Refund</string>
<string name="transaction_refund_from">Refund from %s</string>
<string name="transaction_pending">PENDING</string>
@@ -295,15 +294,6 @@ GNU Taler is immune against many types of fraud, such as
phishing of credit card
<string name="refund_error">Error processing refund</string>
<string name="refund_success">Refund received!</string>
- <string name="tip_title">Reward</string>
- <string name="tip_already_accepted">This reward was already
accepted.</string>
- <string name="tip_total">Total</string>
- <string name="tip_fees">Fee</string>
- <string name="tip_exchange">Exchange</string>
- <string name="tip_merchant_url">Merchant URL</string>
- <string name="tip_button_confirm">Accept reward</string>
- <string name="tip_received">Reward received</string>
-
<string name="wifi_disabled_error">Turn on Wi-Fi to get free Wi-Fi</string>
<string name="wifi_connect_error">Could not connect to free Wi-Fi:
%s</string>
diff --git a/wallet/src/test/java/net/taler/wallet/tip/TipResponsesTest.kt
b/wallet/src/test/java/net/taler/wallet/tip/TipResponsesTest.kt
deleted file mode 100644
index 0300933..0000000
--- a/wallet/src/test/java/net/taler/wallet/tip/TipResponsesTest.kt
+++ /dev/null
@@ -1,83 +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.tip
-
-import kotlinx.serialization.json.Json
-import net.taler.common.Amount
-import org.junit.Test
-
-class TipResponsesTest {
-
- private val json = Json {
- ignoreUnknownKeys = true
- }
-
- @Test
- fun testConfirmTipResult() {
- val jsonStr = """
- {
- "type": "response",
- "operation": "acceptTip",
- "id": 47,
- "result": {}
- }
- """.trimIndent()
- json.decodeFromString(ConfirmTipResult.serializer(), jsonStr)
- }
-
- @Test
- fun testTipPossibleSerializer() {
- val jsonStr = """
- {
- "accepted": false,
- "tipAmountRaw": "ARS:2",
- "exchangeBaseUrl": "http://exchange.taler:8081/";,
- "merchantBaseUrl": "http://merchant-backend.taler:9966/";,
- "expirationTimestamp": {
- "t_s": 1688217455
- },
- "tipAmountEffective": "ARS:1.4",
- "walletTipId":
"SZH86ATJC4NZ427JHFVQ9M3S1TCQKVWSSZGSBW8MQ8VTVWD4M4GG"
- }
- """.trimIndent()
- val response = json.decodeFromString(PrepareTipResponse.serializer(),
jsonStr)
- response as PrepareTipResponse.TipPossibleResponse
- assert(response.walletTipId ==
"SZH86ATJC4NZ427JHFVQ9M3S1TCQKVWSSZGSBW8MQ8VTVWD4M4GG")
- assert(response.tipAmountEffective == Amount(currency = "ARS",
fraction = 40000000, value = 1))
- }
-
- @Test
- fun testTipAcceptedSerializer() {
- val jsonStr = """
- {
- "accepted": true,
- "tipAmountRaw": "ARS:2",
- "exchangeBaseUrl": "http://exchange.taler:8081/";,
- "merchantBaseUrl": "http://merchant-backend.taler:9966/";,
- "expirationTimestamp": {
- "t_s": 1688217455
- },
- "tipAmountEffective": "ARS:1.4",
- "walletTipId":
"SZH86ATJC4NZ427JHFVQ9M3S1TCQKVWSSZGSBW8MQ8VTVWD4M4GG"
- }
- """.trimIndent()
- val response = json.decodeFromString(PrepareTipResponse.serializer(),
jsonStr)
- assert(response is PrepareTipResponse.AlreadyAcceptedResponse)
- assert((response as
PrepareTipResponse.AlreadyAcceptedResponse).walletTipId ==
"SZH86ATJC4NZ427JHFVQ9M3S1TCQKVWSSZGSBW8MQ8VTVWD4M4GG")
- }
-
-}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-android] branch master updated (da098a6 -> b028df1),
gnunet <=