[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] branch master updated (a690087 -> 1dbc22f)
From: |
gnunet |
Subject: |
[taler-taler-android] branch master updated (a690087 -> 1dbc22f) |
Date: |
Tue, 24 Mar 2020 13:23:35 +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 a690087 Ignore annoying lint errors caused by material design lib
new 8641602 Allow fractional withdrawals with cashier app
new 1dbc22f Fix Wallet QR code scanning and nightly version number display
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:
build.gradle | 2 +-
.../main/java/net/taler/cashier/BalanceFragment.kt | 12 +--
.../src/main/java/net/taler/cashier/HttpHelper.kt | 4 +-
.../taler/cashier/withdraw/TransactionFragment.kt | 2 +-
.../net/taler/cashier/withdraw/WithdrawManager.kt | 24 +++---
.../main/res/layout-w550dp/fragment_balance.xml | 2 +-
cashier/src/main/res/layout/fragment_balance.xml | 2 +-
.../src/main/java/net/taler/common/Amount.kt | 27 ++++--
.../src/test/java/net/taler/common/AmountTest.kt | 21 +++++
wallet/build.gradle | 2 +-
.../main/java/net/taler/wallet/BalanceFragment.kt | 4 +-
.../{WalletHistoryAdapter.kt => HistoryAdapter.kt} | 5 +-
...WalletHistoryFragment.kt => HistoryFragment.kt} | 4 +-
wallet/src/main/res/layout/nav_header_main.xml | 95 +++++++++++-----------
wallet/src/main/res/navigation/nav_graph.xml | 2 +-
15 files changed, 127 insertions(+), 81 deletions(-)
rename wallet/src/main/java/net/taler/wallet/history/{WalletHistoryAdapter.kt
=> HistoryAdapter.kt} (98%)
rename wallet/src/main/java/net/taler/wallet/history/{WalletHistoryFragment.kt
=> HistoryFragment.kt} (97%)
diff --git a/build.gradle b/build.gradle
index b1f47dd..57a780b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,5 +1,5 @@
buildscript {
- ext.kotlin_version = '1.3.70'
+ ext.kotlin_version = '1.3.71'
ext.nav_version = "2.2.1"
ext.build_tools_version = "29.0.2"
repositories {
diff --git a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
index fffb21b..c4802ee 100644
--- a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
+++ b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
@@ -33,6 +33,7 @@ import kotlinx.android.synthetic.main.fragment_balance.*
import
net.taler.cashier.BalanceFragmentDirections.Companion.actionBalanceFragmentToTransactionFragment
import net.taler.cashier.withdraw.LastTransaction
import net.taler.cashier.withdraw.WithdrawStatus
+import net.taler.common.Amount
import net.taler.common.SignedAmount
import net.taler.common.fadeIn
import net.taler.common.fadeOut
@@ -142,14 +143,15 @@ class BalanceFragment : Fragment() {
amountView.error = null
}
- private fun getAmountFromView(): Int {
+ private fun getAmountFromView(): Amount {
val str = amountView.editText!!.text.toString()
- if (str.isBlank()) return 0
- return Integer.parseInt(str)
+ val currency = viewModel.currency.value!!
+ if (str.isBlank()) return Amount.zero(currency)
+ return Amount.fromString(currency, str)
}
- private fun onAmountConfirmed(amount: Int) {
- if (amount <= 0) {
+ private fun onAmountConfirmed(amount: Amount) {
+ if (amount.isZero()) {
amountView.error = getString(R.string.withdraw_error_zero)
} else if (!withdrawManager.hasSufficientBalance(amount)) {
amountView.error =
getString(R.string.withdraw_error_insufficient_balance)
diff --git a/cashier/src/main/java/net/taler/cashier/HttpHelper.kt
b/cashier/src/main/java/net/taler/cashier/HttpHelper.kt
index 06b06db..43ba4d8 100644
--- a/cashier/src/main/java/net/taler/cashier/HttpHelper.kt
+++ b/cashier/src/main/java/net/taler/cashier/HttpHelper.kt
@@ -57,11 +57,11 @@ object HttpHelper {
private val MEDIA_TYPE_JSON = MediaType.parse("$MIME_TYPE_JSON;
charset=utf-8")
@WorkerThread
- fun makeJsonPostRequest(url: String, body: String, config: Config):
HttpJsonResult {
+ fun makeJsonPostRequest(url: String, body: JSONObject, config: Config):
HttpJsonResult {
val request = Request.Builder()
.addHeader("Accept", MIME_TYPE_JSON)
.url(url)
- .post(RequestBody.create(MEDIA_TYPE_JSON, body))
+ .post(RequestBody.create(MEDIA_TYPE_JSON, body.toString()))
.build()
val response = try {
getHttpClient(config.username, config.password)
diff --git
a/cashier/src/main/java/net/taler/cashier/withdraw/TransactionFragment.kt
b/cashier/src/main/java/net/taler/cashier/withdraw/TransactionFragment.kt
index 8857bfa..e433540 100644
--- a/cashier/src/main/java/net/taler/cashier/withdraw/TransactionFragment.kt
+++ b/cashier/src/main/java/net/taler/cashier/withdraw/TransactionFragment.kt
@@ -54,7 +54,7 @@ class TransactionFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
withdrawManager.withdrawAmount.observe(viewLifecycleOwner, Observer {
amount ->
- amountView.text = amount
+ amountView.text = amount?.toString()
})
withdrawManager.withdrawResult.observe(viewLifecycleOwner, Observer {
result ->
onWithdrawResultReceived(result)
diff --git
a/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
b/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
index 88df6b7..317d1bf 100644
--- a/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
+++ b/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
@@ -34,6 +34,7 @@ import net.taler.cashier.HttpJsonResult.Error
import net.taler.cashier.HttpJsonResult.Success
import net.taler.cashier.MainViewModel
import net.taler.cashier.R
+import net.taler.common.Amount
import net.taler.common.QrCodeManager.makeQrCode
import org.json.JSONObject
import java.util.concurrent.TimeUnit.MINUTES
@@ -59,8 +60,8 @@ class WithdrawManager(
private var withdrawStatusCheck: Job? = null
- private val mWithdrawAmount = MutableLiveData<String>()
- val withdrawAmount: LiveData<String> = mWithdrawAmount
+ private val mWithdrawAmount = MutableLiveData<Amount>()
+ val withdrawAmount: LiveData<Amount> = mWithdrawAmount
private val mWithdrawResult = MutableLiveData<WithdrawResult>()
val withdrawResult: LiveData<WithdrawResult> = mWithdrawResult
@@ -72,22 +73,23 @@ class WithdrawManager(
val lastTransaction: LiveData<LastTransaction> = mLastTransaction
@UiThread
- fun hasSufficientBalance(amount: Int): Boolean {
+ fun hasSufficientBalance(amount: Amount): Boolean {
val balanceResult = viewModel.balance.value
if (balanceResult !is BalanceResult.Success) return false
- return balanceResult.amount.positive && amount <=
balanceResult.amount.amount.value
+ return balanceResult.amount.positive && amount <=
balanceResult.amount.amount
}
@UiThread
- fun withdraw(amount: Int) {
- check(amount > 0) { "Withdraw amount was <= 0" }
+ fun withdraw(amount: Amount) {
+ check(!amount.isZero()) { "Withdraw amount was 0" }
check(currency != null) { "Currency is null" }
mWithdrawResult.value = null
- mWithdrawAmount.value = "$amount $currency"
+ mWithdrawAmount.value = amount
scope.launch(Dispatchers.IO) {
val url =
"${config.bankUrl}/accounts/${config.username}/withdrawals"
Log.d(TAG, "Starting withdrawal at $url")
- val body = JSONObject(mapOf("amount" to
"${currency}:${amount}")).toString()
+ val map = mapOf("amount" to amount.toJSONString())
+ val body = JSONObject(map)
when (val result = makeJsonPostRequest(url, body, config)) {
is Success -> {
val talerUri = result.json.getString("taler_withdraw_uri")
@@ -178,7 +180,7 @@ class WithdrawManager(
private fun abort(withdrawalId: String) = scope.launch(Dispatchers.IO) {
val url =
"${config.bankUrl}/accounts/${config.username}/withdrawals/${withdrawalId}/abort"
Log.d(TAG, "Aborting withdrawal at $url")
- makeJsonPostRequest(url, "", config)
+ makeJsonPostRequest(url, JSONObject(), config)
}
@UiThread
@@ -188,7 +190,7 @@ class WithdrawManager(
val url =
"${config.bankUrl}/accounts/${config.username}/withdrawals/${withdrawalId}/confirm"
Log.d(TAG, "Confirming withdrawal at $url")
- when (val result = makeJsonPostRequest(url, "", config)) {
+ when (val result = makeJsonPostRequest(url, JSONObject(), config))
{
is Success -> {
// no-op still waiting for [timer] to confirm our
confirmation
}
@@ -226,6 +228,6 @@ sealed class WithdrawStatus {
}
data class LastTransaction(
- val withdrawAmount: String,
+ val withdrawAmount: Amount,
val withdrawStatus: WithdrawStatus
)
diff --git a/cashier/src/main/res/layout-w550dp/fragment_balance.xml
b/cashier/src/main/res/layout-w550dp/fragment_balance.xml
index d04698b..40fa6af 100644
--- a/cashier/src/main/res/layout-w550dp/fragment_balance.xml
+++ b/cashier/src/main/res/layout-w550dp/fragment_balance.xml
@@ -184,7 +184,7 @@
android:layout_height="wrap_content"
android:ems="6"
android:imeOptions="actionGo"
- android:inputType="number"
+ android:inputType="number|numberDecimal"
android:maxLength="4" />
</com.google.android.material.textfield.TextInputLayout>
diff --git a/cashier/src/main/res/layout/fragment_balance.xml
b/cashier/src/main/res/layout/fragment_balance.xml
index 5dafc59..b50cfa9 100644
--- a/cashier/src/main/res/layout/fragment_balance.xml
+++ b/cashier/src/main/res/layout/fragment_balance.xml
@@ -185,7 +185,7 @@
android:layout_height="wrap_content"
android:ems="6"
android:imeOptions="actionGo"
- android:inputType="number"
+ android:inputType="number|numberDecimal"
android:maxLength="4" />
</com.google.android.material.textfield.TextInputLayout>
diff --git a/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt
b/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt
index 48bd643..49b699f 100644
--- a/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt
+++ b/taler-kotlin-common/src/main/java/net/taler/common/Amount.kt
@@ -64,7 +64,7 @@ data class Amount(
* of 50_000_000 would correspond to 50 cents.
*/
val fraction: Int
-) {
+) : Comparable<Amount> {
companion object {
@@ -88,10 +88,14 @@ data class Amount(
fun fromJSONString(str: String): Amount {
val split = str.split(":")
if (split.size != 2) throw AmountParserException("Invalid Amount
Format")
- // currency
- val currency = checkCurrency(split[0])
+ return fromString(split[0], split[1])
+ }
+
+ @Throws(AmountParserException::class)
+ @SuppressLint("CheckedExceptions")
+ fun fromString(currency: String, str: String): Amount {
// value
- val valueSplit = split[1].split(".")
+ val valueSplit = str.split(".")
val value = checkValue(valueSplit[0].toLongOrNull())
// fraction
val fraction: Int = if (valueSplit.size > 1) {
@@ -103,7 +107,7 @@ data class Amount(
?.roundToInt()
checkFraction(fraction)
} else 0
- return Amount(currency, value, fraction)
+ return Amount(checkCurrency(currency), value, fraction)
}
@Throws(AmountParserException::class)
@@ -197,4 +201,17 @@ data class Amount(
return "$amountStr $currency"
}
+ override fun compareTo(other: Amount): Int {
+ check(currency == other.currency) { "Can only compare amounts with the
same currency" }
+ when {
+ value == other.value -> {
+ if (fraction < other.fraction) return -1
+ if (fraction > other.fraction) return 1
+ return 0
+ }
+ value < other.value -> return -1
+ else -> return 1
+ }
+ }
+
}
diff --git a/taler-kotlin-common/src/test/java/net/taler/common/AmountTest.kt
b/taler-kotlin-common/src/test/java/net/taler/common/AmountTest.kt
index c09da3c..97d9667 100644
--- a/taler-kotlin-common/src/test/java/net/taler/common/AmountTest.kt
+++ b/taler-kotlin-common/src/test/java/net/taler/common/AmountTest.kt
@@ -275,6 +275,27 @@ class AmountTest {
assertFalse(Amount.fromJSONString("EUR:0001.0").isZero())
}
+ @Test
+ fun `test comparision`() {
+ assertTrue(Amount.fromJSONString("EUR:0") <=
Amount.fromJSONString("EUR:0"))
+ assertTrue(Amount.fromJSONString("EUR:0") <=
Amount.fromJSONString("EUR:0.00000001"))
+ assertTrue(Amount.fromJSONString("EUR:0") <
Amount.fromJSONString("EUR:0.00000001"))
+ assertTrue(Amount.fromJSONString("EUR:0") <
Amount.fromJSONString("EUR:1"))
+ assertTrue(Amount.fromJSONString("EUR:0") ==
Amount.fromJSONString("EUR:0"))
+ assertTrue(Amount.fromJSONString("EUR:42") ==
Amount.fromJSONString("EUR:42"))
+ assertTrue(Amount.fromJSONString("EUR:42.00000001") ==
Amount.fromJSONString("EUR:42.00000001"))
+ assertTrue(Amount.fromJSONString("EUR:42.00000001") >=
Amount.fromJSONString("EUR:42.00000001"))
+ assertTrue(Amount.fromJSONString("EUR:42.00000002") >=
Amount.fromJSONString("EUR:42.00000001"))
+ assertTrue(Amount.fromJSONString("EUR:42.00000002") >
Amount.fromJSONString("EUR:42.00000001"))
+ assertTrue(Amount.fromJSONString("EUR:0.00000002") >
Amount.fromJSONString("EUR:0.00000001"))
+ assertTrue(Amount.fromJSONString("EUR:0.00000001") >
Amount.fromJSONString("EUR:0"))
+ assertTrue(Amount.fromJSONString("EUR:2") >
Amount.fromJSONString("EUR:1"))
+
+ assertThrows<IllegalStateException>("could compare amounts with
different currencies") {
+ Amount.fromJSONString("EUR:0.5") <
Amount.fromJSONString("USD:0.50000001")
+ }
+ }
+
private inline fun <reified T : Throwable> assertThrows(
msg: String? = null,
function: () -> Any
diff --git a/wallet/build.gradle b/wallet/build.gradle
index e3013ce..3e8131a 100644
--- a/wallet/build.gradle
+++ b/wallet/build.gradle
@@ -72,7 +72,7 @@ dependencies {
implementation
"androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// QR codes
- implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
+ implementation 'com.journeyapps:zxing-android-embedded:4.0.2@aar'
// Nicer ProgressBar
implementation 'me.zhanghai.android.materialprogressbar:library:1.6.1'
diff --git a/wallet/src/main/java/net/taler/wallet/BalanceFragment.kt
b/wallet/src/main/java/net/taler/wallet/BalanceFragment.kt
index e4ec681..93ed235 100644
--- a/wallet/src/main/java/net/taler/wallet/BalanceFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/BalanceFragment.kt
@@ -37,7 +37,7 @@ import
androidx.recyclerview.widget.LinearLayoutManager.VERTICAL
import androidx.recyclerview.widget.RecyclerView.Adapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.google.zxing.integration.android.IntentIntegrator
-import com.google.zxing.integration.android.IntentIntegrator.QR_CODE_TYPES
+import com.google.zxing.integration.android.IntentIntegrator.QR_CODE
import kotlinx.android.synthetic.main.fragment_show_balance.*
import net.taler.wallet.BalanceAdapter.BalanceViewHolder
@@ -92,7 +92,7 @@ class BalanceFragment : Fragment() {
setPrompt("")
setBeepEnabled(true)
setOrientationLocked(false)
- }.initiateScan(QR_CODE_TYPES)
+ }.initiateScan(listOf(QR_CODE))
}
}
diff --git
a/wallet/src/main/java/net/taler/wallet/history/WalletHistoryAdapter.kt
b/wallet/src/main/java/net/taler/wallet/history/HistoryAdapter.kt
similarity index 98%
rename from
wallet/src/main/java/net/taler/wallet/history/WalletHistoryAdapter.kt
rename to wallet/src/main/java/net/taler/wallet/history/HistoryAdapter.kt
index 5424b62..b177fb4 100644
--- a/wallet/src/main/java/net/taler/wallet/history/WalletHistoryAdapter.kt
+++ b/wallet/src/main/java/net/taler/wallet/history/HistoryAdapter.kt
@@ -41,12 +41,13 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder
import net.taler.common.Amount
import net.taler.wallet.BuildConfig
import net.taler.wallet.R
+import net.taler.wallet.history.HistoryAdapter.HistoryEventViewHolder
-internal class WalletHistoryAdapter(
+internal class HistoryAdapter(
private val listener: OnEventClickListener,
private var history: History = History()
-) : Adapter<WalletHistoryAdapter.HistoryEventViewHolder>() {
+) : Adapter<HistoryEventViewHolder>() {
init {
setHasStableIds(false)
diff --git
a/wallet/src/main/java/net/taler/wallet/history/WalletHistoryFragment.kt
b/wallet/src/main/java/net/taler/wallet/history/HistoryFragment.kt
similarity index 97%
rename from
wallet/src/main/java/net/taler/wallet/history/WalletHistoryFragment.kt
rename to wallet/src/main/java/net/taler/wallet/history/HistoryFragment.kt
index 45ecf37..2586ef8 100644
--- a/wallet/src/main/java/net/taler/wallet/history/WalletHistoryFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/history/HistoryFragment.kt
@@ -39,13 +39,13 @@ interface OnEventClickListener {
fun onEventClicked(event: HistoryEvent)
}
-class WalletHistoryFragment : Fragment(), OnEventClickListener {
+class HistoryFragment : Fragment(), OnEventClickListener {
private val model: WalletViewModel by activityViewModels()
private val historyManager by lazy { model.historyManager }
private lateinit var showAllItem: MenuItem
private var reloadHistoryItem: MenuItem? = null
- private val historyAdapter = WalletHistoryAdapter(this)
+ private val historyAdapter = HistoryAdapter(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/wallet/src/main/res/layout/nav_header_main.xml
b/wallet/src/main/res/layout/nav_header_main.xml
index 5574c1f..6ae6419 100644
--- a/wallet/src/main/res/layout/nav_header_main.xml
+++ b/wallet/src/main/res/layout/nav_header_main.xml
@@ -15,59 +15,62 @@
-->
<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="wrap_content"
- android:background="@drawable/side_nav_bar"
- android:theme="@style/ThemeOverlay.AppCompat.Dark">
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/side_nav_bar"
+ android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
- android:id="@+id/talerLogoView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="16dp"
- android:contentDescription="@string/nav_header_desc"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:srcCompat="@mipmap/ic_launcher_round" />
+ android:id="@+id/talerLogoView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:contentDescription="@string/nav_header_desc"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:srcCompat="@mipmap/ic_launcher_round" />
<TextView
- android:id="@+id/gnuView"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="8dp"
- android:layout_marginEnd="16dp"
- android:text="@string/nav_header_title"
- android:textAppearance="@style/TextAppearance.AppCompat.Body1"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/talerLogoView" />
+ android:id="@+id/gnuView"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="16dp"
+ android:text="@string/nav_header_title"
+ android:textAppearance="@style/TextAppearance.AppCompat.Body1"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/talerLogoView" />
<TextView
- android:id="@+id/walletView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="4dp"
- android:layout_marginBottom="16dp"
- android:text="@string/nav_header_subtitle"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/gnuView" />
+ android:id="@+id/walletView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="4dp"
+ android:layout_marginBottom="16dp"
+ android:text="@string/nav_header_subtitle"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/gnuView" />
<TextView
- android:id="@+id/versionView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="8dp"
- android:layout_marginEnd="16dp"
- app:layout_constraintBottom_toBottomOf="@+id/walletView"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.0"
- app:layout_constraintStart_toEndOf="@+id/walletView"
- app:layout_constraintTop_toTopOf="@+id/walletView"
- tools:text="0.6.9-pre15" />
+ android:id="@+id/versionView"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dp"
+ android:layout_marginEnd="16dp"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:singleLine="true"
+ app:layout_constraintBottom_toBottomOf="@+id/walletView"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toEndOf="@+id/walletView"
+ app:layout_constraintTop_toTopOf="@+id/walletView"
+ tools:text="0.6.9-pre15 (eae45ae4e3) (1231242342352245345345345345)" />
</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 549ca01..e1367ae 100644
--- a/wallet/src/main/res/navigation/nav_graph.xml
+++ b/wallet/src/main/res/navigation/nav_graph.xml
@@ -59,7 +59,7 @@
tools:layout="@layout/fragment_settings" />
<fragment
android:id="@+id/walletHistory"
- android:name="net.taler.wallet.history.WalletHistoryFragment"
+ android:name="net.taler.wallet.history.HistoryFragment"
android:label="@string/history_title"
tools:layout="@layout/fragment_show_history" />
<fragment
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [taler-taler-android] branch master updated (a690087 -> 1dbc22f),
gnunet <=