[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] branch master updated: Remove Amount#fromDouble()
From: |
gnunet |
Subject: |
[taler-taler-android] branch master updated: Remove Amount#fromDouble() as it was buggy and isn't really needed |
Date: |
Mon, 12 Jun 2023 20:19:19 +0200 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a commit to branch master
in repository taler-android.
The following commit(s) were added to refs/heads/master by this push:
new b991a48 Remove Amount#fromDouble() as it was buggy and isn't really
needed
b991a48 is described below
commit b991a48dc206a006ff384a5194217e29b76dafd0
Author: Torsten Grote <t@grobox.de>
AuthorDate: Mon Jun 12 15:19:10 2023 -0300
Remove Amount#fromDouble() as it was buggy and isn't really needed
---
.../src/main/java/net/taler/common/Amount.kt | 6 ------
.../net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt | 8 ++++----
.../java/net/taler/wallet/deposit/MakeDepositComposable.kt | 6 +++---
.../net/taler/wallet/deposit/TransactionDepositComposable.kt | 4 ++--
.../net/taler/wallet/payment/TransactionPaymentComposable.kt | 4 ++--
.../main/java/net/taler/wallet/peer/IncomingComposable.kt | 12 ++++++------
.../net/taler/wallet/peer/OutgoingPullIntroComposable.kt | 8 ++++----
.../net/taler/wallet/peer/OutgoingPushIntroComposable.kt | 6 +++---
.../java/net/taler/wallet/peer/TransactionPeerPullCredit.kt | 4 ++--
.../java/net/taler/wallet/peer/TransactionPeerPullDebit.kt | 4 ++--
.../java/net/taler/wallet/peer/TransactionPeerPushCredit.kt | 4 ++--
.../java/net/taler/wallet/peer/TransactionPeerPushDebit.kt | 4 ++--
.../net/taler/wallet/refund/TransactionRefundComposable.kt | 4 ++--
.../taler/wallet/transactions/TransactionRefreshFragment.kt | 4 ++--
.../net/taler/wallet/transactions/TransactionTipFragment.kt | 4 ++--
.../taler/wallet/withdraw/TransactionWithdrawalComposable.kt | 4 ++--
.../taler/wallet/withdraw/manual/ManualWithdrawFragment.kt | 8 ++++----
17 files changed, 44 insertions(+), 50 deletions(-)
diff --git a/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
b/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
index 750a1de..4861568 100644
--- a/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
+++ b/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt
@@ -65,12 +65,6 @@ public data class Amount(
private const val MAX_FRACTION_LENGTH = 8
public const val MAX_FRACTION: Int = 99_999_999
- public fun fromDouble(currency: String, value: Double): Amount {
- val intPart = floor(value).toLong()
- val fraPart = floor((value - intPart) * FRACTIONAL_BASE).toInt()
- return Amount(currency, intPart, fraPart)
- }
-
public fun zero(currency: String): Amount {
return Amount(checkCurrency(currency), 0, 0)
}
diff --git
a/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
b/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
index e022ed3..4505762 100644
---
a/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
+++
b/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
@@ -22,9 +22,9 @@ 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.Button
import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
@@ -149,12 +149,12 @@ fun MakeBitcoinDepositComposable(
fun PreviewMakeBitcoinDepositComposable() {
Surface {
val state = DepositState.FeesChecked(
- effectiveDepositAmount = Amount.fromDouble(CURRENCY_BTC, 42.00),
- totalDepositCost = Amount.fromDouble(CURRENCY_BTC, 42.23),
+ effectiveDepositAmount = Amount.fromString(CURRENCY_BTC, "42.00"),
+ totalDepositCost = Amount.fromString(CURRENCY_BTC, "42.23"),
)
MakeBitcoinDepositComposable(
state = state,
- amount = Amount.fromDouble(CURRENCY_BTC, 42.23)) { _, _ ->
+ amount = Amount.fromString(CURRENCY_BTC, "42.23")) { _, _ ->
}
}
}
diff --git
a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
index 3c93ed7..d47970f 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
@@ -239,12 +239,12 @@ private fun isValidBic(bic: String): Boolean =
bic.isEmpty() || bicRegex.matches
fun PreviewMakeDepositComposable() {
Surface {
val state = DepositState.FeesChecked(
- effectiveDepositAmount = Amount.fromDouble("TESTKUDOS", 42.00),
- totalDepositCost = Amount.fromDouble("TESTKUDOS", 42.23),
+ effectiveDepositAmount = Amount.fromString("TESTKUDOS", "42.00"),
+ totalDepositCost = Amount.fromString("TESTKUDOS", "42.23"),
)
MakeDepositComposable(
state = state,
- amount = Amount.fromDouble("TESTKUDOS", 42.23)) { _, _, _, _ ->
+ amount = Amount.fromString("TESTKUDOS", "42.23")) { _, _, _, _ ->
}
}
}
diff --git
a/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt
b/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt
index 3d59b35..3b5bcdc 100644
---
a/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt
+++
b/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt
@@ -92,8 +92,8 @@ fun TransactionDepositComposablePreview() {
timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60
* 1000),
extendedStatus = Pending,
depositGroupId = "fooBar",
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.1337),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.23),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.1337"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.23"),
targetPaytoUri = "https://exchange.example.org/peer/pull/credit",
error = TalerErrorInfo(code = EXCHANGE_GENERIC_KYC_REQUIRED),
)
diff --git
a/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt
b/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt
index c760bb4..276e521 100644
---
a/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt
+++
b/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt
@@ -143,8 +143,8 @@ fun TransactionPaymentComposablePreview() {
products = listOf(),
),
status = PaymentStatus.Paid,
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.1337),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.23),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.1337"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.23"),
error = TalerErrorInfo(code =
TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED),
)
TalerSurface {
diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
b/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
index 2e2ed8a..0c118e6 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingComposable.kt
@@ -212,11 +212,11 @@ fun PeerPullCheckingPreview() {
fun PeerPullTermsPreview() {
Surface {
val terms = IncomingTerms(
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.423),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.423"),
contractTerms = PeerContractTerms(
summary = "This is a long test summary that can be more than
one line long for sure",
- amount = Amount.fromDouble("TESTKUDOS", 23.42),
+ amount = Amount.fromString("TESTKUDOS", "23.42"),
),
id = "ID123",
)
@@ -232,11 +232,11 @@ fun PeerPullTermsPreview() {
fun PeerPullAcceptingPreview() {
Surface {
val terms = IncomingTerms(
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.123),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.123"),
contractTerms = PeerContractTerms(
summary = "This is a long test summary that can be more than
one line long for sure",
- amount = Amount.fromDouble("TESTKUDOS", 23.42),
+ amount = Amount.fromString("TESTKUDOS", "23.42"),
),
id = "ID123",
)
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
index f227dec..ff6e2ee 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
@@ -153,7 +153,7 @@ fun OutgoingPullIntroComposable(
fun PreviewReceiveFundsCheckingIntro() {
Surface {
OutgoingPullIntroComposable(
- Amount.fromDouble("TESTKUDOS", 42.23),
+ Amount.fromString("TESTKUDOS", "42.23"),
if (Random.nextBoolean()) OutgoingIntro else OutgoingChecking,
) { _, _, _, _ -> }
}
@@ -163,11 +163,11 @@ fun PreviewReceiveFundsCheckingIntro() {
@Composable
fun PreviewReceiveFundsCheckedIntro() {
Surface {
- val amountRaw = Amount.fromDouble("TESTKUDOS", 42.42)
- val amountEffective = Amount.fromDouble("TESTKUDOS", 42.23)
+ val amountRaw = Amount.fromString("TESTKUDOS", "42.42")
+ val amountEffective = Amount.fromString("TESTKUDOS", "42.23")
val exchangeItem = ExchangeItem("https://example.org", "TESTKUDOS",
emptyList())
OutgoingPullIntroComposable(
- Amount.fromDouble("TESTKUDOS", 42.23),
+ Amount.fromString("TESTKUDOS", "42.23"),
OutgoingChecked(amountRaw, amountEffective, exchangeItem)
) { _, _, _, _ -> }
}
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
index 0bf835c..96af156 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
@@ -142,7 +142,7 @@ fun OutgoingPushIntroComposable(
fun PeerPushIntroComposableCheckingPreview() {
Surface {
val state = if (Random.nextBoolean()) OutgoingIntro else
OutgoingChecking
- OutgoingPushIntroComposable(state, Amount.fromDouble("TESTKUDOS",
42.23)) { _, _, _ -> }
+ OutgoingPushIntroComposable(state, Amount.fromString("TESTKUDOS",
"42.23")) { _, _, _ -> }
}
}
@@ -150,8 +150,8 @@ fun PeerPushIntroComposableCheckingPreview() {
@Composable
fun PeerPushIntroComposableCheckedPreview() {
Surface {
- val amountEffective = Amount.fromDouble("TESTKUDOS", 42.42)
- val amountRaw = Amount.fromDouble("TESTKUDOS", 42.23)
+ val amountEffective = Amount.fromString("TESTKUDOS", "42.42")
+ val amountRaw = Amount.fromString("TESTKUDOS", "42.23")
val state = OutgoingChecked(amountRaw, amountEffective)
OutgoingPushIntroComposable(state, amountEffective) { _, _, _ -> }
}
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
index d6b798c..74e9f6c 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
@@ -87,8 +87,8 @@ fun TransactionPeerPullCreditPreview() {
timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60
* 1000),
extendedStatus = Pending,
exchangeBaseUrl = "https://exchange.example.org/",
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.1337"),
info = PeerInfoShort(
expiration = Timestamp.fromMillis(System.currentTimeMillis() + 60
* 60 * 1000),
summary = "test invoice",
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt
b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt
index 1bbc223..5ed9c6c 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt
@@ -67,8 +67,8 @@ fun TransactionPeerPullDebitPreview() {
timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60
* 1000),
extendedStatus = Pending,
exchangeBaseUrl = "https://exchange.example.org/",
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.1337),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.23),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.1337"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.23"),
info = PeerInfoShort(
expiration = Timestamp.fromMillis(System.currentTimeMillis() + 60
* 60 * 1000),
summary = "test invoice",
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt
b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt
index d6f4cab..8344d7a 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt
@@ -67,8 +67,8 @@ fun TransactionPeerPushCreditPreview() {
timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60
* 1000),
extendedStatus = Pending,
exchangeBaseUrl = "https://exchange.example.org/",
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.1337"),
info = PeerInfoShort(
expiration = Timestamp.fromMillis(System.currentTimeMillis() + 60
* 60 * 1000),
summary = "test invoice",
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
index b8e8ff4..8f16746 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
@@ -85,8 +85,8 @@ fun TransactionPeerPushDebitPreview() {
timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60
* 1000),
extendedStatus = Pending,
exchangeBaseUrl = "https://exchange.example.org/",
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.1337),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.23),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.1337"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.23"),
info = PeerInfoShort(
expiration = Timestamp.fromMillis(System.currentTimeMillis() + 60
* 60 * 1000),
summary = "test invoice",
diff --git
a/wallet/src/main/java/net/taler/wallet/refund/TransactionRefundComposable.kt
b/wallet/src/main/java/net/taler/wallet/refund/TransactionRefundComposable.kt
index bb077f1..307e3e2 100644
---
a/wallet/src/main/java/net/taler/wallet/refund/TransactionRefundComposable.kt
+++
b/wallet/src/main/java/net/taler/wallet/refund/TransactionRefundComposable.kt
@@ -108,8 +108,8 @@ fun TransactionRefundComposablePreview() {
products = listOf(),
),
refundedTransactionId = "transactionId",
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.1337"),
error = TalerErrorInfo(code =
TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED),
)
TalerSurface {
diff --git
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionRefreshFragment.kt
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionRefreshFragment.kt
index 391eefa..ca3f39b 100644
---
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionRefreshFragment.kt
+++
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionRefreshFragment.kt
@@ -102,8 +102,8 @@ private fun TransactionRefreshComposablePreview() {
transactionId = "transactionId",
timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60
* 1000),
extendedStatus = ExtendedStatus.Pending,
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.1337"),
error = TalerErrorInfo(code =
TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED),
)
Surface {
diff --git
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
index eb148b8..b2db0bb 100644
---
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
+++
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt
@@ -117,8 +117,8 @@ fun TransactionTipPreview() {
timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60
* 1000),
extendedStatus = Pending,
merchantBaseUrl = "https://merchant.example.org/",
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.1337"),
error = TalerErrorInfo(code = EXCHANGE_GENERIC_KYC_REQUIRED),
)
Surface {
diff --git
a/wallet/src/main/java/net/taler/wallet/withdraw/TransactionWithdrawalComposable.kt
b/wallet/src/main/java/net/taler/wallet/withdraw/TransactionWithdrawalComposable.kt
index f1a22d3..3996ec1 100644
---
a/wallet/src/main/java/net/taler/wallet/withdraw/TransactionWithdrawalComposable.kt
+++
b/wallet/src/main/java/net/taler/wallet/withdraw/TransactionWithdrawalComposable.kt
@@ -133,8 +133,8 @@ fun TransactionWithdrawalComposablePreview() {
extendedStatus = ExtendedStatus.Pending,
exchangeBaseUrl = "https://exchange.demo.taler.net/",
withdrawalDetails = ManualTransfer(exchangePaytoUris = emptyList()),
- amountRaw = Amount.fromDouble("TESTKUDOS", 42.23),
- amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337),
+ amountRaw = Amount.fromString("TESTKUDOS", "42.23"),
+ amountEffective = Amount.fromString("TESTKUDOS", "42.1337"),
error = TalerErrorInfo(code =
TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED),
)
val listener = object : ActionListener {
diff --git
a/wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawFragment.kt
b/wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawFragment.kt
index aae8c95..c499c3b 100644
---
a/wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawFragment.kt
+++
b/wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawFragment.kt
@@ -25,6 +25,7 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import net.taler.common.Amount
+import net.taler.common.AmountParserException
import net.taler.common.hideKeyboard
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
@@ -73,14 +74,13 @@ class ManualWithdrawFragment : Fragment() {
return
}
ui.amountLayout.error = null
- val value: Double
+ val amount: Amount
try {
- value = ui.amountView.text.toString().replace(',', '.').toDouble()
- } catch (e: NumberFormatException) {
+ amount = Amount.fromString(currency, ui.amountView.text.toString())
+ } catch (e: AmountParserException) {
ui.amountLayout.error = getString(R.string.withdraw_amount_error)
return
}
- val amount = Amount.fromDouble(currency, value)
ui.amountView.hideKeyboard()
withdrawManager.getWithdrawalDetails(exchangeItem.exchangeBaseUrl,
amount)
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-taler-android] branch master updated: Remove Amount#fromDouble() as it was buggy and isn't really needed,
gnunet <=